У кого есть опыт работы с Open CL?

 
Столкнулся с тем, что бот ну ооочень медленно тестируется на одном ядре, мультивалютная стратегия. Хотелось бы ускорить этот процесс. Я так понимаю, что в mt5 нет нативной поддержки разделения на потоки при тестировании, нужно это все прописывать в коде. Допустим, у меня несколько одинаковых функций для разных групп валютных пар, имеет ли смысл попытаться разделить на потоки? Мб есть ссылки как это сделать, не слишком углубляясь в матчасть? задача усложняется тем, что групп валютных пар может быть больше чем ядер (у меня их 6), поэтому придется ставить в очередь или вешать несколько задач на одно ядро.
 
При оптимизации в МТ5 используются агенты в количестве равном числу ядер процессора. Это реальные параллелльные вычисленя, где на один поток - один советник целиком. А на сколько я знаю, OCL не поддерживается при оптимизации. 
 
Облако спасет Гиганта Мысли и Отца Русской Демократии.
 

Оптимизируйте код и расчёты: 90% тормозов там.

 
Andrey Dik:
При оптимизации в МТ5 используются агенты в количестве равном числу ядер процессора.... 
Насколько я заметил, топикстартер речь ведёт о возможности ускорить тестирование...
 
Vladimir Suschenko:
Насколько я заметил, топикстартер речь ведёт о возможности ускорить тестирование...

Да. я тоже заметил.

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

 
Andrey Dik:

Да. я тоже заметил.

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

Количество локальных агентов по числу ядер процессора, но при тестировании задействуется только один локальный агент (в отличие от оптимизации) - если я не прав, и есть возможность задействовать при тестировании все локальные агенты, подскажите как?
 
Vladimir Suschenko:
Количество локальных агентов по числу ядер процессора, но при тестировании задействуется только один локальный агент (в отличие от оптимизации) - если я не прав, и есть возможность задействовать при тестировании все локальные агенты, подскажите как?

Если нужен единичный проход - то да, агенты (и облако как писали) не помогут в ускорении.

Тогда решение только одно - писать свой тестер/оптимизатор, поскольку нет поддержки OCL в штатном тестере (так было раньше, а сейчас я не нашел указание о наличии поддержки в справке). 

Ну и конечно - оптимизировать код советника и, возможно, индикаторов. 

 
George Merts:
Облако спасет Гиганта Мысли и Отца Русской Демократии.

Слишком дорогое удовольствие, при многократных прогонах в тестере набегает кругленькая сумма, насколько помню :) Когда нейросетями баловался

Но, кстати, нужно попробовать.. я что-то и забыл про такую возможность :) 

 
Andrey Dik:

Если нужен единичный проход - то да, агенты (и облако как писали) не помогут в ускорении.

Тогда решение только одно - писать свой тестер/оптимизатор, поскольку нет поддержки OCL в штатном тестере (так было раньше, а сейчас я не нашел указание о наличии поддержки в справке). 

Ну и конечно - оптимизировать код советника и, возможно, индикаторов. 

Единичный, да, оптимизировать там особо нечего, т.к. сама стратегия самооптимизирующаяся. Там считается корреляция за период, что само по себе не очень быстро, и по большому кол-ву символов... Оптимизирую по возможности код, но боюсь это не спасет... Сегодня по ценам опен пол дня тестировался :)

Поддержка, кстати, есть, я ошибался https://www.mql5.com/ru/articles/405 есть смысл попробовать. Шложновато, но что делать

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

Поддержка, кстати, есть, я ошибался https://www.mql5.com/ru/articles/405 есть смысл попробовать. Шложновато, но что делать

Где там сказано про поддержку в тестере? - я не нашел.

Просто на чарте запущенная программа будет поддерживать OCL, да, но в тестере - нет. 

Да и сложного там особо ничего нет, сам сначала шибко испугался, "у страха глаза велики".

Заранее скажу: если будете придерживаться всех канонических правил написания кода для OCL (стараться обеспечивать пошаговую синхронность в каждой нитке), то сможете получить значительный прирост для GPU OCL (но требуется соблюсти много правил в коде).

Но поскольку этого очень трудно добиться для сложных конструкций (для советников это так) с многими операторами if или for, то лучше над этим не заморачиваться по началу и запускать OCL на CPU, и даже в этом случае можно получить почти кратно ядрам ускорение. А уже потом когда набъёте руку (я так и не набил) можно сделать правку чисто для GPU.     

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