Как стать автором
Обновить

Комментарии 39

На SIMD переносить пробовали?
Там не в арифметике проблема. Очень много условных ветвлений.
У NVIDIA оптимизация OpenCL почти идентична оптимизации CUDA и соответственно отличается от оптимизаций OpenCL от AMD, ну а Intel вообще в другой плоскости мыслит :).

Я у себя даже поиск по большой ХЕШ таблице совершаю на видеокарте, ну а с ускорением алгоритма Маркова и работы с нейронными сетями я думаю многие знают.

Всю руки не дойдут, хочу попробовать хранить данные в виде текстуры, но с учётом что данные это CRC32 хеш, а 3-х значное поле. Если Вам попадался такой пример, то буду благодарен, если им поделитесь.
Тогда за счёт чего ускорение на GPU? GPU не дружат с условными ветвлениями
Ну да, каждая ветка внутри блока обрабатывается отдельно, т.е. остальные ждут. Выигрыш в целом за счет количества процессоров.
У Radeon 5850 всего 18 независимых процессоров (simd cores). Учитывая их частоту в 725 MHz они едва ли выигрывают у 6-ядерного Phenom на 3.2 GHz только за счёт числа.
Ну нельзя ведь и сводить ситуацию к тому что в каждом блоке в любой момент выполняется только один поток :) Плюс переключения эти достаточно быстрые.

Много времени также тратится на чтение из памяти.
У NVIDIA каждое ветвление обрабатывает свой Warp. При этом GeForce GTX 560 Ti содержит 384 ядра для обработки. Выигрыш за счёт массовости.
Ну не совсем так. Просто часть потоков внутри блока (warp-а) засыпает пока выполняется другая ветка.

Поэтому желательно таким образом подбирать данные чтобы внутри одного блока все потоки попадали в одно и то же ветвление. Если получится так сделать, то да, каждый блок будет обрабатывать своё ветвление. Но это задача разработчика, а не платформы.
Я приблизительно это и хотел сказать. Если внутри блока (warp-а) нет ветвления, то получаем на GeForce GTX 560 Ti 384 ядра для обработки.
время обработки сократилось в 72 раза

это надо большим жирным шрифтом и в заголовок )

Истинная success story, спасибо
время обработки сократилось в 72 раза
Я эту фразу картинкой прочувствовал :)
Ээ… Если б на бабу дули со скоростью в 72 раза превышающей номинальную (ну пускай 30 км\ч) получилась бы совсем другая картинка из цикла «рас;%дорасило» ))
НЛО прилетело и опубликовало эту надпись здесь
> NVIDIA не прощает ошибок.
сурово :)
Сколько занимает времени расчёт ТС с фиксированными значениями?
Сколько параметров ТС подбирается?
Расчёт идёт по тикам или барам, максимумы минимумы цены за период?

В нашем продукте, расчёт результатов ТС на квартальных тиковых данных с фиксированными значениями более 4 часов занимает, параллельная обработка не помогает, тики ведь нужно обрабатывать последовательно один за другим. Единственный вариант это параллельный расчёт нескольких вариантов параметров, ну и тут при достаточно сложной ТС модификации подвергаются одновременно десяток параметров, каким кластером это считать и главное как потом обрабатывать результат, выделяя «правильные»параметры для последующего тестирования на реальном рынке, вопрос.
1) Не могу с ходу ответить. Гляну и потом напишу.
2) 4 — достаточно простая система
3) По тикам

Ну квартальные это серьёзно.
Извиняюсь, часть информации раскрывать не могу :) Успехов вам.
Я там понимаю что скорее всего это ТС по «скальпингу»,
обрабатываются N тиков, при превышении максимума цены, волатильности, спреда БидАска или какого то другого значения входите в сделку, потом только мониторите прибыль/убыток для выхода.
Это очень хорошо ускоряется в вашем случае, одновременно рассчитать финансовый результат для разных значений прибыли/убытка.

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

Года три назад Церих представлял свою систему тестирования ТС на CUDA, но у них другой подход они не только параметры стратегии модифицировали, но и сами исторические данные, тики, что бы максимально
быстро отсеять неподходящие значения ТС, или саму ТС. В случаи больших «сливов». Заявлялось ускорение в сотни раз, относительно одного ядра ЦПУ

Ваша статья вдохновила нас на продолжения исследования в этом направлении, спасибо.
Ваша статья вдохновила нас на продолжения исследования в этом направлении, спасибо./blockquote>
Гендир прочитал, сделал мне выговор :)
В торговой платформе MetaTrader 5 для ускорение оптимизации торговых систем используется публичный MQL5 Cloud Network в дополнение в локальным ядрам и удаленным агентам.

Можете попробовать — скорость возрастает в десятки раз.
Отличная штука.

Параноидальные клиенты не боятся отдавать свои идеи в облако? :)
Не боятся, так как все программы пишутся на специальном прикладном managed MQL5 языке (безопасный вариант С++), работают внутри защищенной песочницы и никогда не записываются на диск.

На клаудных агентов передается уже скомпилированный код, который на целевой платформе докомпилируется в нативный 32/64 код и исполняется.

Кроме торговых задач можно запускать и математические вычисления. Желающие могут продавать свои ресурсы — cloud.mql5.com/ru
Скоро в MQL5 будет включена поддержка OpenCL — это позволит еще в разы/порядки поднять производительность вычислений в распределенной сети.
Я бывал по обе стороны резюме. И очень настоятельно советую при описание опыта работы использовать такую схему:

Место работы
Обязанности на этой работе (что делал?)
Достижения (что получилось?) // очень конкретные факты, без размытых фраз и красивых словосочетаний.
извини промазал
Сам у себя извинения попросил, теперь нужно самого себя извинить.
влепил плюс в карму за одну только иллюстрацию
Если кому интересно, это Anina Schenker.
А подпись с gizmodo
>После завершения обработки всех комбинаций параметров среди результатов ищется наилучший.

а каким образом вы определяете, что этот результат лучший, а не другой?
Результат это прибыль/убыток ТС. Чем больше, тем лучше.
ну например один набор параметров у вас дал 1000 сделок и 500 прибыли, другой набор дал 400 сделок и 450 прибыли, какой из них лучше?
Комиссия учитывается при расчете PnL. Ваш вопрос был про это? :)

Соответственно на ваш вопрос не могу ответить не зная какую комиссию за сделку вы подразумеваете. Если нулевую, то 500 прибыли лучше.
да пускай высчитывается, дело не в комиссии,
я к тому, что пробектестированная прибыль возможно неважный способ выбора лучшего набора параметров, но если у вас реализовано так, то вопрос закрываю:)
Не, вы меня только раззадорили. Поделитесь своими идеями :)
я не знаю, выже акула фондового рынка, мне просто стало интересно ;)
иронично)
m'kay
Применить какой-нибудь численный метод оптимизации также не получилось, т.к. у целевой функции (результата торгов) было много локальных максимумов.


Вообще-то существует достаточно большое количество методов многоэкстремальной оптимизации — Пиявского, Жилинскаса, Стронгина и т.п., в т.ч. есть и многокритериальные и оптимизированные под параллельную обработку. Обычно они предполагают что имеется константа Липшица, которую можно оценить (максимальное значение производной), но в финансовых задачах всегда все функции ограничены. Использование этих методов сократит время обработки на порядки по сравнению с перебором.
Класс. Почитаю, спасибо :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации