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

 

Может ли кто-нибудь получить обновление, включающее RX 580 / 570?

У меня есть обе карты, но нет поваренной книги с подробной инструкцией по использованию этих карт.

Буду очень признателен.

 
Сейчас я пытаюсь запустить OpenCL на GTX1070, но Metatrader не упоминает это оборудование, и я не могу его активировать. Как это должно выглядеть в текущем MT5?
 
hao xue:

Может ли кто-нибудь получить обновление, включающее RX 580 / 570?

У меня есть обе карты, но нет поваренной книги с подробной инструкцией по использованию этих карт.

Буду очень признателен.

Я не знаю, почему терминал не распознает rx580, но opencl работает. Вы можете попробовать этот код:

void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- инициализация контекста OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Отображение общей информации об устройстве OpenCL 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

Привет всем


Я попробовал код на lensflare на компьютере с AMD 530 и на другом с NVIDEA gtx 1060, но безуспешно. Мой советник сообщает, что поддерживается 0 устройств. У кого-то была такая же проблема? Спасибо!


void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- инициализация контекста OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Отображение общей информации об устройстве OpenCL 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

Как выбрать, какой процессор openCL использовать?
Кажется, что у меня есть CPU + Nvidia +Intel, и согласно главной странице, что Intel GPU быстрее.

Кроме того, потому что моя Nvidia работает немного, а затем разбивается, когда я пытаюсь выйти из советника.

 

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

Пример интересный но потрясающе бесполезный.....

Может ли хоть кто нибудь сделать пример оптимизации стандартного советника на OpenCL .... 

а вообще я считаю что статья ни о чом, весь мир движется в сторону фреймворков (типа CNTK), разработчик под MQL5 должен писать код на MQL5,  а не под OpenCL/CUDA, а ядра (CU) всех видеокарт должны быть видны просто как обычные ядра в списке доступных ядер для оптимизации и все

я так  думаю ... 

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
  • www.mql5.com
//| Создает объект "Графическая метка"                               |               chart_ID=0,                               sub_window=0,                             x=0,                                      y=0,                                      width=0,                                  height=0,                 ...
 
Boris Egorov:

разработчик под MQL5 должен писать код на MQL5,  а не под OpenCL/CUDA, а ядра (CU) всех видеокарт должны быть видны просто как обычные ядра в списке доступных ядер для оптимизации и все

я так  думаю ... 

как бы дали возможность писать код на MQL5 и рассчитывать задачи на GPU, чего шумите?

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

вот хорошая статья, сам читал в начале года https://habr.com/ru/company/combox/blog/425731/

если сумеете задачу оптимизации распараллелить, тогда используйте GPU

 
Igor Makanu:

как бы дали возможность писать код на MQL5 и рассчитывать задачи на GPU


так же как это делается в питоне/с#

там и близко нет OpenCL, есть подключение фреймворка, ему просто указываешь на чём считать, вот лично мне проще ферму из GPU собрать, чем на CPU 

 
Boris Egorov:

так же как это делается в питоне/с#

там и близко нет OpenCL, есть подключение фреймворка

все правильно и фреймворк сразу заточен под задачи на GPU , я тензорфлоу так тестил


тогда вопрос не к MQL5, а к создателям фреймворков для MQL5 - увы, а их (фрейворков) нет, сам страдаю от этого,

вернее есть лишь немного - алглиб в СБ и много статей по интеграции со сторонними языками 

т.е. как пишут разработчики - пишите сами, готовых решений нет

 
Igor Makanu:

все правильно и фреймворк сразу заточен под задачи на GPU , я тензорфлоу так тестил


тогда вопрос не к MQL5, а к создателям фреймворков для MQL5 - увы, а их (фрейворков) нет, сам страдаю от этого,

вернее есть лишь немного - алглиб в СБ и много статей по интеграции со сторонними языками 

т.е. как пишут разработчики - пишите сами, готовых решений нет

не совсем так

вот разработчики молодцы и сделали реально много, они внедрили Fuzzy, Alglib, python только вот вопрос - зачем? Зачем они тратили столь ценное время крутых разработчиков на внедрение всего этого, ведь по факту толку от них просто ноль.

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

Не радует и python ... ну посудите как перенести логику советника в совершенно другой язык .... а потом еще и назад .... правильно никак ... да и зачем этот геморой

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