Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
MetaQuotes Software Corp.
Модератор
188186
MetaQuotes Software Corp.  

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

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

Что такое OpenCL

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

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

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

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

Автор: MetaQuotes

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

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

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

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

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

А можно пояснить расшифровку в журнале о найденных устройствах с поддержкой 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 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
vittt
18
vittt  

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

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

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

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

MetaQuotes
Админ
25399
Renat Fatkhullin  

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

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

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

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

Renat:

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

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

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

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

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

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

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

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

картинка 

MetaQuotes
Админ
25399
Renat Fatkhullin  

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

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

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

Ilyas
1212
Ilyas  
В использовании 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 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий