OpenCL: interne Implementierungstests in MQL5 - Seite 60

 
Mathemat:

Ja, MD, Sie kommen mit einer bloßen CPU nicht so gut zurecht. Intel ist aber überall...

Ach, kommen Sie, Sie haben doch eine tolle Grafikkarte.

Ich habe Angst, es anzufassen. Ich habe es einmal deinstalliert und fand mich in fast völliger Dunkelheit wieder - Windows hatte es mit einem ungeeigneten Treiber verbunden. Ich musste das AMD APP SDK bei 1 % Sicht wieder einfügen. Das war lustig... :))) Drücken Sie alle Knöpfe zum hundertsten Mal...................
 
MetaDriver: Ja. Ich kratze mich am Kopf. Aber vielleicht ist der Fahrer schief. Ich habe Angst, ihn anzufassen.
Es ist schon komisch: Sogar die nativen Treiber sind schief - sowohl für Intel als auch für AMD. Hoffen wir, dass es sich nur um ein Wachstumsproblem handelt.
 

Leute, könnten Sie beraten, ob diese OpenCL auf einer reinen CPU gibt solche Beschleunigung nur in MQL5 oder in anderen Sprachen auch?

Haben Sie den folgenden Vergleich durchgeführt: MQL5 + OpenCL VS C++ + Full Compiler Optimization?

Ich vermute, dass es nicht OpenCL ist, das so cool ist, sondern der Mangel an Optimierungen in MQL5 selbst.

P.S. Ich habe einen i7 2700K, ich werde versuchen (wenn ich es bekommen), um es auf eine saubere CPU zu testen.

 
Mathemat:
Lustig ist, dass sogar die nativen Treiber schief sind - sowohl für Intel als auch für AMD. Hoffen wir, dass es sich nur um ein Wachstumsproblem handelt.
Ja, ich hoffe, dass das in ein paar Jahren nicht mehr vorkommt, dann wird alles gut funktionieren. Im Moment habe ich andere Probleme - ich muss lernen, wie man dieses Zeug richtig programmiert... :)
 
hrenfx:

Leute, könnten Sie beraten, ob diese OpenCL auf einer reinen CPU gibt solche Beschleunigung nur in MQL5 oder in anderen Sprachen auch?

Haben Sie den folgenden Vergleich durchgeführt: MQL5 + OpenCL VS C++ + Full Compiler Optimization?

Ich vermute, dass es nicht OpenCL ist, das so cool ist, sondern der Mangel an Optimierungen in MQL5 selbst.

P.S. Ich habe einen i7 2700K und werde versuchen (wenn ich dort ankomme), es mit einer sauberen CPU zu testen.

Nein, haben wir nicht.

Nur zu! Gutes Zeug.

Im Grunde ist der Code in höchstens zehn Minuten nach C++ portiert (auf einer nackten CPU, die zählt). Wie man OpenCL in C++ verwendet, habe ich nur in einer Fibel gesehen und nie ausprobiert. Eigentlich wünschte ich, ich hätte es getan.

 
hrenfx: Ich habe den Verdacht, dass es nicht OpenCL ist, das cool ist, sondern der Mangel an Optimierungen in MQL5 selbst.

Ja, das ist logisch. Ich hatte kürzlich eine Diskussion im ixbt-Forum mit einem CPU-Analysten, der dieselbe Meinung vertritt. Die Diskussion begann hier (mein Nickname ist tamehtaM). Bitte treten Sie mich nicht für meine Inkompetenz. Aber ich habe den Eindruck, dass Felid es auch übertreibt: Er spricht zu oft von IGP - auch dann, wenn sie, die IGP, entweder nicht vorhanden oder zu schwach ist.

Mein erster Beitrag in diesem Thread wurde geschrieben, als ich noch nicht wusste, wie man Intel OpenCL-Runtime richtig installiert. Ich bin mir immer noch nicht sicher, ob sie richtig eingestellt wurde. Aber es ist bereits etwa dreimal besser als beim AMD APP SDK.

Die Beschleunigungswerte sind schmerzhaft hoch, das ist sicher. Und sie sollten natürlich niedriger werden, wenn die Optimierungen erscheinen.

Interessant ist, dass auch ohne diese Optimierungen die fünfte schneller ist als die vierte.

Und die Beschleunigung selbst ist nicht die Hauptsache. Die Hauptsache sind die absoluten Zahlen der Laufzeit. Sie werden auf keinen Fall schlechter werden. Um genau zu sein, sollten sie nicht noch schlimmer werden.

 
Mathemat:

Dabei handelt es sich offensichtlich um eine diskrete Karte, nicht um eine CPU: solche Geschwindigkeitssteigerungen sind in der Emulation kaum zu erreichen. Und die Anzahl der Geräte beträgt bereits 5, was wirklich unheimlich ist.

Wenn es Ihnen nichts ausmacht, einen leicht veränderten Code auszuführen, posten Sie bitte das Ergebnis hier. Im Code werden die Berechnungen für die verschiedenen OpenCL-Geräte in einer Schleife durchgeführt (sie sollten schnell sein), während die Berechnung auf x86, die längste, nur einmal ausgeführt wird. Es ist lang, aber das Skript selbst wird nur einmal ausgeführt.

Mir ist klar, dass ich Sie bereits langweile. Aber auf jeden Fall ist es eine gute Information für das Support-Team.

Hier ist das Ergebnis.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Cpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Sozialindikatoren = 16; Anzahl der Historienbalken = 144000; Anzahl der Durchläufe = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CPU-Zeit = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Gpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Sozialindikatoren = 16; Anzahl der Historienbalken = 144000; Anzahl der Durchläufe = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU-Zeit = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Gerätenummer = 4
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Gpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Anzahl Indikatoren = 16; Anzahl Historienbalken = 144000; Anzahl Durchläufe = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU-Zeit = 234 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Gerätenummer = 3
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Gpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Anzahl Indikatoren = 16; Anzahl Historienbalken = 144000; Anzahl Durchläufe = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU-Zeit = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Gerätenummer = 2
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Gpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Anzahl Indikatoren = 16; Anzahl Historienbalken = 144000; Anzahl Durchläufe = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU-Zeit = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Gerätenummer = 1
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Gpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Anzahl Indikatoren = 16; Anzahl Historienbalken = 144000; Anzahl Durchläufe = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU-Zeit = 234 ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Gerätenummer = 0

 
casinonsk:

Hier ist das Ergebnis.

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Cpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Sozialindikatoren = 16; Anzahl der Historienbalken = 144000; Anzahl der Durchläufe = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CPU-Zeit = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Ergebnis auf Gpu MachResult==1.41575 bei 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Sozialindikatoren = 16; Anzahl der Historienbalken = 144000; Anzahl der Durchläufe = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU-Zeit = 687 ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK! Gerätenummer = 4

Damit ist nun klar, dass Gerät = 4 die nackte CPU ist. Und GPU-Zeit = 687 ms- ziemlich konsistent. Bei Ihnen hat es gut funktioniert.

Ich verstehe nicht, warum die Ausführungszeit von CPU-Zeit so lang ist. Ich habe etwa 235000 ms mit einer viel niedrigeren Kernfrequenz (2,8 GHz).

Entweder ist Ihr Arbeitsspeicher knapp oder sehr langsam, oder die CPU ist durch eine sehr ressourcenintensive Aufgabe ständig überlastet. Das ist nicht klar. Der Wert für das Zeitverhältnis ist unnatürlich hoch.

 
Mathemat:

Es ist also klar, dass Gerät = 4 die reine CPU ist. Und GPU-Zeit = 687 ms- ziemlich konsistent. Bei Ihnen hat es gut funktioniert.

Ich verstehe nur nicht, warum die Ausführungszeit CPU-Zeit so hoch ist. Ich habe etwa 235000 ms - bei viel niedrigerer Kernfrequenz (2,8 GHz).

Entweder ist Ihr Arbeitsspeicher knapp oder sehr langsam, oder die CPU ist durch eine sehr ressourcenintensive Aufgabe ständig überlastet. Das ist nicht klar. Der Wert für das Zeitverhältnis ist unnatürlich hoch.

Der Expert Advisor ist am Optimieren, die Kerne sind etwas belastet.

16Gb Speicher

 
casinonsk: Der Expert Advisor wird optimiert, die Kerne werden ein wenig belastet.

Dann ist alles klar. Versuchen Sie, das gleiche Skript auszuführen, wenn die Optimierung abgeschlossen ist. Es werden wahrscheinlich alle Kerne belastet.

Es ist sehr interessant, eine nackte Top-CPU zu betrachten, wenn nichts anderes im Weg ist.

Grund der Beschwerde: