Перевод функции на OpenCL

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Boris Egorov
466
Boris Egorov  

Коллеги! Я пока новичок в OpenCL, много еще не понимаю. Мне надо перевести простенькую функцию на OpenCL, но увы я не понимаю как передать в кернел массивы.

Сама функция на mql5

double Calc(double &x[],double &y[])
  {
   double NET=0.0;
   for(int n=0;n<ArraySize(x);n++)
     {
      NET+=x[n]*y[n];
     }
   NET*=0.1;
   return(MathTanh(NET));
  }
Подскажите пож-та, как ее переделать ...


Ilyas
1443
Ilyas  

Такие функции лучше решать на MQL - быстрее будет

"Мощность" задачи маленькая, больше времени потеряете на её обслуживание.

Roffild
1319
Roffild  
В MQL5 нельзя передавать динамические тензоры в функцию, поэтому в AlgLib для MQL5 это реализовано через костыльный класс для матрицы.
Boris Egorov
466
Boris Egorov  
ну почему маленькая, мы заранее не знаем длину массивов
Aliaksandr Hryshyn
2750
Aliaksandr Hryshyn  
Boris Egorov:
ну почему маленькая, мы заранее не знаем длину массивов
Очень низкая скорость копирования данных на ГПУ, для PCI-e x16 v2 до 8Гб/с, v3 — до 15.8Гб/с, v4—до 31.5. И это теоретически, в реале 20-40% можно отнимать(резерв, использование другими приложениями,Windows...)
Boris Egorov
466
Boris Egorov  
Aliaksandr Hryshyn:
Очень низкая скорость копирования данных на ГПУ, для PCI-e x16 v2 до 8Гб/с, v3 — до 15.8Гб/с, v4—до 31.5. И это теоретически, в реале 20-40% можно отнимать(резерв, использование другими приложениями,Windows...)

Пропускная способность PCI Express 3.0 - 15.8 Гбайт/с взято отсюда https://ru.wikipedia.org/wiki/PCI_Express

Пиковая скорость передачи DDR3 данных при 64-битной шине данных в одноканальном режиме - 17066 МБайт/с ~ 16 Гбайт/с взято отсюда https://ru.wikipedia.org/wiki/DDR3_SDRAM

Показатели сравнимы ... а вот скорость вычислений на GPU в десятки раз превосходит процессор и тем более на MQL 

но мы отвлекаемся ....

я прошу помощи в переписывании функции на OpenCL ... скорость я сравню сам экспериментально


PCI Express — Википедия
PCI Express — Википедия
  • ru.wikipedia.org
На фотографии слоты материнской платы DFI LanParty nForce4 SLI-DR (сверху вниз): x4 PCI Express, x16 PCI Express, x1 PCI Express, x16 PCI Express, стандартный 32‑разрядный слот PCI В отличие от стандарта PCI, использовавшего для передачи данных общую шину с подключением параллельно нескольких устройств, PCI Express, в общем случае, является...
MetaQuotes
Модератор
216501
MetaQuotes  
OpenCL: Мост в параллельные миры
OpenCL: Мост в параллельные миры
  • www.mql5.com
Настоящая статья открывает небольшой цикл публикаций, посвященных программированию на OpenCL, или Open Computing Language. Платформа MetaTrader 5 в ее текущем воплощении до подключения OpenCL не позволяла напрямую, т.е. нативно, использовать преимущества многоядерных процессоров для ускорения вычислений. В разделе "Статьи", правда, еще полтора...
Boris Egorov
466
Boris Egorov  

если бы хоть в одной из этих статей передавались массивы в кернел ...

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

вроде MatrixMult.mq5 самое то ... разбираюсь 

OpenCL: от наивного кодирования - к более осмысленному
OpenCL: от наивного кодирования - к более осмысленному
  • www.mql5.com
Первая статья "OpenCL: Мост в параллельные миры" была вводной в тему OpenCL. Рассматривались базовые вопросы взаимодействия программы, написанной на OpenCL (ее еще называют кернелом, хотя это не совсем точно), и внешней (хостовой) программой на языке MQL5. Также на примере вычисления числа pi = 3.14159265... мы показали некоторые возможности...
Roffild
1319
Roffild  
Boris Egorov:

если бы хоть в одной из этих статей передавались массивы в кернел ...

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

вроде MatrixMult.mq5 самое то ... разбираюсь 

В основном только массивы и передаются во всех примерах. Смысла передавать простые значения в кернел мало.

Проще работать через Python с Pytorch или TensorFlow.

MetaTrader 5 (MQL5) + Python 3 DLL для Forex, CFD и Futures
  • roffild.com
Использование MetaTrader с Python 3 на финансовых фондовых биржах, Forex, CFD и Futures. Из MetaTrader можно получать котировки в Python, но нет полноценной связи между ними. Пост одного из разработчиков. Главная идея и отличие этой обертки от остальных: обмен данными между MQL и Python через заранее созданные функции. Это самый быстрый и...
Boris Egorov
466
Boris Egorov  

>Проще работать через Python с Pytorch или TensorFlow.

Спасибо, это интересно, буду почитать ...Я кстати даже пробовал питон, его же внедрили нормально, то есть теперь можно обменивать инфой между программой на питоне и mql,

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

по сути мне нужно лишь просчитать множество данных (и все функции типа представленной, то есть не бог весть что сложное), но этих просчетов реально много,

потому хочу этот ряд вычислений произвести на видеокарте, тем более имеется доступ к машинке сразу с двумя видяхами с Radeon RX 580 и Radeon Vega 56

MetaTrader 5 (MQL5) + Python 3 DLL для Forex, CFD и Futures
  • roffild.com
Использование MetaTrader с Python 3 на финансовых фондовых биржах, Forex, CFD и Futures. Из MetaTrader можно получать котировки в Python, но нет полноценной связи между ними. Пост одного из разработчиков. Главная идея и отличие этой обертки от остальных: обмен данными между MQL и Python через заранее созданные функции. Это самый быстрый и...
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий