Here's what you can do with OpenCL directly in MetaTrader 5 without any DLLs - page 15

 
Ilyas:
  1. Close the terminal
  2. Remove the OpenCL value from "HKEY_CURRENT_USER\Software\MetaQuotes Software" registry hive
  3. Run the terminal and test

Removed OpenCL key before running it. The behaviour has not changed.

That is, the first launch of the Expert Advisor with CLContextCreate(CL_USE_GPU_ONLY) produces the above errors and the Expert Advisor does not start. From the second run, the initialization log of OpenCL devices is no longer displayed, there is only an error in the EA's log and EA does not work. When restarting the terminal, EA with a correctedCLContextCreate(0) commandworks - a mega-realistic seascape appears. At the same time, the initialization log has the sameperformance test errors, but the EA log is silent.

The key is slightly changed:

[HKEY_CURRENT_USER\Software\MetaQuotes Software]

before - "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,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

In principle, this behavior is not critical, if you fix EA/scripts and bypass devices by addressing them explicitly and checking CL_DEVICE_TYPE sign. It's even imho better to manageably distribute tasks to devices with their own rating. It's just frustrating to have initialisation errors. Who knows how OpenCL will behave in battle next.

Please help me find theoriginal Intel SDK for OpenCL Applications 2016 R2 to write and test the kernels. It is useless to write to Intel in Russian ;)

Why don't you try using AMD SDK?

 
Try upgrading to beta 2543
 
directx is more stable, but you'll have to do a lot of work for the calculations and there are no dubs.
 
Ilyas:
Try upgrading to beta 2543

beta 2545, release 2560.

Whenever the scriptis run for the first time:

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-4500 U CPU @ 1.80 GHz 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-4500 U CPU @ 1.80 GHz with OpenCL 1.2 (4 units, 1800 MHz, 8087 Mb, version 4.2.0.148, rating 21)
Scripts script Seascape (GBPUSD,H1) removed
Whenrunningthe script withCLContextCreate (CL_USE_GPU_ONLY):
Seascape (GBPUSD,H1)    OpenCL not found. Error=5114
 

I have similar errors, but a year ago on a weaker tablet it was working fine

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.44 GHz 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.44 GHz with OpenCL 1.2 (4 units, 1440 MHz, 4016 Mb, version 5.2.0.10094)
and now even that doesn't work:
void OnStart()
{
        Print(CLContextCreate( CL_USE_ANY ));
}

with the parameters: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - result: -1 with error code: 5115

with parameters: 0, 1 - result: positive

 
aim-1:

beta 2545, release 2560.

Wheneveryou run the script for the first time:

Whenrunningthe script with CLContextCreate(CL_USE_GPU_ONLY):

Your card does not support double calculations:

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

You cannot use float maths in financial calculations because of huge round-offs and therefore we explicitly require support for double calculations.

Previously, we allowed activating OpenCL without double, but it did not make sense.

Now we explicitly limit it.

 
A100:

I have similar errors, but a year ago on a weaker tablet it was working fine

And now even this does not work:

with the parameters: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - result: -1 with error code: 5115

with parameters: 0, 1 - result is positive

It is very odd that the Atom produces the same error about double.

We will have to check it out.

 
Renat Fatkhullin:

That Atom gives the same error about double is very strange.

It doesn't support double either.

It's strange in itself to require such support from the terminal... My .cl file has no double at all and I'm not using OpenCL for precise scientific calculations.

Moreover, it's not an old Atom, but a modern one with a separate GPU

 
Renat Fatkhullin:

Your card does not support double-counting

Let's ask the device itself:

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); }

The answer from the tank:


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


Indeed, there is no support for cl_khr_fp64

I can't find the officialIntel HD Graphics 4400 datasheet with information about lack of double precision on the net to make sure it's not a driver issue.

 

The only way to determine if a video card has FP64 is to use lefty benchmarks:

https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_HD-Graphics-4400

By the way, Renata's graphics coprocessor also seems to be without FP64 support:

https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_UHD-Graphics-630

Renat, can you run my above script to determine if your IGP supports double precision?

If yes, then it will be clear why your performance test was successful.

Maybe then try the option of converting mqlrates arrays to int on CPU before sending them to OpenCL, multiplying them by Digits. The memory consumption is halved. After that, play with vectors or try not to run into error when using floats. In principle, accuracy of the Digits+1 indicators should be more than enough.

Datetime also can be easily converted to int, if 1440 minutes in day are in first 12 bits (or in first 2 bytes), and days are in high bits. The speed gain of int vs double should be enough to cover the overhead custom iTime-like functions in kernels.

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