Обсуждение статьи "Как установить и использовать в расчетах OpenCL"

 

Опубликована статья Как установить и использовать в расчетах OpenCL:

Прошло уже больше года с того момента, как в MQL5 появилась нативная поддержка OpenCL. Однако еще далеко не все пользователи оценили по достоинству возможность использования параллельных вычислений в своих советниках, индикаторах или скриптах. Эта статья призвана помочь в настройке OpenCL на Вашем персональном компьютере для того чтобы Вы могли сами попробовать данную технологию в торговом терминале MetaTrader 5.

Что такое OpenCL

OpenCL - это открытый стандарт параллельного программирования, разработанный консорциумом Khronos Group в 2008 году. Этот стандарт позволяет создавать приложения, которые могли бы выполняться параллельно на различных по архитектуре графических (GPU) или центральных (CPU) процессорах, расположенных в некоторой гетерогенной системе.

Другими словами OpenCL позволяет задействовать для вычислений одной задачи все ядра центрального процессора или все вычислительные мощности видеокарты, что, в конечном счете, уменьшает время выполнения программы. И поэтому использование OpenCL является очень полезным для задач, связанных с трудоемкими и ресурсозатратными вычислениями.

Например, применительно к MQL5, увеличение быстродействия может быть очень полезно для некоторого скрипта (индикатора или эксперта), который проводит сложный и длительный анализ исторических данных по нескольким символам и таймфреймам (здесь стоит отметить, что MQL5 программа, претендующая на параллельное исполнение, должна быть написана специальным образом при помощи OpenCL API).

Как использовать OpenCL в расчетах на MQL5

Автор: MetaQuotes

 
Для того чтобы продемонстрировать преимущество использования OpenCL в MQL5, был написан скрипт OpenCL_Sample.mq5, который вычисляет значения функции от двух переменных на некотором множестве и отображает результат в окне графика

ТС - это тоже функция, результатом которой является какой-либо кастомный показатель. Т.е. оптимизатор - это вычисление значений функции на некотором множестве, как в приведенной цитате.

Можно ли говорить тогда о целесообразности штатного OpenCL-оптимизатора? Или же есть подводные камни, которые не позволят получить столь существенные (> 2 раза) ускорения?

Больше даже интересует работа оптимизатора в мат. режиме. 

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

А можно пояснить расшифровку в журнале о найденных устройствах с поддержкой OpenCL.

первым идет номер устройства в вашем случае это device#0 далее название устройства nvidia GTX 580, версия OpenCL устройства, а вот то что написано в скобочках не совсем понятно. Разве не должно указываться количество ALU (для nvidia CODA cores) ?? а далее идет совсем непонятная частота, не понятно к чему она относится, обычно частота видео ядра не больше 1000 Мгц.. Расшифруйте пожалуйста.

OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
 

Добрый день всем.

Подскажите по этой очень интересной теме:

1. Существуют ли уже какие-либо советники для торговли, которые используют OpenCL для расчетов?

2. Если в системе установлено несколько видеокарт, будут ли они все использоваться для вычислений или только одна из них ?

 

2. Каждый эксперт может использовать только одну карту.

Несколько экспертов могут использовать несколько OpenCL устройств одновременно.

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

Выше же был уже ответ

Renat:

2. Каждый эксперт может использовать только одну карту.

Можете явно указать какое устройство должно быть использовано конкретной MQL5 программой. Посмотрите функцию CLContextCreate
 
sigma7i:

А можно пояснить расшифровку в журнале о найденных устройствах с поддержкой OpenCL.

первым идет номер устройства в вашем случае это device#0 далее название устройства nvidia GTX 580, версия OpenCL устройства, а вот то что написано в скобочках не совсем понятно. Разве не должно указываться количество ALU (для nvidia CODA cores) ?? а далее идет совсем непонятная частота, не понятно к чему она относится, обычно частота видео ядра не больше 1000 Мгц.. Расшифруйте пожалуйста.

  Некорректно я вопросы задал извиняюсь...

 вопросы по картинке из статьи:

 1. что означает "16 units" ? А почему не указывается количество ядер в видеокарте ?

 2.  что подразумевается под частотой 1630 MHz? полная частота видеокарты или отдельных компонентов?

картинка 

 

Во первых, OpenCL - это собственная спецификация методов параллелизма, независимая от хардверной реализации. Поэтому нельзя искать полного совпадения со спецификациями GPU.

Юниты - это не отдельные ядра, а группы ядер. В разных архитектурах бывают разные методы группировок нескольких ядер в юниты. Например, у NVIDIA в юните может быть 8, 32, 48 ядер (или больше). В CPU режимах юниты считаются как логические ядра CPU.

Частота показывается устройства (видеокарты, например).

 
В использовании OpenCL есть ещё одно преимущество, выполнение кода OpenCL параллельно коду MQL5.

Дело в том, что вызов функции CLExecute - это лишь команда драйверу OpenCL, начать выполнение.
Ожидание завершения задачи OpenCL происходит при обращении к очереди выполнения OpenCL, например при вызове функции CLBufferRead, как это происходит в данном примере.


Между вызовами CLExecute и CLBufferRead можно выполнять любые расчёты на MQL5, которые не обращаются к очереди OpenCL.
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • 2012.05.16
  • Sceptic Philozoff
  • www.mql5.com
В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.