OpenCl и инструменты для него. Отзывы и впечатления.

 
Принимая во внимание то, что компания Metaquotes поменяла своё мнение насчёт применимости GPU в анализе и трейдинге (точнее будет сказать: софт для GPU наконец-то достиг нужной кондиции для применения в коммерческих программах), то сегодня, полагаю, можно приступать к опробованию OpenCL в реальном программировании.
Если Вы пропустили эту новость, флудя на форуме вместо трейдинга, моделирования и программирования, то вот например Метаквоты говорят:

.............................................................................................................................................................................

Опыт использования GPU для финансового моделирования

http://habrahabr.ru/blogs/hi/131983/

MetaQuotes 7 ноября 2011, 19:27 #

Скоро в MQL5 будет включена поддержка OpenCL — это позволит еще в разы/порядки поднять производительность вычислений в распределенной сети.

.............................................................................................................................................................................

Итак, OpenCL что это такое?

Это - программный подход, программа-интерпретатор для параллельного выполнения Вашей программы на видео-карте, то есть на GPU.

Что это даёт?

Во-первых, это даёт scalability, то есть простое и дешёвое масштабирование доступной вычислительной мощности. Одно дело купить, установить и обслуживать десяток серверов, и совсем другое дело - купить и втыкнуть в компьютер 3-4 дополнительные видео-карты. Результат по скорости будет одинаковым, а по затратам денег и времени - в десятки раз.

Во-вторых, это позволяет использовать такие сложные математические методы, которые раньше были недоступны из-за слабости компьютеров.

В-третьих, если компания metaquotes сможет прикрутить OpenCL не только для пользователей, но и для своего встроенного тестера, то тогда возникают две как это ни странно совершенно противоположные перспективы:

(а) в половине случаев CloudNetwork будет совсем не нужен для индивидуальной оптимизации простых советников-экспертов.

(б) использование CloudNetwork откроет такие широкие перспективы для оптимизации экспертов, моделирования и аналитики, применения таких сложных математических методов, какие раньше просто не мыслились.

С чего начинать?

Вот тут программный комплекс SDK (с драйвером для CPU) для разработчика от AMD (заявлено, что для Vista-Win7, но работают и на WinXP. Без видео-карты-ускорителя успешно работают на центральном процессоре, и причём на любом SSE процессоре от Intel, а не только от AMD):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/Pages/default.aspx

Старые версии AMD-ATI SDK (работают на WinXP):

http://developer.amd.com/sdks/AMDAPPSDK/downloads/pages/AMDAPPSDKDownloadArchive.aspx

Версия программы-интерпретатора от Nvidia поставляется с каждым современным драйвером, а среда разработки включена в поставку CUDA Tools-SDK:

http://developer.nvidia.com/opencl

Версия SDK от Intel (работает только на Vista-Win7):

http://software.intel.com/en-us/articles/download-intel-opencl-sdk/

Примечание: для нормальной работы с MetaTrader 4 или 5 нам нужен OpenCL обязательно версии 1.1 или выше, но не 1.0, поскольку только с версии 1.1 включена поддержка safe threading. Потоки в MetaTrader 4-5 создаются и уничтожаются динамически и отдельно под каждый эксперт-советник. Поэтому для использования GPU из советников, висящих на разных валютных парах, нужен именно safe threading.

На практике это означает использование драйверов ATI Catalyst только версии 10.10 и выше, или от Nvidia только версии выше 280.00. Драйвера от AMD-ATI с каждой версией всё лучше и быстрее, а дайвера от nVidia всё хуже и медленнее. OpenCL от Nvidia версии 1.1 на 30-40% медленне её же версии 1.0, то есть реально в 2 раза и ничем не быстрее OpenCL 1.1 от AMD.

Чем проверять наличие OpenCL?

AIDA от FinalWire показывает в разделе "Отображение" параметры GPU и версию OpenCL.

Чем тестировать скорость OpenCL?

Программа LuxMark:

http://www.luxrender.net/wiki/LuxMark

Примерные стравнительные результаты разных CPU и GPU:

http://www.luxrender.net/wiki/LuxMark_Results

Для раздельного от CPU-Native теста CPU-OpenCL надо иногда править ручками файл render.cfg.

Скорость для CPU топового типа Phenom II X6 = около 2300, ТА ЖЕ ПРОГРАММА, но только в монстре из 8шт Nvidia GTX580 даёт 70000, то есть в 30 раз больше. При этом даже такой чудищно-монстровый комплект из 8 шт GTX580 обойдётся по первичным затратам в 30, а по потреблению электричества примерно в 40 раз меньше комплекта из 30 серверов, эквивалентных по скорости double float point. Причём для синхронизации экземпляров программ на 30-ти серверах нужны большие усилия, а на OpenCL всё это крутится на одном компьютере в тем же одним экземпляром программы.

Ещё результаты LuxMark:

http://www.xtremesystems.org/forums/showthread.php?267385-LuxMark-The-OpenCL-CPU-amp-GPU-benchmark

Ещё программа для тестирования OpenCL:

gpcbenchmarkocl

На сайте китайских авторов она изъята (наверное стратегический продукт), но в Сети её можно найти. (В ней некоторые тесты раздела Image Processing работают только с DirectX версии 10 и выше, то есть часть тестов под WinXP не идёт.)

Есть ещё одна особенность OpenCL: программирование на нём вынуждает отходить от привычных математических абстракций, принятых в приличном программировании, и заниматься оптимизацией программы под железо, что не есть правильно.

Статья об OpenCL про примерные трудности с его внедрением:

http://habrahabr.ru/blogs/hi/125398/

Вводный видео-курс по OpenCL от AMD:

http://developer.amd.com/documentation/videos/OpenCLTechnicalOverviewVideoSeries/Pages/default.aspx

В общем для разработки и отладки программ OpenCL подойдёт ЛЮБОЙ компьютер с SSE - если использовать комплект программ от AMD. Далее можно рекомендовать любую GTS450....GTX580 систему от Nvidia, поскольку в ней есть ещё и CUDA, но для реальной быстрой работы всё-таки больше подходят карты и программы от AMD-ATI, они лучше масштабируются и более стабильны в Multi-GPU конфигурациях.

Железо для Multi-GPU OpenCL - тема отдельной ветки.

 
AlexEro:

Железо для Multi-GPU OpenCL - тема отдельной ветки.

Кстати вопрос довольно плотно изучен и есть сравнительные характеристики карт. Изучен майнерами небезызвестной криптовалюты bitcoin (изначально) и других криптовалют (потом).

Сравнение конечно на специфических задачах, но примерно сориентироваться по конфигурации и бюджету можно легко.

И да, не берите сейчас мощных б\у видеокарт :)

 
TheXpert:

Кстати вопрос довольно плотно изучен и есть сравнительные характеристики карт. Изучен майнерами небезызвестной криптовалюты bitcoin (изначально) и других криптовалют (потом).

Сравнение конечно на специфических задачах, но примерно сориентироваться по конфигурации и бюджету можно легко.

И да, не берите сейчас мощных б\у видеокарт :)

Да просто не хотел сразу пугать читателя этими чудищами и отвлекать от более важного - от программирования. Хотя согласен, конечный результат, то есть на какую реальную скорость масштабирования можно рассчитывать, и как это выглядит, надо бы показать. Диапазон широкий - от ящика для пива до стеллажей :


 

OpenCL - это прям будущее сегодня.

Вопрос: когда примерно будет реализована поддержка в MT5?

Уверен на более чем 100%, что OpenCL станет стандартом для программирования параллельных нагрузок.

 
Microsoft представила C++ AMP
Опубликовано shapovalovts в Чт, 06/16/2011 - 10:07
На конференции AMD Fusion 11 Developer Summit Герб Саттер (Herb Sutter) анонсировал новую технологию для разработки гетерогенных приложений на языке С++, получившую название C++ Accelerated Massive Parallelism (AMP). Данная технлогия, по заявлению разработчиков Microsoft, позволит использовать возможности параллельного выполнения кода на CPU, так и выполнения кода на GPU.

Основными конкурентами C++ AMP будут такие технологии, как OpenCL и CUDA. Также Саттер в своем выступлении подчеркнул перспективность использования C++ AMP в облачных вычислениях.

https://www.mql5.com/ru/forum/132431

 
Ну будет значит опять младшим опенсорсным братом проприетарному AMP)
 
Судя по всему AMP придется очень непросто. OpenCL уже пользуется вовсю.
 
Отсутствие идей трудно заменить вычислительной мощностью, которая позволит быстро перебирать или сортировать пузырьком очередную чушь, полученную из "интеллектуальных извращений" над котировками )))
 
artikul:
Отсутствие идей трудно заменить вычислительной мощностью, которая позволит быстро перебирать или сортировать пузырьком очередную чушь, полученную из "интеллектуальных извращений" над котировками )))

Наверное, если загрузить такие мощности стоящими идеями, то можно заставить нашу планету вращаться вокруг Солнца в противоположную сторону. ))
 

articul, не нужно быть настолько категоричным. Мир не стоит на месте. Современные монстрообразные видеокарты, исходя из твоей логики, тоже следует признать следствием отсутствия идей в обработке изображений?

Я и сам иногда рад ускориться - просто чтобы не ждать при отладке кода окончания тяжелых расчетов, которые у меня все зашиты в init() (примерно 10 секунд). А все остальные расчеты, которые происходят "на лету", действительно выполняются очень быстро, так что тут многопоточность и не нужна.

 
artikul:
Отсутствие идей трудно заменить вычислительной мощностью, которая позволит быстро перебирать или сортировать пузырьком очередную чушь, полученную из "интеллектуальных извращений" над котировками )))

Очень верно замечено.А то тут товарищи активно разминаются в предвкушении заняться 6-м пунктом в особо извращенной форме. =)

Причина обращения: