Vielleicht kann Renat sehen, was man daraus lernen kann. Es ist durchaus möglich, dass die neue Spezifikation auch in MQL5 eine bessere Leistung bringt, nicht wahr?
Was C#/C++ betrifft, so können wir es notfalls auch wegwerfen. Die Hauptsache ist, dass man die größtmögliche Leistung erzielt. ;)
Im Moment halte ich mich davon ab, den CL-Optimierer für Sharp neu zu schreiben, in der Hoffnung, dass der neue MT4 irgendwann zumindest die Version 1.1 zur Verfügung stellt. Die Sprache ist dieselbe, der Compiler ist derselbe und es gibt keine prinzipiellen Hindernisse (ich brauche nicht wirklich OpenCL-Unterstützung in einem MT4-Tester, auch wenn ich damit weitermachen werde, wenn sie auftaucht). Wenn sie nicht implementiert wird - werde ich nach links denken.
Für jedes Skript gebe ich einen Link zu dem Beitrag an, in dem es veröffentlicht wurde, damit andere es schnell finden, die Tests durchführen und die Ergebnisse bei Bedarf vergleichen können.
2013.11.2916:39:50 ParallelTester_00-01 x (EURUSD,H1) CLGetInfoInteger() returned 22013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) OpenCL init OK!
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) GPU time = 62 ms
2013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:39:51 ParallelTester_00-01 x (EURUSD,H1) Result on Gpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CPU time = 14492 ms
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12802013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) Result on Cpu МахResult==1.34787 at 699 pass
2013.11.2916:40:05 ParallelTester_00-01 x (EURUSD,H1) CpuTime/GpuTime = 233.741935483871
Ich habe auch versucht, den Indikatorqpu_EMA-Rainbowvon MetaDriver zu testen.
Bei der CPU ist das Ergebnis manchmal bis zu 2x besser. Hier ist das Ergebnis:
2013.12.01 14:12:50 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at CPU, time = 811 ms
2013.12.01 14:12:57 qpu_Future_EMA-Rainbow (EURUSD,M1) OpenCL: GPU device 'GeForce GTX 650 Ti BOOST' selected
2013.12.01 14:12:58 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at GPU (OpenCL), time = 1295 ms
//---
Volodya(MetaDriver), zeigen Sie mir Ihre Ergebnisse?
P.S. Ich habe meinen Typ im Kernel-Code in den Parametern der gpuEMA-Funktion von__global auf__local geändert. Ein wenig schneller, aber immer noch langsamer als bei der CPU.
2013.12.01 14:29:46 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at CPU, time = 795 ms
2013.12.01 14:29:51 qpu_Future_EMA-Rainbow (EURUSD,M1) OpenCL: GPU device 'GeForce GTX 650 Ti BOOST' selected
2013.12.01 14:29:52 qpu_Future_EMA-Rainbow (EURUSD,M1) Calculate 1000129 bars at GPU (OpenCL), time = 1061 ms
Ich habe auch versucht, den Indikatorqpu_EMA-Rainbowvon MetaDriver zu testen.
Bei der CPU ist das Ergebnis manchmal bis zu 2x besser. Hier ist das Ergebnis:
Volodya(MetaDriver), zeigen Sie mir Ihre Ergebnisse?
P.S. Ich habe im Kernel-Code die Parameter der gpuEMA-Funktion von__global auf__local geändert. Ein wenig schneller, aber immer noch langsamer als bei der CPU.
Meine Ergebnisse sind ähnlich. Das wird schon lange diskutiert und ist logisch - die Aufgabe ist zu einfach, die Übertragung von Speicher zur und von der Grafikkarte lohnt sich nicht. Der Vorteil der GPU zeigt sich bei komplexeren Aufgaben.
MetaDriver: Ich habe ähnliche Ergebnisse. Das ist schon lange diskutiert worden, und es macht Sinn - die Aufgabe ist zu einfach, die Übertragung von Speicher zur und von der Grafikkarte lohnt sich nicht. Der Vorteil der GPU zeigt sich bei komplexeren Aufgaben.
Ich verstehe, danke, ich werde mit komplexeren Aufgaben experimentieren.
Er übertrug seine Arbeit im OOP-Stil auf die CUDA GPU. Er begann 2010 damit, machte dann eine Pause und schaffte es von 2011 bis Sommer 2014 bis zur Arbeitsversion 0.3. Es gelang ihm, eine Beschleunigung von 100X zu erreichen... 137-mal - und das bei einem CONNECTED-Algorithmus, der schwierig ist.
Für die Arbeit wurde die QuantLib-Bibliothek in C++ verwendet, die er nach eigenem Bekunden nach dem Motto "OOP ->-> prozeduraler Ansatz" überarbeiten musste, damit das Ganze auf der CUDA GPU funktioniert.
Er schreibt:
"Ich habe die Monte-Carlo-Bewertung von IRD mit dem LMM auf der GPU mit Least-Squares für frühe Übungsfunktionen implementiert.
Sie können den Code von kooderive.sourceforge.net sowohl in C++ als auch in CUDA erhalten. Das Papier ist unter ...... zu finden.
Ich habe für CUDA einen völlig anderen Code verwendet als zuvor für C++. Im Wesentlichen behandle ich Daten als zentrales Konzept und verwende den Code, um auf die Daten einzuwirken. Der Stil ist sehr funktionell. Es hat mich sehr viel Arbeit gekostet, weil meine früheren C++-Implementierungen objektorientiert waren.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Vielleicht kann Renat sehen, was man daraus lernen kann. Es ist durchaus möglich, dass die neue Spezifikation auch in MQL5 eine bessere Leistung bringt, nicht wahr?
Was C#/C++ betrifft, so können wir es notfalls auch wegwerfen. Die Hauptsache ist, dass man die größtmögliche Leistung erzielt. ;)
Ich habe einige der Skripte in diesem Thread auf einem solchen Rechner getestet:
CPU-Z
CUDA-Z
Für jedes Skript gebe ich einen Link zu dem Beitrag an, in dem es veröffentlicht wurde, damit andere es schnell finden, die Tests durchführen und die Ergebnisse bei Bedarf vergleichen können.
Prüfung 1
Prüfung 2
Prüfung 3
Maßstab = 1000
Prüfung 4
Prüfung 5
Prüfung 6
Prüfung7
Prüfung 8
Ich habe auch versucht, den Indikatorqpu_EMA-Rainbow von MetaDriver zu testen.
Bei der CPU ist das Ergebnis manchmal bis zu 2x besser. Hier ist das Ergebnis:
//---
Volodya(MetaDriver), zeigen Sie mir Ihre Ergebnisse?
P.S. Ich habe meinen Typ im Kernel-Code in den Parametern der gpuEMA-Funktion von__global auf__local geändert. Ein wenig schneller, aber immer noch langsamer als bei der CPU.
Ich habe auch versucht, den Indikatorqpu_EMA-Rainbow von MetaDriver zu testen.
Bei der CPU ist das Ergebnis manchmal bis zu 2x besser. Hier ist das Ergebnis:
Volodya(MetaDriver), zeigen Sie mir Ihre Ergebnisse?
P.S. Ich habe im Kernel-Code die Parameter der gpuEMA-Funktion von__global auf__local geändert. Ein wenig schneller, aber immer noch langsamer als bei der CPU.
Ich habe ähnliche Ergebnisse. Das ist schon lange diskutiert worden, und es macht Sinn - die Aufgabe ist zu einfach, die Übertragung von Speicher zur und von der Grafikkarte lohnt sich nicht. Der Vorteil der GPU zeigt sich bei komplexeren Aufgaben.
Ein Beispiel für die Nutzung der GPU-Beschleunigung für den Handel (Derivate).
Mark Joshi - bekannt für seine Bücher über Finanzmathematik, insbesondere über Derivate und Optionshandel - hat hier über seine Arbeit berichtet:
http://ssrn.com/abstract=2388415
Er übertrug seine Arbeit im OOP-Stil auf die CUDA GPU. Er begann 2010 damit, machte dann eine Pause und schaffte es von 2011 bis Sommer 2014 bis zur Arbeitsversion 0.3. Es gelang ihm, eine Beschleunigung von 100X zu erreichen... 137-mal - und das bei einem CONNECTED-Algorithmus, der schwierig ist.
Für die Arbeit wurde die QuantLib-Bibliothek in C++ verwendet, die er nach eigenem Bekunden nach dem Motto "OOP ->-> prozeduraler Ansatz" überarbeiten musste, damit das Ganze auf der CUDA GPU funktioniert.
Er schreibt:
"Ich habe die Monte-Carlo-Bewertung von IRD mit dem LMM auf der GPU mit Least-Squares für frühe Übungsfunktionen implementiert.
Sie können den Code von kooderive.sourceforge.net sowohl in C++ als auch in CUDA erhalten. Das Papier ist unter ...... zu finden.
Ich habe für CUDA einen völlig anderen Code verwendet als zuvor für C++. Im Wesentlichen behandle ich Daten als zentrales Konzept und verwende den Code, um auf die Daten einzuwirken. Der Stil ist sehr funktionell. Es hat mich sehr viel Arbeit gekostet, weil meine früheren C++-Implementierungen objektorientiert waren.
Sein Projekt selbst ist quelloffen:
http://sourceforge.net/projects/kooderive/