OpenCL: interne Implementierungstests in MQL5 - Seite 21

 
Urain:

Ja, ich glaube, ich verstehe, dass Sie nicht zufrieden sind mit

1. die Kompliziertheit der Algorithmen und die Überschreitung des Speicherplatzes bei der Verwendung

2. und Sie möchten in der Lage sein, in der Kopierphase einen Ausgleich vorzunehmen.

Sie müssen also nicht 100000 Elemente kopieren und dann 998000 Offsets vornehmen.

Die Variante mit Offset, die wir jetzt haben, sollten wir aber beibehalten, weil sie uns erlaubt, ein und dieselben Daten nicht mehrfach zu kopieren, sondern sie für eine neue Aufgabe aus einem bereits vorhandenen CL-Puffer mit einem neuen Offset zu übernehmen.

1. nein. Ich mag es nicht, Zeit mit zusätzlichen Kopien zu verschwenden. Wenn wir allerdings float verwenden, müssen wir sowieso in die Lücke kopieren.

2. Ja.

3. Ja.

 
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
  • www.mql5.com
Сторонникам всемирного заговора и полным параноикам, ну или просто любителям по управлять ценой, посвящается! ;) - MQL4 форум
 

Sehr schön. Beeindruckend. Leckere Pfannkuchen.

//---

Wird es einen Artikel über OpenCL geben? Ich habe mich diesem Thema in der Praxis noch nicht genähert, aber es wäre sehr interessant, es im Zusammenhang zu lesen. Oder zumindest ein paar Beispielskripte in der Hilfe, wie man es benutzt. Es gibt nicht genug Informationen, um sie zu verteilen.

 

Ich habe es geschafft, die Geschwindigkeit meiner Karte im Vergleich zu einem einzelnen CPU-Kern um das 200-fache zu erhöhen.

2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  CpuTime/GpuTime = 216.0292397660819
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  Result on Cpu МахResult==1.3431 at 819 pass
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:01:32 ParallelTester_00-01 x (EURUSD,D1)  CPU time = 36941 ms
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  Result on Gpu МахResult==1.3431 at 819 pass
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  GPU time = 171 ms
2012.03.04 23:00:55 ParallelTester_00-01 x (EURUSD,D1)  OpenCL init OK!

Bitte testen Sie und veröffentlichen Sie die Ergebnisse.

CPU: AuthenticAMD AMD Phenom(tm) II X6 1100 T Processor with OpenCL 1.1 (6 units, 3311 MHz, 16345 Mb, version 2.0)
GPU: Advanced Micro Devices, Inc. Cayman with OpenCL 1.1 (20 units, 750 MHz, 1024 Mb, version CAL 1.4.1664 (VM))

Wenn die Karte keinen Speicherplatz beansprucht, reduzieren Sie den Verlauf (CountBars) oder die Anzahl der Durchläufe (CountPass), was weniger wünschenswert ist.

Anhänger eines Mehrkanalprüfgeräts

Dateien:
 
2012.03.04 22:24:07     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 1513 ms
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:08     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 44055 ms
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.80839 at 1002 pass
2012.03.04 22:24:52     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 29.11764705882353
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)
Selbst auf meiner nicht so tollen Hardware ist der Gewinn sichtbar. Nützlicher Test. Vielen Dank.
 

Mein Ergebnis: eine Beschleunigung um den Faktor 133:

2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 133.8285714285714
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:30     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 18736 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.24101 at 1079 pass
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 140 ms
2012.03.04 23:23:11     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.04 23:21:47     Terminal        CPU: GenuineIntel  Intel(R) Core(TM) i7-2600 CPU @ 3.40 GHz with OpenCL 1.1 (8 units, 3392 MHz, 16366 Mb, version 2.0)
2012.03.04 23:21:47     Terminal        GPU: Advanced Micro Devices, Inc. Barts with OpenCL 1.1 (14 units, 900 MHz, 1024 Mb, version CAL 1.4.1664 (VM))
 
Das Erstaunliche ist, dass der i7 bei einem einzelnen Kern doppelt so schnell ist wie der X6 1100T - bei vergleichbaren Frequenzen (der i7 liegt bei 3,8 GHz, der 1100T bei 3,7). Es ist verständlich, dass es sich um solche Berechnungen handelt, aber der Unterschied in der CPU-Geschwindigkeit bei einem niedrigen Thread ist ungeheuerlich.
 
Mathemat:
Es ist erstaunlich, dass der i7 auf einem einzelnen Kern 2 mal schneller läuft als der X6 1100T - bei vergleichbaren Frequenzen (der i7 liegt bei 3,8 GHz, der 1100T bei 3,7). Es ist verständlich, dass es sich dabei um solche Berechnungen handelt, aber der Unterschied in der CPU-Geschwindigkeit bei niedrigen Threads ist ungeheuerlich.

Ich habe viel nachgedacht und Google gelesen.

Ich habe mir den Kopf zerbrochen.

Entweder haben sie den fortschrittlichsten mql-Compiler-Optimierer für sich selbst eingespannt und geben ihn nicht an uns weiter, oder ich weiß es nicht mehr.

So funktioniert das nicht. "Das glaube ich nicht!" (c) KSS.

Und höchstwahrscheinlich haben sie einen für Intel optimierten Codogenerator.

Ich werde mich bei der UNO beschweren.

 
Junior Intel)
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       OpenCL init OK!
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       GPU time = 234 ms
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:03:33     ParallelTester_00-01 x (EURUSD,D1)       Result on Gpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       CPU time = 27471 ms
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       Result on Cpu МахResult==1.03434 at 315 pass
2012.03.05 02:04:01     ParallelTester_00-01 x (EURUSD,D1)       CpuTime/GpuTime = 117.3974358974359
2012.03.05 01:54:17     Terminal        GPU: NVIDIA Corporation GeForce GT 520 with OpenCL 1.1 (1 units, 1620 MHz, 512 Mb, version 285.62)

Aus irgendeinem Grund konnte ich in den Protokollen keine Zeile über die CPU finden.

Intel Celeron G530 2.4GHz

 

Das ist der Punkt, den ich nicht verstehe:

Ich habe eine GeForce GT 440 mit OpenCL 1.1 (2 Einheiten, 1660 MHz, 1024 Mb, Version 295.73) GPU Zeit = 1513 ms

Ich habe GeForce GT 520 mit OpenCL 1.1 (1 Einheiten, 1620 MHz, 512 Mb, Version 285.62) GPU Zeit = 234 ms

Wie ist das möglich?

Hier GeForce GT 440 und hier GeForce GT 520 verglichen Spezifikationen, ist meine durch alle Parameter mehr, aber die Laufzeit ist 6,5 mal mehr.

NVIDIA GeForce GT 440 | NVIDIA
NVIDIA GeForce GT 440 | NVIDIA
  • www.nvidia.ru
Установи GeForce в свой ПК для максимальной производительности и разгони свою цифровую жизнь. Смотри потоковые HD фильмы и выводи фотографии высокого разрешения без задержек. Создай дома 3D кинотеатр с помощью Blu-Ray 3D™ и NVIDIA® GeForce®. Разгони свои любимые приложения и раздвинь границы возможностей интернет с новым поколением браузеров с...
Grund der Beschwerde: