OpenCL: interne Implementierungstests in MQL5 - Seite 47

 

Irgendetwas funktioniert bei mir nicht. Die Initialisierungszeile ist in Ordnung:

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


(Ich habe OpenCL 1.1 von AMD und 1.2 darüber gelegt). Aber wenn man den Test jetzt durchführt, erhält man

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


Davor habe ich den Intel-Grafiktreiber auf eine neuere Version aktualisiert und dann die AMD-Treiber mit ihrer eigenen Installation entfernt und dann wieder installiert.

Was mache ich jetzt falsch?

P.S. Bald wird Ivy kommen und es wird wirklich zeigen, was Intel im Bereich der integrierten Grafik leisten kann, zusammen mit Intel HD 4000. Sehen Sie sich die Grafiken an.

Сравнение между 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:

Was mache ich jetzt falsch?

Kompilieren Sie den Test neu. Das sollte helfen. Wenn nicht, gehen Sie zu servicedesk.
 
Mathemat:

Was mache ich jetzt falsch?
CLCreateContext hat den Parameter bool use_gpu in int device (Gerätenummer) geändert. Korrigieren Sie den Code.
 
mql5:
Im neuen Build wurde der Parameter der CLContextCreate-Funktion geändert, int device wird anstelle von bool use_gpu verwendet.

mit device>=0 wird als Nummer des OpenCL-Geräts in der Reihenfolge
mit device==OPENCL_DEVICE_ANY (-1) verwendet, um automatisch aus allen verfügbaren Geräten auszuwählen
mit device==OPENCL_DEVICE_GPU (-2) verwendet, um automatisch aus allen verfügbaren GPU-Geräten auszuwählen

Können Sie mir bitte zeigen, wie man das im Code macht? Ich rufe CLContextCreate( OPENCL_DEVICE_ANY ) auf und erhalte das Ergebnis beim Kompilieren:

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


Gebäude 619.

Und die zweite Frage: Wo kann ich die neueste Hilfe finden?

P.S. Es hat funktioniert, sobald ich das Argument auf -1 gesetzt habe. Die Konstante OPENCL_DEVICE_ANY wurde noch nicht deklariert :)

 
In Build 619 werden diese Konstanten in CL_DEVICE_ANY/CL_DEVICE_GPU umbenannt.

Aber in zukünftigen Builds wird es CL_USE_ANY/CL_USE_GPU_ONLY sein
 

Ich beschloss zu prüfen, wie OpenCL auf i3-2120 funktionieren wird (es ist nicht mein Rechner, keine diskrete Video im System). Installiertes AMD APP SDK, OpenCL-Z hat alles erkannt. Das Terminal hat während der Initialisierung eine Zeile angezeigt:

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)


Überprüft es auf MetaDriver Code zu diesem Beitrag beigefügt und leicht mit den neuesten Änderungen in 619 Build geändert (siehe erste Tests hier). Ergebnis:

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!


Zur Laufzeit auf der "GPU" waren alle vier Threads des Prozessors zu 100 % ausgelastet.

Was muss ich tun, um Akzeleration zu erhalten? Auf einem Pentium G840-basierten System (ebenfalls ohne diskretes Video) war es 25 Mal schneller:

P.S. Ich habe dem Service Desk eine Nachricht geschickt, aber ich fürchte, das ist eher mein Problem... Ich habe anscheinend gelernt, wie man das AMD APP SDK mit geschlossenen Augen korrekt installiert und deinstalliert, aber ich schätze, ich habe noch nicht alle Fallstricke überwunden. Obwohl Intel OpenCL Runtime auf meinem System installiert ist, wird es immer noch nicht im Terminal als OpenCL-Gerät erkannt.

P.P.S. Wie sich herausstellte, habe ich noch etwas anderes ausgegraben(https://www.mql5.com/ru/forum/6042/page25):

Asche: 2012.03.05 17:43:16 Terminal CPU: GenuineIntel Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz mit OpenCL 1.1 (4 Einheiten, 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) Ergebnis auf Cpu MachResult==1.27347 bei 1125 pass
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) Anzahl der Indikatoren = 16; Anzahl der historischen Balken = 144000; Anzahl der Durchläufe = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) CPU-Zeit = 21309 ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Ergebnis auf Gpu MachResult==1.27347 bei 1125 pass
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) Anzahl der Indikatoren = 16; Anzahl der historischen Balken = 144000; Anzahl der Durchläufe = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) GPU-Zeit = 29001 ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK!

:(((

Vielleicht habe ich "Granaten des falschen Systems"? (Ich meine die AMD SDK-Version)

Sogar die CPU ist fast identisch mit dem i3-2120...
Dateien:
 

GPU+OpenCL ist schließlich ein großartiges Werkzeug!

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) Ergebnis auf Cpu MachResult==3.78654 bei 50 Durchgängen
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Anzahl der Indikatoren = 16; Anzahl der historischen Balken = 50.000; Anzahl der Durchläufe = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CPU-Zeit = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Ergebnis auf Gpu MachResult==3.78654 bei 50 Durchgängen
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Anzahl der Indikatoren = 16; Anzahl der historischen Balken = 50.000; Anzahl der Durchläufe = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU-Zeit = 140 ms

 
MetaDriver:

GPU+OpenCL ist schließlich ein großartiges Werkzeug!

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

Ich schlage vor, die Tests so zu gestalten, dass die GPU-Berechnungszeit nicht so gering ist. Wie auch immer, 140 ms ist imho ein zu unzuverlässiger Wert, insbesondere mit GetTickCount() -Messfehlern von einigen zehn Millisekunden.

MD, ich bin so neidisch auf dich.

 
Mathemat:

Ich schlage vor, die Tests so zu gestalten, dass die GPU-Berechnungszeit nicht so gering ist.

Ich habe nicht die Geduld, auf die CPU zu warten :) Je weiter im Wald, desto kühler ist die GPU...
 
MigVRN:
Ich habe nicht die Geduld, auf eine CPU zu warten :) Je weiter im Wald, desto kühler ist die GPU...

Gleichermaßen. :)

Aber ich werde es auf 4096 Bienen laufen lassen, die CPU wird es in fünf Minuten zählen.