Показать сообщение отдельно
  #7  
Старый 10.02.2016, 20:14
Prok186 Prok186 вне форума
Прохожий
 
Регистрация: 19.06.2011
Сообщения: 22
Репутация: 10
По умолчанию

А пока тут вяло шло тестирование видеокарт... уже переписал часть "трудоёмкого" кода в своей основной (не тестовой уже) программе на OpenCL, 3 кернела. Сравнительно быстро всё отладил. Предварительный итог: время счёта на задачах (сутками считаются - гидродинамика) уже сократилось почти в 4 раза.
Поменял у себя на работе видео-карту на GeForce GTX-980ti - зверь!
Кстати, фирме Khronos стало видимо стыдно, и она 05 февраля 2016г (!!!) выложила файлы поддержки OpenCL и CUDA (заодно, чтобы не мелочиться) для Delphi. Тут можно скачать: http://sourceforge.net/p/glscene/cod.../ParallelAPIs/ , для OpenCL хватит CL.pas, CL_Platform.pas, CL.inc. Но мне проще использовать для OpenCL.dll свой заголовочник, кот. уже выкладывал в посте 1.
Итак. Чтобы не быть голословным, выкладываю во вложенной папке (см. ссылку для скачивания в 1-м посте), или прямо ссылку на вложенную папку - http://gofile.me/2Zesj/TOT6JHm0
Там, во-первых, новый работающий пример: выкинул всё написанное чехами, всё переписал заново, более осмысленно. Две программы-Kernel (так для пробы, используется в тесте первая), контроль погрешности - сравнение расчётов CPU vs GPU, использование в Kernel функции-atomic. Но Header-файл пока оставил свой, а не брал заголовочник, выложенный Khronos. Ещё там же в отдельной под-папке - 2 картинки-скана TIF с моими вопросами по работе новой видяхи GTX-980ti. Гляньте, плиз: почему такую частоту памяти видяхи показывает Caps-Viewer?
И наконец, в папке OpenCL_Demo2016 есть под-папка с моими 3-мя Kernel для не тествых, а рельных расчётов- последний длинный вчера дописал и опробовал - можете полюбопытствовать! Вряд ли они кому-то понадобятся в таком виде, но вот как примеры для OpenCL (для любого языка программы на хосте - хоть Delphi, хоть JAVA)...могут быть полезны участникам форума.
====
ПыСы. Посоветуйте, коллеги, на каком форуме активно обсуждается написание самих Kernel для OpenCL (программки на языке, похожем на C99, которые компилирует сам драйвер видео-карты). Или здесь подскажите, как разбивать для Kernel'a большую программу на модули (хотя это в принципе есть в моём новом примере - уже вроде осилил), и главное - как обмениваться между этими модулями (процедурами) данными: только через их списки параметров? Через всю цепочку процедур этот список тащить до той, где они действительно нужны??? Писать весь расчётный модуль одним "монолитом" без разбивки на модули - не кашерно, сами понимаете. А мне сейчас надо запихнуть на GPU код в несколько тысяч строк...
Ответить с цитированием