Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL - страница 5
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
На этом фоне AMD выглядит выигрышной не только за счет явно более быстрых мат расчетов (майнерские фермы на АМД обычно собирают), но и за свою стратегию открытых стандартов(они очень много открыли и продвигают в паблик). Внедрение OpenCL 2.0 в AMD картах вплотную приблизил эту спецификацию к возможностям CUDA и теперь вообще нет смысла закладываться на CUDA.
Вот это полезная информация, а то я когда-то лет 7 назад с CUDA игрался, думал, она и сейчас рулит.
Вопрос - а что сейчас с отладчиками под OpenCL? Я не про терминал МТ5, а в общем плане. Пока видел только отладчик от Intel, как плагин к Visual Studio и автономный дебаггер (depricated) от нее же. Но вроде там заточка именно на процессоры от Intel и на ее встроенную графику. И вообще плохо понимаю, как параллельный код отлаживать, для меня это пока чисто черный ящик.
С CUDA можно работать только для себя или для специфических направлений, где можно требовать явного наличия Nvidia карт.
Да, раньше CUDA имела больше возможностей. Но с выходом железок AMD с OpenCL 2.0 и наличии новой версии OpenCL 2.1 уже нет смысла сидеть под vendor lock-in. Особенно когда этот вендор еще и подрезает функционал.
С точки зрения максимального покрытия выбор только один - OpenCL, который отлично работает и на обычных процессорах. То есть, не надо требовать безусловного наличия GPU или писать две версии кода под GPU и CPU. Один раз написанный OpenCL код будет работать в разных конфигурациях.
Отлаживать CUDA/OpenCL можно только в специализированных отладчиках. Тут чуда быть не может.
в примере
на конфигурации с доступным CPU устройством выводит "OpenCL not found"
А так -
работает
*вопрос в дефолтности выбора устройста
А можно это все в божеском виде тогда иметь, без всяких кавычек? ппц как неудобно для восприятия и для создания
А для нейросеток надоб уже стандартные классы иметь, и можно на opcl сразу ) типа как велслабе
"#define HL2Count " + (string)hl2NeuronCount + " \r\n"
//------------------------------------------------------------------------------------
"#define NeuronSensitivity " + (string)NeuronSensitivity_P + " \r\n"
//------------------------------------------------------------------------------------
"#define sampleCount " + (string)sampleCount + " \r\n"
//------------------------------------------------------------------------------------
"#define signalCount " + (string)signalCount + " \r\n"
//------------------------------------------------------------------------------------
"#define StrArrSaSize " + (string)(sizeof(ArrSample) / sizeof(float)) + "\r\n"
"typedef struct{float C[StrArrSaSize];} ArrSa; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrWeSize " + (string)(sizeof(ArrWe) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrWeSize];} ArrWe; \r\n"
//------------------------------------------------------------------------------------
"#define StrArrCrSize " + (string)(sizeof(ArrCr) / sizeof(float)) + " \r\n"
"typedef struct{float C[StrArrCrSize];}ArrCr; \r\n"
//------------------------------------------------------------------------------------
"#define Spread " + (string)(Spread_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
"#define Point " + (string)Point() + " \r\n"
"#define SL " + (string)(StopLoss_P * Point()) + " \r\n"
"#define TP " + (string)(TakeProfit_P * Point()) + " \r\n"
//------------------------------------------------------------------------------------
" \r\n"
"__kernel void Work(__global ArrSa *Sample, \r\n"
" __global ArrWe *Weights, \r\n"
" __global ArrCr *Result) \r\n"
"{ \r\n"
" int thread = get_global_id(0); \r\n"
" \r\n"
" //------------------Переменные нейронной сети---------------------------------\r\n"
А можно это все в божеском виде тогда иметь, без всяких кавычек? ппц как неудобно для восприятия и для создания
А для нейросеток надоб уже стандартные классы иметь, и можно на opcl сразу ) типа как велслабе
Это демонстрация не только расчетов на GPU в MQL5 коде, но и графических возможностей терминала:
Полный исходный код в виде скрипта приложен. Ошибка на OpenCL 1.2 исправлена.
В облако пойдет для агентов ?
В облако пойдет для агентов ?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL
Renat Fatkhullin, 2016.12.10 14:49
Скоро мы разрешим OpenCL в MQL5 Cloud Network как минимум для CPU реализаций.Все здорово, но! С OCL и вообще со всеми средствами параллелизации есть большая проблема - очень малая часть алгоритмов может эффективно распараллеливаться. Почему в примерах параллельных вычислений так любимы имитация волн, падение шара на пирамиду с их разрушением, то есть все то, что можно разбить на мелкие частички и каждую обсчитывать на своем проце.
Для форы/биржи это конечно нейронные сети, различные преобразования типа Фурье, Вейвлет, фильтры и др., все они отлично параллелятся. Но есть линейные алгоритмы, которые вообще не могут быть распараллелены. Как правило, это когда результат следующего шага алгоритма основывается на результатах предыдущего шага.
Это я написал для тех, кто думает, вот куплю сейчас 2 крутые видяхи и все у меня в тестере залетает.