Вот что можно сделать с OpenCL прямо в терминале MetaTrader 5 без всяких DLL - страница 15

 
Ilyas:
  1. Закройте терминал
  2. Удалите значение OpenCL из ветки реестра "HKEY_CURRENT_USER\Software\MetaQuotes Software"
  3. Запустите терминал и тест

Удалил ключ 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
 
directx стабильнее, но для расчетов придется поизвращаться и даблов нет.
 
Ilyas:
Попробуйте обновиться на бету 2543

beta 2545, release 2560.

При любом первом запуске скрипта:

Scripts script Seascape (GBPUSD,H1) loaded successfully
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 4400 with OpenCL 1.2 (20 units, 400 MHz, 1425 Mb, version 10.18.14.5117)
OpenCL  device #1: CPU Intel(R) Corporation Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz with OpenCL 1.2 (4 units, 1800 MHz, 8087 Mb, version 4.2.0.148, rating 21)
OpenCL  device performance test started
OpenCL  test compilation failed with error: 
':9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 
:20:4: error: use of type 'double' requires cl_khr_fp64 extension to b
                
OpenCL  device #0 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  device performance test finished with error(s)
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 4400 with OpenCL 1.2 (20 units, 400 MHz, 1425 Mb, version 10.18.14.5117)
OpenCL  device #1: CPU Intel(R) Corporation Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz with OpenCL 1.2 (4 units, 1800 MHz, 8087 Mb, version 4.2.0.148, rating 21)
Scripts script Seascape (GBPUSD,H1) removed
При запуске скрипта с CLContextCreate(CL_USE_GPU_ONLY):
Seascape (GBPUSD,H1)    OpenCL not found. Error=5114
 

У меня похожие ошибки, при том что год назад на более слабом планшете нормально все работало

OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 400 with OpenCL 1.2 (12 units, 600 MHz, 1598 Mb, version 20.19.15.4364)
OpenCL  device #1: CPU Intel(R) Corporation  Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44GHz with OpenCL 1.2 (4 units, 1440 MHz, 4016 Mb, version 5.2.0.10094)
OpenCL  device performance test started
OpenCL  test compilation failed with error: '1:9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 1:20:4: error: use of type 'double' requires cl_khr_fp64 extensio
OpenCL  device #0 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  test compilation failed with error: 'Compilation started 2:9:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:10:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:11:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:12:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:13:25: error: use of type 'double' requires cl_khr_fp64 extension to be enabled 2:20:4: error: use of type 'double' requires 
OpenCL  device #1 performance test error: 'cannot create OpenCL program (5105)'
OpenCL  device performance test finished with error(s)
OpenCL  device #0: GPU Intel(R) Corporation Intel(R) HD Graphics 400 with OpenCL 1.2 (12 units, 600 MHz, 1598 Mb, version 20.19.15.4364)
OpenCL  device #1: CPU Intel(R) Corporation  Intel(R) Atom(TM) x5-Z8550 CPU @ 1.44GHz with OpenCL 1.2 (4 units, 1440 MHz, 4016 Mb, version 5.2.0.10094)
а теперь не работает даже это:
void OnStart()
{
        Print(CLContextCreate( CL_USE_ANY ));
}

с параметрами: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - результат: -1 с кодом ошибки: 5115

c параметрами: 0, 1 - результат положительный

 
aim-1:

beta 2545, release 2560.

При любом первом запуске скрипта:

При запуске скрипта с CLContextCreate(CL_USE_GPU_ONLY):

У вас карта не поддерживает расчеты в double:

use of type 'double' requires cl_khr_fp64 extension to be enabled

В финансовых расчетах нельзя применять float математику из-за громадных округлений и поэтому мы явно требуем наличия поддержки double вычислений.

Раньше мы позволяли активировать OpenCL без double, но это не имело смысла.

Теперь явно ограничиваем.

 
A100:

У меня похожие ошибки, при том что год назад на более слабом планшете нормально все работало

а теперь не работает даже это:

с параметрами: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - результат: -1 с кодом ошибки: 5115

c параметрами: 0, 1 - результат положительный

То, что на Атоме дает такую же ошибку про double, очень странно.

Будем проверять.

 
Renat Fatkhullin:

То, что на Атоме дает такую же ошибку про double, очень странно.

Так он тоже не поддерживает double

Странно само по себе требование со стороны терминала такой поддержки... у меня например в .cl файле вообще нет double и я не использую OpenCL для точных научных расчетов

Тем более, что это не старый Atom, а современный - с отдельным GPU

 
Renat Fatkhullin:

У вас карта не поддерживает расчеты в double

Спросим у самого устройства:

void OnStart() {
   int clCtx=CLContextCreate(0);
   if(clCtx == -1) Print("ERROR in CLContextCreate");
   string str;
   if(CLGetInfoString(clCtx,CL_DEVICE_NAME,str))       Print("OpenCL device name: ",str);
   if(CLGetInfoString(clCtx,CL_DEVICE_EXTENSIONS,str)) Print("OpenCL device ext: ",str);
   CLContextFree(clCtx); }

Ответ из танка:


OpenCL device name: Intel(R) HD Graphics 4400

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 функций в кернелах.

Главная
Главная
  • askgeek.io
Сравнительный анализ видеокарт Intel HD Graphics 515 и Intel UHD Graphics 630 по всем известным характеристикам в категориях: Общая информация, Технические характеристики, Видеовыходы и порты, Совместимость, размеры, требования, Поддержка API, Память, Поддержка технологий. Анализ производительности видеокарт по бенчмаркам: PassMark - G2D Mark...