OpenCL: internal implementation tests in MQL5 - page 47

 

Something's not working for me. The initialisation line is fine:

2012.04.01 05:52:01    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))


(I put OpenCL 1.1 from AMD, and 1.2 on top of it). But now running the test gives out

2012.04.01 06:06:49    ParallelTester_00-01x (EURUSD,H1)    OpenCL not found.


Before that, I updated Intel Graphics Driver for newer version and then took down AMD drivers with their own installation, and then installed it again.

What am I doing wrong now?

P.S. Soon Ivy will come and it will really show what Intel can do in integrated graphics, together with Intel HD 4000. Look at the graphics.

Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
  • 2011.11.30
  • gagadget.com
Стали доступны утекшие в сеть слайды, где с демонстрируется разница между процессорами Intel Ivy Bridge и Sandy Bridge в бенчмарках. Если быть точным, то сравниваются модели Core i7-3770 и Core i7-2600 (i7-3770K и i7-2600K по какой-то причине не были использованы).
 
Mathemat:

What am I doing wrong now?

Recompile the test. That should help. If not, go to servicedesk.
 
Mathemat:

What am I doing wrong now?
CLCreateContext has changed the bool use_gpu parameter to int device (device number). Correct the code.
 
mql5:
In the new build, the parameter of CLContextCreate function was changed, int device is used instead of bool use_gpu.

with device>=0 is used as number of OpenCL device in sequence
with device==OPENCL_DEVICE_ANY (-1) used to automatically select from all available devices
with device==OPENCL_DEVICE_GPU (-2) used to automatically select from all available GPU devices

Could you please show me how to do this in the code? I call CLContextCreate( OPENCL_DEVICE_ANY ) and get the result on compilation:

'OPENCL_DEVICE_ANY' - undeclared identifier    ParallelTester_00-01x.mq5    145    31


Build 619.

And second question: where can I find the latest help?

P.S. It worked as soon as I set the argument to -1. The OPENCL_DEVICE_ANY constant has not been declared yet :)

 
In build 619 these constants are renamed to CL_DEVICE_ANY/CL_DEVICE_GPU.

But in future builds it will be CL_USE_ANY/CL_USE_GPU_ONLY
 

I decided to check how OpenCL will work on i3-2120 (it's not my compute, no discrete video in the system). Installed AMD APP SDK, OpenCL-Z detected everything. The terminal displayed a line during initialization:

2012.04.02 03:59:47    Terminal    CPU: GenuineIntel  Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)


Checked it on MetaDriver code attached to this post and slightly modified with latest changes in 619 build (see first tests here). Result:

2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CPU time = 20483 ms
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    GPU time = 27628 ms
2012.04.02 03:59:55    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!


At runtime on the "GPU", all four threads of the processor were fully occupied, 100%.

What do I need to do to get acceleration? On a Pentium G840-based system (also without discrete video), it was 25 times faster:

P.S. I sent a message to Service Desk, but I'm afraid this is rather my problem... I have apparently learned how to install and uninstall AMD APP SDK correctly with my eyes closed, but I guess I have not got around to all pitfalls. Although Intel OpenCL Runtime is installed on my system, it is still not recognized in the terminal as an OpenCL device.

P.P.S. Turns out, here's something else I dug up(https://www.mql5.com/ru/forum/6042/page25):

Ashes: 2012.03.05 17:43:16 Terminal CPU: GenuineIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz with OpenCL 1.1 (4 units, 3092 MHz, 4008 Mb, version 2.0)

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.734767766287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Result on Cpu MachResult==1.27347 at 1125 pass
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Count inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) CPU time = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Result on Gpu MachResult==1.27347 at 1125 pass
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Count inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) GPU time = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK!

:(((

Maybe I have "grenades of the wrong system"? (I mean AMD SDK version)

Even the CPU is almost identical to i3-2120...
Files:
 

GPU+OpenCL is a great tool, after all!

2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Result on Cpu MachResult==3.78654 at 50 pass
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Count inticators = 16; Count history bars = 50,000; Count pass = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CPU time = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Result on Gpu MachResult==3.78654 at 50 pass
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Count inticators = 16; Count history bars = 50,000; Count pass = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU time = 140 ms

 
MetaDriver:

GPU+OpenCL is a great tool, after all!

2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU time = 140 ms

I propose to make the tests so that the GPU calculation time is not so small. Anyway, 140 ms, imho, is too unreliable value, especially with GetTickCount() measurement errors in tens of milliseconds.

MD, that's me being so jealous of you.

 
Mathemat:

I suggest making the tests so that the GPU computation time is not so small.

I don't have the patience to wait for the CPU :) The further into the woods the cooler the GPU is...
 
MigVRN:
I don't have the patience to wait for a CPU :) The further into the woods the cooler the GPU is...

Likewise. :)

But I'll run it on 4096 bees. The CPU will count it in five minutes.