OpenCL: внутренние тесты реализации в MQL5 - страница 3

 
Renat:
Есть уточнения:
...
2) мы поддерживаем OpenCL 1.1 и выше из-за наличия в нем поддержки типов double. Версия OpenCL 1.0 может оперировать только float, чья точность никак не подходит для финансовых расчетов

Попробуйте поставить новые драйвера, хотя множество карт предыдущих поколений не поддерживают операций с double.
Надеюсь 1.1 float тоже продолжает поддерживать?  В общем случае float недостаточно, однако во многих частных случаях - даже очень. А лишняя память она часто дорогого стоит, особенно при параллельных вычислениях.
 
Graff:
Летом, в ходе тестирования скриптов от JavaDev мы наткнулись на проблему, что моя видуха не поддерживала  double, однако с  float работала. Драйверами это не исправить, нужно менять карту :(
Будут использоваться все процессорные ядра, если видяха не поддерживается.
 

Поставил каталист центр 12, ранее стоял 11. Уже есть результат (выделено красным):

 

Просто "поиграл" с раскрывающимся списком "0" - "1" и появился значок ATI. При этом запуске программы больше не исчезал. Небольшой глюк проги походу.... 

 
WChas:
Супер! Есть R6970 MSI - 1536 потоков (агентов) и HD5870 Gigabyte (1600 процессоров). В BOINC менеджере их можно использовать без объеденения в кроссфайр (достаточно сделать на один выход второй карты заглушку или подключить один из выходов второго монитора. Вопрос: можно ли будет их обе использовать без crossfire???

Пока не уверен. Это больше зависит от самой программы, которая выбирает устройства, что влечет использование каждой карты в коде явно.

Посмотрим позже, как выпустим первую бету.

 
MetaDriver:
Надеюсь 1.1 float тоже продолжает поддерживать?  В общем случае float недостаточно, однако во многих частных случаях - даже очень. А лишняя память она часто дорогого стоит, особенно при параллельных вычислениях.
В OpenCL 1.1 float конечно же поддерживается.
 
WChas:
Если правильно понял, то 1 GPU - это один очень мощный агент? Можно в таком случае процессорные агенты отключить (из-за их малой скорости по отношению к видео)?

Процессорное ядро никак не отключить - оно используется по любому как хостовая платформа среды MQL5.

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

Если разработчик эксперта сможет распараллелить задачу на сотни и тысячи независимых потоков, то GPU даст 10-100 кратное ускорение. Но в большинстве одиночных задач (для примера - трейдинг и индикаторы) вычисления идут последовательно, что не дает шанса эффективно параллелить процессы. Кроме того, использование вещественной математики с двойной точностью (double) на обычных GPU дают скорость в два раза ниже от топовых значений, достигаемых на float. Вот интерсная ссылка с обсуждениями падения скорости на double: http://www.gpgpu.ru/node/901

Мы сами закупим карты разных классов, чтобы опубликовать небольшое исследование для расчетов некоторых задач на double и float. Самим интересно что можно получить.

Вот небольшое исследование скоростей расчетов с float и double на разных устройствах (полный отчет: http://agora.guru.ru/hpc-h/files/017_Krivov_NvidiaGpuComparision.pdf). Видно, что на Tesla скорость double расчетов в 2 раза ниже пиковой от float, а на обычных картах типа GeForce 480 GTX чуть ли не в 10 раз. Фактически это означает, что на обычном 4-8 ядерном CPU с активным применением SSE2-4 и AVX в double математике можно получить результат даже лучше:


Мы смогли получить стократные (в пределе 100-1000 и более) ускорения на последовательных переборах в оптимизаторе торговых стратегий и десятикратные (в пределе 10-20-50-100-200 кратные) в генетике за счет родной идеи параллельных прогонов тестов и MQL5 Cloud Network. Но если речь идет о параллельности внутри одной задачи, то все усилия ложатся на плечи GPU-программера, который сможет разумно раскидать задачу на сотни и тысячи независимых простых ядер.


Есть еще один нюанс - скорее всего при использовании нескольких агентов на компьютере только одному агенту будем выделять право пользоваться GPU. Или, при наличии нескольких реальных физических GPU устройств они будут распределяться между агентами в момент старта агентов.

Дело в том, что неразумно делить одно физическое устройство на несколько агентов, так как в результате совместного использования итоговая производительность падает нелинейно. То есть, 4 агента на одном GPU покажут результат кратно хуже, чем 1 агент на одном GPU. Это показали наши внутренние тесты.

Мы проведем более детальные тесты и примем решение, которое максимизирует результат.

Кофигурацыя системы на базе Tesla C2050/C2070 (C2075) | GPGPU.ru
  • www.gpgpu.ru
Здравствуйте! Возникла задача внедрения GPU-Computing для решения задач численного моделирования (симуляция и оптимизация фабрик полупроводников с помощью эвристик, докторская работа). Считать действительно много, и есть довольно хороший потенциал для распараллеливания расчетов, никакой роботы с видео, рендерингом и прочим. Помогите, пожалуйста...
 
 
 
Спасибо за пояснения.
Renat:

........

Мы смогли получить стократные (в пределе 100-1000 и более) ускорения на последовательных переборах в оптимизаторе торговых стратегий и десятикратные (в пределе 10-20-50-100-200 кратные) в генетике за счет родной идеи параллельных прогонов тестов и MQL5 Cloud Network. Но если речь идет о параллельности внутри одной задачи, то все усилия ложатся на плечи GPU-программера, который сможет разумно раскидать задачу на сотни и тысячи независимых простых ядер.

........ 

Лично для меня как раз и важны ускорения в оптимизаторе. Так что жду с нетерпением нужного обновления + таблицу производительности различных видеокарт.
 

Ре-пост из ветки про OpenCL на MQL4.com:

https://www.mql5.com/ru/forum/137422/page6

Не всё так просто.

К тому же Ринат путает народ: OpenCL 1.0 может прекрасно работать с double float, там это предусмотрено "как общедоступная опция", которую поддержали все производители - НО ПРОСТО НЕ ДЛЯ ВСЕХ СВОИХ СТАРЫХ КАРТ.

http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/

"Optional Double Precision and Half Floating Point

OpenCL 1.0 adds support for double precision and half floating-point as optional extensions. The double data type must confirm to the IEEE-754 double precision storage format.

An application that wants to use double will need to include the #pragma OPENCL EXTENSION cl_khr_fp64 : enable directive before any double precision data type is declared in the kernel code. This will extended the list of built-in vector and scalar data types to include the following:....."

Он может работать и в тестере, но в эксперте OpenCL 1.0 работать не будет, и не потому что как говорит Ринат "там нет double float", а именно потому - как я выше сказал - из-за отсутствия safe threading в OpenCL 1.0 и из-за чехарды с потоками в МТ4-5.

В OpenCL (и в CUDA) вообще много путанного. Что Вы хотите? Ведь железячники-радиотехники взялись менять концепцию программирования. У них же железячный склад ума.

Проблемка будет ещё и с так называемом "выбором ПЛАТФОРМЫ": прога, то есть МТ, или DLL эксперта, или эксперт - ДОЛЖНЫ, просто обязаны ВРУЧНУЮ выбрать платформу (AMD, Nvidia, Intel), которых на компе может быть несколько и разных, на которой и будет запущен кернел OpenCL, а потом ещё вручную выбрать DEVICE, если на компе стоит Multi-GPU. Авто-выбора платформы в OpenCL пока нет. Ринат говорит о "авто-выборе мощнейшей", но я не знаю, как это. В показанном там примере выбора платформы и выбора device (GPU, CPU) нет.

К тому же автоматического распараллеливания OpenCL заданий на несколько GPU или на GPU+CPU в стандарте пока ещё нет. Скажем так : AMD в некоторых версиях своих драйверов/SDK делала такую вот авто-диспетчеризацию, но там были проблемы, и AMD эту штуку пока выключила.

Итого: для разработки и включения OpenCL программ к/в МТ4-5 нужны некоторые ручные усилия, и поэтому автоматом, или "перекомпиляцией с опцией" это не получится. Что в свою очередь чревато множеством затыков при реальной работе. Это будет тонкая работа и, что важно, я позволю себе повториться, к сожалению это ЖЕЛЕЗО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ, что неправильно. Отладка параллельных программ для CUDA или OpenCL оказались намного более сложным делом, чем предполагали железячники-революционеры. Nvidia даже отменила свою осеннюю-2011 конференцию по CUDA - из-за проблем с драйверами и множеством жалоб на затыки в отладке. Ну вот добавили они в последний Toolkit ещё 1000 новых функций - и что теперь с этим делать, если у простого народа даже простейшая программа не идёт или идёт с затыками? Ведь они даже половину работы внутреннего механизма OpenCL или CUDA в описательных инструментах не указали.

Скорость GPU (в Гигафлопсах) подвисшей из-за драйвера или совместимости программ видео-карты равна нулю.

OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум
  • www.mql5.com
OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум
Причина обращения: