OpenCL: interne Implementierungstests in MQL5 - Seite 58

 
Mathemat:

Nun, endlich, wir haben auf Sie gewartet. Wenn Sie bereit sind zu experimentieren, installieren Sie Intel OpenCL Runtime (Link-Anleitung).

Führen Sie das Skript aus, ohne etwas daran zu ändern, und posten Sie das Protokoll auf der Registerkarte "Experten", so wie es Ihre früheren Kollegen getan haben. Die Ausführung des Skripts auf Ihrem Edelstein dauert etwa 3 Minuten, haben Sie etwas Geduld. Gleichzeitig werden wir herausfinden, wie OpenCL auf dem coolsten Barebone Sandy Bridge Stein läuft.

Wenn Sie die Geduld nicht aufbringen können oder glauben, dass es Ihre Fähigkeiten übersteigt, ist das in Ordnung, nichts für ungut.

P.S. Der Zweck dieses Skripts ist es, zu sehen, was eine nackte CPU ohne diskrete Videodragons leisten kann. Ich vermute, dass dieses Skript mit ordnungsgemäß eingefügter Intel Runtime eine Beschleunigung von etwa 200 oder sogar noch etwas mehr haben wird.

Es bestehen Zweifel, ob die Intel OpenCL Runtime korrekt installiert ist.

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1347.164383561644

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==0.9316 at 10253 pass

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 4


 
casinonsk:

Es bestehen Zweifel, ob die Intel OpenCL Runtime korrekt installiert ist.

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

Wahrscheinlich haben Sie das Argument CLContextCreate() auf etwas anderes als Null gesetzt. Ich habe Sie gebeten, nichts zu ändern! Wir kennen die Fähigkeiten Ihres zweiköpfigen Videodrachens bereits. Aber es scheint, dass Sie sogar mehrere davon haben.

Nach meinen groben Schätzungen sollten Sie bei CLContextCreate(0) eine CPU-Zeit von 180000 ms und eine GPU-Zeit von 900 ms (ungefähr) haben. Ihre erste Laufzeit ist merkwürdig hoch für eine solche CPU. Vielleicht war sie mit anderen Aufgaben überlastet?

Können Sie das Skript einfach so ausführen, wie ich es angehängt habe - ohne irgendetwas am Code zu ändern, kein einziges Zeichen?

P.S. Es kann natürlich sein, dass device = 0 nicht der CPU, sondern etwas anderem entspricht. Nun, dann experimentieren Sie (von 0 bis 3). Die höchste GPU-Zeit sollte theoretisch der reinen CPU, d. h. dem Host, entsprechen.

 
Mathemat:

Sie haben nicht Null als Argument von CLContextCreate() gesetzt, sondern etwas anderes. Ich habe Sie gebeten, nichts zu ändern! Wir kennen die Fähigkeiten Ihres zweiköpfigen Videodrachens bereits. Aber Sie scheinen mehrere davon zu haben.

Nach meiner groben Schätzung sollten Sie bei CLContextCreate(0) Zahlen in der Größenordnung von CPU-Zeit = 180000 ms und GPU-Zeit = 900 ms (ungefähr) haben. Ihre erste Laufzeit ist merkwürdig hoch für eine solche CPU. Vielleicht war sie mit anderen Aufgaben überlastet?

Können Sie das Skript einfach so ausführen, wie ich es angehängt habe - ohne irgendetwas zu ändern, kein einziges Zeichen?

P.S. Es kann natürlich sein, dass device = 0 nicht der CPU, sondern etwas anderem entspricht. Nun, dann experimentieren Sie (von 0 bis 3). Die höchste GPU-Zeit sollte theoretisch der reinen CPU, d. h. dem Host, entsprechen.

Ich habe die Parameter nicht geändert! Ich habe es so laufen lassen, wie es ist.

Dem Video zufolge handelt es sich um 2x590.

Ich habe es noch einmal mit CLContextCreate(0)1,2,3 versucht, das Ergebnis ist dasselbe wie vorher.

Das Problem liegt möglicherweise bei derIntel OpenCL Runtime.

 
casinonsk:

Sie haben die Parameter nicht geändert! Angefangen wie es ist.

Nach einem erneuten Durchlauf mit CLContextCreate(0)1,2,3 ist das Ergebnis das gleiche wie zuvor.

Die Ergebnisse sind alle gleich? Ich kann es nicht glauben... Nun, dieses Skript kann keine GPU-Zeit = 219 ms auf einer bloßen CPU haben. Im besten Fall wären es etwa 800 ms, aber nicht etwa 200 ms.

Hier ist mein typisches Ergebnis (ich habe eine Pentium G840 CPU):

2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 88.40817091454272
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==1.05116 at 7785 pass
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CPU time = 235873 ms
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==1.05116 at 7785 pass
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    GPU time = 2668 ms
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    CLGetInfoInteger() returned 1

OK, machen wir weiter.

 
Mathemat:

Sind die Ergebnisse alle gleich? Ich kann es nicht glauben... Nun, dieses Skript kann keine GPU-Zeit = 219 ms auf einer bloßen CPU haben. Im besten Fall sind es etwa 800 ms, aber nicht etwa 200 ms.

Ok, vergessen Sie es.

Ich habe es gerade noch einmal mitCLContextCreate(0) versucht

 2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1265.405982905983

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==1.48772 at 2051 pass

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 296105 ms

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==1.48772 at 2051 pass

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 234 ms

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 5


 
casinonsk: Ich habe es gerade noch einmal mitCLContextCreate(0) versucht

Offensichtlich handelt es sich um eine diskrete Karte, nicht um eine CPU: solche Geschwindigkeitssteigerungen sind bei Emulationen kaum möglich. Und die Anzahl der Geräte, die Sie haben, ist bereits 5, was gruselig 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 ausgeführt (sie sollten schnell sein), während die Berechnungen für x86, die längste, nur einmal ausgeführt werden. 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.
 

Ich habe ein interessantes Ergebnis )) Verstanden, es geht nicht um die Gesamtzahl der Geräte, sondern um die aktuelle Anzahl

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0

Die Berechnungen sind noch nicht abgeschlossen, ich werde sie aber veröffentlichen, sobald sie fertig sind.

Übrigens, weder CLGetInfoInteger() noch CL_DEVICE_COUNT sind in der Hilfe vorhanden.

PS. Ergebnis

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 11357 ms
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 1
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 998 ms
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CPU time = 428706 ms
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Cpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CpuTime/GpuTime = 429.565130260521
 
fyords: Übrigens, in der Hilfe gibt es weder CLGetInfoInteger() noch CL_DEVICE_COUNT.

PS. Ergebnis

Aktualisieren Sie Ihre Hilfe, Ihre ist veraltet.

2. Sie haben

2012.03.04 22:27:16     Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)
2012.03.04 22:27:16     Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2812 MHz, 2048 Mb, version 2.0)

Sehr wahrscheinlich bezieht sich die erste Zahl, 11357 ms, auf den Host (bloße CPU) und die zweite, 998 ms, auf die Grafikkarte. Die Größenordnung des Gewinns auf dem Host entspricht, grob gesagt, der mit AMD OpenCL erreichten Beschleunigung (etwa 38 Mal auf einem 4-Core Athlon II). Obwohl es eigentlich ein bisschen wenig ist, sollte es mehr sein, irgendwo in der Nähe von 50-60. Es ist durchaus möglich, dass Ihr Speicher sehr langsam ist.

Die Zahl CpuTime/GpuTime wird natürlich nur für das zuletzt berechnete Gerät berechnet.

 
Mathemat:

1. Aktualisieren Sie die Hilfe, Ihre ist eindeutig veraltet.

2. Die Zahl CpuTime/GpuTime wird natürlich nur für das zuletzt berechnete Gerät berechnet.

1. manuell aktualisiert alles ist da, danke, aber ist die Hilfe nicht zusammen mit dem Terminal und Meta-Editor aktualisiert?

2. Ja, aber trotzdem, schön ).

 
papaklass:

Mit Ihrer Hardware ist es fast klar, Sie haben nur den Host als OpenCL-Gerät. Andererseits ist es merkwürdig, dass Sie vorhin ein so hohes Ergebnis erzielt haben (Seite 51):

2012.04.08 13:28:01     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       OpenCL init OK!
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       GPU time = 7145 ms
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Gpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CPU time = 422888 ms
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Cpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CpuTime/GpuTime = 59.18656403079076

Aus irgendeinem Grund kann ich den Cursor nicht aus der Codeeinfügung herausholen. Und wenn ich jemanden zitiere, ist es derselbe Unsinn. Ist es ein Fehler im Forum?

Wahrscheinlicher ist ein Fehler in der Forum-Engine, aber das ist nicht immer so. Normalerweise klicke ich auf die HTML-Leiste und füge manuell ein paar Buchstaben nach dem letzten Tag ein. Dann gehe ich zurück in den visuellen Bearbeitungsmodus des Beitrags.

Grund der Beschwerde: