Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL

 

Это демонстрация не только расчетов на GPU в MQL5 коде, но и графических возможностей терминала:

Полный исходный код в виде скрипта приложен. Ошибка на OpenCL 1.2 исправлена.

Файлы:
Seascape.mq5  39 kb
 
Renat Fatkhullin:

Это демонстрация не только расчетов на GPU в MQL5 коде, но и графических возможностей терминала:

Полный исходный код в виде скрипта приложен.

Ааааааааааа ... Остановите я сойду !
 

Мы готовим штатную библиотеку на OpenCL для математики и отрисовки, что займет несколько недель. Будет потрясающе быстро и красиво.

А пока посмотрите на обновленную графическую библиотеку для отрисовки научных графиков.

 

О! Так скоро и до игр дойдёт )))

Только зачем это в торговой платформе? Ну расчёты понятно, а красивости всякие только совращают.

 
Vitalie Postolache:

О! Так скоро и до игр дойдёт )))

Только зачем это в торговой платформе? Ну расчёты понятно, а красивости всякие только совращают.

С помощью OpenCL можно использовать тысячи ядер GPU, чтобы ускорить в сотню (несколько сотен) раз математические расчеты.

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

В MQL4 копают лопаткой, а в MQL5 с OpenCL получается трактор по производительности. Чтобы вывести в массы расчеты на GPU, мы готовим новые математические библиотеки в дополнение к существующим.

 

не смог пройти мимо, прошёл мимо

 
Renat Fatkhullin:

Это демонстрация не только расчетов на GPU в MQL5 коде, но и графических возможностей терминала:

Полный исходный код в виде скрипта приложен.

Cкомпилил, запустил.

Не работает. 

 МТ5 билд 1491

W7 prof SP1 eng 64-bit


 
prostotrader:

Cкомпилил, запустил.

Посмотрите логи терминала и окна экспертов.

Скрипт сложный, только что написанный и пока не отлаженный. Без GPU не везде запускается.

 
Renat Fatkhullin:

Посмотрите логи терминала и окна экспертов.

Скрипт сложный, только что написанный и пока не отлаженный. Без GPU не везде запускается.

2016.12.10 03:57:08.180 Seascape (GOLD-12.16,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:188:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint b=(uint)(res[2]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:189:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint g=(uint)(res[1]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        <kernel>:190:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)           uint r=(uint)(res[0]*255);
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:08.197 Seascape (GOLD-12.16,H1)        
2016.12.10 03:57:08.218 Seascape (GOLD-12.16,H1)        OpenCL program create failed
2016.12.10 03:57:36.695 Seascape (GOLD-12.16,H1)        OpenCL: GPU device 'GeForce GTX 970' selected
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:188:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint b=(uint)(res[2]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:189:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint g=(uint)(res[1]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        <kernel>:190:18: error: subscripted access is not allowed for OpenCL vectors
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)           uint r=(uint)(res[0]*255);
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)                         ^   ~
2016.12.10 03:57:36.711 Seascape (GOLD-12.16,H1)        
2016.12.10 03:57:36.730 Seascape (GOLD-12.16,H1)        OpenCL program create failed

2016.12.10 03:57:06.729 OpenCL  Device #0: GPU NVIDIA Corporation GeForce GTX 970 with OpenCL 1.2 (13 units, 1367 MHz, 4096 Mb, version 372.90)
 

Ок, разберемся. Код был как проба пера.

У каждого GPU устройства есть свой компилятор и он сам решает, что пропустить. OpenCL компиляторы Intel, AMD и Nvidia отличаются друг от друга.

Мы у себя тестируемся под OpenCL 2.0, у которого гораздо больше функционал. На OpenCL 1.2 этот тест проверим и поправим.

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