Пиши и зарабатывай на MQL5 - страница 114

 
Andrey Dik:

Задачи должны быть относительно тяжёлыми, тогда есть смысл использовать OCL, иначе загрузка и выгрузка данных в/из устройства может всё преимущество съесть.

Я делал оптимизацию на i5, 4 ядра, ускорение получал почти в 4 раза ~ 3.8, то есть прирост почти линейный от количества ядер.

ЗЫ Подобное ускорение, 3,8 раза, получал на неоптимизированном коде, без ухищрений для синхронизации потоков.

Речь шла о работе с результатами оптимизации. Я обновил сообщение, указав ссылку на комментарий, к которому оно относилось.

 
Serhii Shevchuk:

Речь шла о работе с результатами оптимизации. Я обновил сообщение, указав ссылку на комментарий, к которому оно относилось.

Это ничего не меняет, я не отрицал Вами сказанное, а дополнил
 
Serhii Shevchuk:

По поводу идеи, описанной в #860

Очень важно количество задач. Если речь идёт о результатах быстрой оптимизации, то чаще всего их примерно 10к. По крайней мере, у меня так было в большинстве случаев. Максимум, который я видел, это 25к. Для OpenCL это очень мало. Не думаю, что получится какой-то прирост по сравнению со встроенными функциями.

Допустим, можно растянуть вширь по параметрам, они вроде в большинстве не связаны друг с другом. Количество значений ENUM_STATISTICS около 40. Можно для каждого из проходов одновременно считать все параметры. Пусть получится 25к*40 = 1000000 задач. Это вот тот минимум, при котором можно начать задумываться о реализации на OpenCL.

Но кому это будет нужно? Допустим, есть функция, которая считает всю статистику по всем проходам за 100мс. Что дальше с этим делать?

Я бы взял какую-нибудь тему по OpenCL, например ту же №58, но я не вижу в ней особого смысла. Статья ради статьи? Либо я что-то не так понимаю.

В какой то степени так и есть - пример ради примера. Просто пример расчёта кучи торговых статиски на основе 1 миллиона (например) набора проходов оптимизации покажет как понятный трейдерам код из MQL5 перенести на OpenCL. Похожая на это задача  - как на коллекции тиков последовательностей по N символов периодически искать паттерны/отклонения в потоке так, чтобы минимально тормозить работу MQL5 программы.

 
Rashid Umarov:
Начните, Дмитрий,  там разберемся.

Немного начал, написал введения, планы. Может какие пожелания или требования будут?

 

Тут у нас в ветке по МО созрела мысль, что с появлением великого множества алгоритмов для машинного обучения, все сложнее становится оптимальный вариант их выбора и не плохо было бы поискать для этого какие-то методики и сравнительные тесты.

В связи с этим вопрос к администрации - можно ли эту тему добавить в перспективный перечень статей?

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

Для максимальной объективности и того, что бы охватить больше вариантов, наряду с MQL библиотеками типа AlgLib подключаем много дополнительных из Python и R.

 

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

Условия такие - есть поле 5000 строк, таких полей 512, значение строки 0 или 1 (можно и больше вариантов), задача перебрать все 512 полей склеивая их друг с другом (варианты склеек могут быть с разными условиями, к примеру значение трех полей равно 1, то 1, иначе 0) - число комбинаций 512*512*512. Если в строке значение 1, то из отдельного массива, берем значение - допустим 10, если же значение 0, то ничего не берем. В конце суммируем полученный результат, фильтруем по нижнему приделу и сохраняем в файл комбинации и их значения.

Такая вот задачка, которая не быстро решается на ЦП, но должна быстро решаться на GPU - очень интересно увидеть как её решать.

Задача актуально для МО.

 
Aleksey Vyazmikin:

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

Условия такие - есть поле 5000 строк, таких полей 512, значение строки 0 или 1 (можно и больше вариантов), задача перебрать все 512 полей склеивая их друг с другом (варианты склеек могут быть с разными условиями, к примеру значение трех полей равно 1, то 1, иначе 0) - число комбинаций 512*512*512. Если в строке значение 1, то из отдельного массива, берем значение - допустим 10, если же значение 0, то ничего не берем. В конце суммируем полученный результат, фильтруем по нижнему приделу и сохраняем в файл комбинации и их значения.

Такая вот задачка, которая не быстро решается на ЦП, но должна быстро решаться на GPU - очень интересно увидеть как её решать.

Задача актуально для МО.

нарисуйте графически, что требуется.

 
Andrey Dik:

нарисуйте графически, что требуется.

Лучше я приложу код, как это сейчас работает для 512на512, но без класса отвечающего за чтение/запись (он не мой просто).

Думаю, что это задачу можно быстро решать на GPU.
Файлы:
 
Aleksey Vyazmikin:

Лучше я приложу код, как это сейчас работает для 512на512, но без класса отвечающего за чтение/запись (он не мой просто).

Думаю, что это задачу можно быстро решать на GPU.
В код не особо вникал, но, на первый взгляд, это задача как раз для GPU.
 
Хорошая ветка - почти все более-менее интересное на ресурсе отсюда.
Причина обращения: