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.
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.0423:01:32 ParallelTester_00-01 x (EURUSD,D1) CpuTime/GpuTime = 216.02923976608192012.03.0423:01:32 ParallelTester_00-01 x (EURUSD,D1) Result on Cpu МахResult==1.3431 at 819 pass
2012.03.0423:01:32 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0423:01:32 ParallelTester_00-01 x (EURUSD,D1) CPU time = 36941 ms
2012.03.0423:00:55 ParallelTester_00-01 x (EURUSD,D1) Result on Gpu МахResult==1.3431 at 819 pass
2012.03.0423:00:55 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0423:00:55 ParallelTester_00-01 x (EURUSD,D1) GPU time = 171 ms
2012.03.0423: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, version2.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.
2012.03.0422:24:07 ParallelTester_00-01 x (EURUSD,D1) OpenCL init OK!
2012.03.0422:24:08 ParallelTester_00-01 x (EURUSD,D1) GPU time = 1513 ms
2012.03.0422:24:08 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0422:24:08 ParallelTester_00-01 x (EURUSD,D1) Result on Gpu МахResult==1.80839 at 1002 pass
2012.03.0422:24:52 ParallelTester_00-01 x (EURUSD,D1) CPU time = 44055 ms
2012.03.0422:24:52 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0422:24:52 ParallelTester_00-01 x (EURUSD,D1) Result on Cpu МахResult==1.80839 at 1002 pass
2012.03.0422:24:52 ParallelTester_00-01 x (EURUSD,D1) CpuTime/GpuTime = 29.11764705882353
Mein Ergebnis: eine Beschleunigung um den Faktor 133:
2012.03.0423:23:30 ParallelTester_00-01 x (EURUSD,D1) CpuTime/GpuTime = 133.82857142857142012.03.0423:23:30 ParallelTester_00-01 x (EURUSD,D1) Result on Cpu МахResult==1.24101 at 1079 pass
2012.03.0423:23:30 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0423:23:30 ParallelTester_00-01 x (EURUSD,D1) CPU time = 18736 ms
2012.03.0423:23:11 ParallelTester_00-01 x (EURUSD,D1) Result on Gpu МахResult==1.24101 at 1079 pass
2012.03.0423:23:11 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0423:23:11 ParallelTester_00-01 x (EURUSD,D1) GPU time = 140 ms
2012.03.0423:23:11 ParallelTester_00-01 x (EURUSD,D1) OpenCL init OK!
2012.03.0423: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, version2.0)
2012.03.0423: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.
2012.03.0502:03:33 ParallelTester_00-01 x (EURUSD,D1) OpenCL init OK!
2012.03.0502:03:33 ParallelTester_00-01 x (EURUSD,D1) GPU time = 234 ms
2012.03.0502:03:33 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0502:03:33 ParallelTester_00-01 x (EURUSD,D1) Result on Gpu МахResult==1.03434 at 315 pass
2012.03.0502:04:01 ParallelTester_00-01 x (EURUSD,D1) CPU time = 27471 ms
2012.03.0502:04:01 ParallelTester_00-01 x (EURUSD,D1) Соunt inticators = 16; Count history bars = 144000; Count pass = 12802012.03.0502:04:01 ParallelTester_00-01 x (EURUSD,D1) Result on Cpu МахResult==1.03434 at 315 pass
2012.03.0502:04:01 ParallelTester_00-01 x (EURUSD,D1) CpuTime/GpuTime = 117.3974358974359
Установи GeForce в свой ПК для максимальной производительности и разгони свою цифровую жизнь. Смотри потоковые HD фильмы и выводи фотографии высокого разрешения без задержек. Создай дома 3D кинотеатр с помощью Blu-Ray 3D™ и NVIDIA® GeForce®. Разгони свои любимые приложения и раздвинь границы возможностей интернет с новым поколением браузеров с...
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.
Erste Pfannkuchen: https://www.mql5.com/ru/forum/138292/page7#601897
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.
Bitte testen Sie und veröffentlichen Sie die Ergebnisse.
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
Mein Ergebnis: eine Beschleunigung um den Faktor 133:
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.
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.