OpenCL: реальные задачи

 

Тем про OpenCL хватает, но задачи, которые приводятся в пример, слишком далеки от торговых.

Так что же может дать OpenCL трейдерам?

Да, я еще не изучал OpenCL, потому хочется узнать и прояснить основные моменты:

  1. Это же отдельная программа, которая получает данные на вход и отдает? То есть нет вообще никакого взаимодействия из MQL?
  2. Стоит ли вообще выносить поиск по массиву в OpenCL, если нужно получить только подтверждения существования соответствия?
  3. При оптимизации каждый отдельный поток обязан выполнять свою инициализацию OpenCL и нет возможности подключится уже к активной?
  4. А при оптимизации видяха не тормозит от нескольких OpenCL одновременно?
 
Roffild:

Тем про OpenCL хватает, но задачи, которые приводятся в пример, слишком далеки от торговых.

Так что же может дать OpenCL трейдерам?

Что сможете взять, то и даст.

Да, я еще не изучал OpenCL, потому хочется узнать и прояснить основные моменты:

Ну так изучайте.  Инет поможет.  Не увлекайтесь вопросами на форуме, точнее вопросами начального уровня.  Вся информация о том "как это работает" есть в инете и статьях на форуме. У меня, например, есть желание помогать когда я вижу что человек сам впахивается в изучение и уже виден некоторый уровень освоения материала.  Халявщикам вставшим в позу "вот он я уже пришёл, научите уже меня!" помогать не хочется, а хочется лишь "вправить мозг".  :)

Сегодня сделаю исключение (настроение благодушное), но при очевидной пробуксовке на начальной стадии в дальнейшем буду скорее всего игнорить "детский лепет" и отвечать только на конкретные вопросы по программированию, притом если они не слишком тупые.

1. Это же отдельная программа, которая получает данные на вход и отдает? То есть нет вообще никакого взаимодействия из MQL?

Во время работы кернела опенЦЛ взаимодействия нет.  Взаимодействие по аналогии с вызовом функции: 1. задали начальные параметры, 2. запустили расчёт, 3. забрали результат

2. Стоит ли вообще выносить поиск по массиву в OpenCL, если нужно получить только подтверждения существования соответствия?

Не знаю.  Зависит от задачи. Может и не стоит. А может и стоит.  Клуб телепатов знаете где? :)

3. При оптимизации каждый отдельный поток обязан выполнять свою инициализацию OpenCL и нет возможности подключится уже к активной?

Не совсем понял вопрос. Если имеете в виду оптимизацию в тестере/оптимизаторе стратегий терминала, то скорее всего так.  Я не пробовал запускать опенЦЛ из оптимизатора. Из тестера запускал, но там всё последовательно, можно один кернел многократно использовать, это очевидно и без объяснений.
4. А при оптимизации видяха не тормозит от нескольких OpenCL одновременно?

Я не пробовал в оптимизаторе запускать.  Но если несколько вызовов накладываются друг на друга (я это делал запуская одновременно несколько ОЦЛ-индикаторов и экспертов), то естественно тормозит. 

//  С потолка же не возьмутся ресурсы, да? 

Если перегрузить память видеокарты (например если несколько процессов параллельно пытаются загрузить в видеопамять массивы по сумме превышающие объём её памяти), то можно "порвать драйвер" - получить полную перезагрузку (ресет) видеокарты и драйвера, с последующим сообщением о падении драйвера.  По крайней мере на моей карте/драйвере это неоднократно случалось. К необратимым пагубным последствиям это не приводит, только вызвавшие падение программы обычно подвисали (их приходилось перезапускать). Раньше ещё были случаи повисания терминала, но в последнее время такого не помню. 

// Впрочем, я давно уже не "рвал" драйвер нескромными запросами к памяти, примерно нащупал "границы роскоши". :)

 
Roffild: Тем про OpenCL хватает, но задачи, которые приводятся в пример, слишком далеки от торговых.

Все очень просто: берем задачу, близкую к торговой (скажем, анализ истории котировок), - и пытаемся ее решить с помощью OpenCL. После нескольких неудачных попыток, дальнейшего штудирования литературы и новых попыток все получится, гарантирую. Но при условии способности вникать в англоязычную литературу и некоторой настойчивости, а также наличия моска в минимальных количествах.

Драйверы OpenCL уже неплохо оптимизированы и для видеокарт, и для эмуляции на процесcорах (во втором случае, пожалуй, значительно сильнее процессоры Intel). Так что нужно сильно постараться, чтобы в конце концов не получить вообще никакого положительного результата.

 
Roffild:
 

Так что же может дать OpenCL трейдерам?

 

По пунктам 1-4 Вам уже ответили, а на главный Ваш вопрос рискну ответить я (есссно сугубо моя точка зрения такова): подавляющему большинству трейдеров OpenCL не даст ничего, лучше оставить этот "хлеб" программистам.
 
Народ, кто шарабанит? Можно переложить на OpenCL решение линейной системы уравнений? Размер системы может быть реально большим и есть еще нюансы.
 
TheXpert:
Народ, кто шарабанит? Можно переложить на OpenCL решение линейной системы уравнений? Размер системы может быть реально большим и есть еще нюансы.

Решение СЛАУ на OpenCL

нормальный такой pdf отвечающий на твой вопрос.

 

Николай, спасибо за отзывчивость. Там CUDA и кода нет.

А, забыл еще одну вещь сказать -- построение матрицы занимает больше времени чем ее решение :) так что параллелить возможно надо будет построение.

 
TheXpert:

Николай, спасибо за отзывчивость. Там CUDA и кода нет.

А, забыл еще одну вещь сказать -- построение матрицы занимает больше времени чем ее решение :) так что параллелить возможно надо будет построение.

Подумать надо.  Исходные данные какие?  // формат, структура данных интересует

В смысле из чего строим матрицу?  Из связки буферов?  Из дерева? Из [...] ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных - Документация по MQL5
 
TheXpert:

Николай, спасибо за отзывчивость. Там CUDA и кода нет.

А, забыл еще одну вещь сказать -- построение матрицы занимает больше времени чем ее решение :) так что параллелить возможно надо будет построение.

Я имел в виду не реализацию а схему. CUDA конечно отличается но общая схема таже.

Согласен с Владимиром, ты даёшь мало инфы чтоб тебе помочь.

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

 
MetaDriver:

В смысле из чего строим матрицу?  Из связки буферов?  Из дерева? Из [...] ?

Грубо говоря, есть пространство огромной размерности (10 -- 1000 и больше), для него надо решить задачу МНК.

Решение задачи МНК сводится в итоге к

(1) построению уравнений производных

(2) решению системы уравнений, полученных в (1)

Сейчас львиную долю времени решения занимает (1). Чем больше размерность, тем больше часть.

 

У параллельных алгоритмов есть всего 2 фишки дающих преимущество над последовательными.

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

И пирамидное сворачивание/разворачивание. Разворачивание реже в основном сворачивание.

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

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