Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL - страница 15
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Удалил ключ OpenCL перед запуском. Поведение не поменялось.
Т.е. при первом запуске эксперта с CLContextCreate(CL_USE_GPU_ONLY) выдаются вышеприведенные ошибки и эксперт не запускается. Со второго запуска лог инициализации OpenCL устройств больше не выводится, остается только ошибка в логе эксперта и EA не работает. При перезагрузке терминала эксперт с исправленной командой CLContextCreate(0) отрабатывает - появляется мегареалистичный морской пейзаж. При этом в логе инициализации те же ошибки performance test, а в логе эксперта тишина.
Ключ немного поменялся:
[HKEY_CURRENT_USER\Software\MetaQuotes Software]
до - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,6c,2a,09,a4,b3,d8,e2,3f
после - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,98,6b,19,ab,41,5c,fd,3f
В принципе, такое поведение не критично, если исправить эксперты/скрипты и обходить устройства, обращаясь к ним явно и проверяя признак CL_DEVICE_TYPE. Это даже имхо лучше, чтобы управляемо раздавать задачи на устройства со своим собственным рейтингом. Просто неприятен факт наличия ошибок инициализации. Кто знает как OpenCL дальше в бою поведет.
Помогите плз найти оригинальный Intel SDK for OpenCL Applications 2016 R2, чтобы кернелы писать и тестить. В Intel русским писать имхо бесполезно ;)
Может попробовать AMDшный SDK использовать?
Попробуйте обновиться на бету 2543
beta 2545, release 2560.
При любом первом запуске скрипта:
При запуске скрипта с CLContextCreate(CL_USE_GPU_ONLY):Seascape (GBPUSD,H1) OpenCL not found. Error=5114
У меня похожие ошибки, при том что год назад на более слабом планшете нормально все работало
а теперь не работает даже это:с параметрами: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - результат: -1 с кодом ошибки: 5115
c параметрами: 0, 1 - результат положительный
beta 2545, release 2560.
При любом первом запуске скрипта:
При запуске скрипта с CLContextCreate(CL_USE_GPU_ONLY):У вас карта не поддерживает расчеты в double:
В финансовых расчетах нельзя применять float математику из-за громадных округлений и поэтому мы явно требуем наличия поддержки double вычислений.
Раньше мы позволяли активировать OpenCL без double, но это не имело смысла.
Теперь явно ограничиваем.
У меня похожие ошибки, при том что год назад на более слабом планшете нормально все работало
а теперь не работает даже это:с параметрами: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - результат: -1 с кодом ошибки: 5115
c параметрами: 0, 1 - результат положительный
То, что на Атоме дает такую же ошибку про double, очень странно.
Будем проверять.
То, что на Атоме дает такую же ошибку про double, очень странно.
Так он тоже не поддерживает double
Странно само по себе требование со стороны терминала такой поддержки... у меня например в .cl файле вообще нет double и я не использую OpenCL для точных научных расчетов
Тем более, что это не старый Atom, а современный - с отдельным GPU
У вас карта не поддерживает расчеты в double
Спросим у самого устройства:
Ответ из танка:
OpenCL device ext: cl_intel_accelerator cl_intel_advanced_motion_estimation cl_intel_ctz cl_intel_d3d11_nv12_media_sharing cl_intel_dx9_media_sharing cl_intel_motion_estimation cl_intel_simultaneous_sharing cl_intel_subgroups cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_gl_depth_images cl_khr_gl_event cl_khr_gl_msaa_sharing cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
Действительно, нет поддержки cl_khr_fp64
Никак не найду в сети официальную спецификацию Intel HD Graphics 4400 с информацией об отсутствии double precision, чтобы убедиться, что это не проблема драйвера.
Только если вот так - через левые бенчмарки определять есть ли FP64 в видеокарте:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_HD-Graphics-4400
Кстати, графический сопроцессор Рената также, похоже, без поддержки FP64:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_UHD-Graphics-630
Ренат, можете запустить мой вышеприведенный скрипт, чтобы определить поддерживает ли ваша IGP двойную точность?
Если да, то будет понятно почему у вас performance test проходил успешно.
Может тогда, попробовать вариант перед отправкой в OpenCL переводить на CPU mqlrates-массивы в int, умножая их на Digits? В два раза меньше расход памяти. А дальше векторами поиграть или на float'ах аккуратно на погрешность постараться не налететь. В принципе, точности индикаторов Digits+1 выше крыши должно хватить.
Datetime тоже можно легко в int перевести, если 1440 минут в дне в первые 12 бит зашить (ну ли в первые 2 байта), а в старшие биты дни. Выигрыша скорости int vs double должно хватить на покрытие накладных кастомных iTime-like функций в кернелах.