OpenCL: interne Implementierungstests in MQL5 - Seite 56

 
Ashes: Es hat nicht geholfen.

Erzählen Sie uns im Detail, was Sie getan haben. Angefangen damit, wie Sie AMD APP SDK zu Fall gebracht haben.

Übrigens, vielleicht haben Sie im Skript ParallelTester_00-01x in die Funktion CLContextCreate() keinen Parameter gleich 0 eingefügt (sie wird möglicherweise auf dem Host (d. h. auf der CPU) ausgeführt). In meinem Beitrag war davon nicht die Rede.

 
Mathemat:
Erzählen Sie uns im Detail, was Sie getan haben. Angefangen damit, wie Sie das AMD APP SDK abgeschafft haben.

Deinstallieren Sie das AMD APP SDK, indem Sie die entsprechende Setup.exe, Uninstall ausführen. Neu gestartet.

Installierte Intel OCL (intel_ocl_sdk_1.5_x64_setup.exe), nur RunTime. Neu gestartet.

MT5 ausführen - Fehlanzeige. Die Registrierung wurde auf Ihren Rat hin korrigiert. MT5 neu aufgesetzt - schade.

Pfad auf Anraten von mql5 hinzugefügt , mit und ohne Anführungszeichen, x64 und x32 ausprobiert. Nach jeder Änderung des Registers - meine Verwendung von MT5 wieder und meine Verwendung - gleiche alte Eier, nur eine Seitenansicht.

Jetzt sieht HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors wie folgt aus:

(Standard)REG_SZ (Wert nicht zugewiesen)

C:\Program Files (x86)\Intel\OpenCL SDK1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

 
Ashes: Im Moment sieht HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors wie folgt aus:

(Standard)REG_SZ (Wert nicht zugewiesen)

C:\Program Files (x86)\Intel\OpenCL SDK\1.5\bin\x86\intelocl.dll REG_DWORD 0x00000000 (0)

Haben Sie da mal reingeschaut? Ich, zum Beispiel, habe nichts unter diesem Pfad (aber ich habe nur die Runtime heruntergeladen und installiert, vielleicht ist das der Grund).

Und zweitens habe ich gerade intelocl.dll ohne den vollständigen Pfad erstellt. Wahrscheinlich wurde es ohnehin während der Laufzeitinstallation registriert.

P.S. Ich habe mit vollständigen Pfaden experimentiert. Metatrader sieht OpenCL nicht mit vollen Pfaden (beide). Wenn ich aber nur intelocl.dll als Namen einstelle, wird alles sofort sichtbar, auch ohne Neustart des Computers.

Ich weiß nicht, wie ich die "richtige" Datei aus zwei im System vorhandenen Dateien mit demselben Namen auswählen kann.

Bitte berichten Sie hier über den Prozess. Trotzdem ist es interessant, vielleicht gibt es einige Nuancen. Ich selbst habe mich lange damit herumgeschlagen, und ich habe mit dem Ergebnis "gehadert", das mir sehr gut gefällt.

P.P.S. Übrigens, als ich auf der Intel-Ressource war, wurde mir geraten, das komplette Intel SDK zu deinstallieren und neu zu installieren, d.h. nicht nur zu deinstallieren, sondern auch in die Verzeichnisse system32 und sysWOW64 zu gehen und alles zu entfernen, was mit intelocl zu tun hat. Dies sind intelocl*.dll, opencl*.dll und andere Dateien. Irgendwo hier in der Nähe ist http://software.intel.com/en-us/forums/intel-opencl-sdk/. Wenn ich sie finde, werde ich einen genaueren Link einfügen.

Nützliche Links: http://software.intel.com/en-us/articles/opencl-release-notes/

Und hier - besonders nützlich: http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr, dort kann der Rat von Uri Levy (Intel) wirklich helfen. Wie auch immer, es ist immer noch ein Tamburinspiel.

 
MetaDriver (p. 53):

Dies ist auf der CPU (in meinem Fall ist es Gerät 1):

Der Parameter CLContextCreate(device) wurde in den Skript-Parameter übernommen, so dass Sie in allen Optionen herumstochern können.

Interessant ist Folgendes:

Dieses Skript auf dem 630er Build läuft irgendwie nicht so. Keine Meldung, geht in eine Schleife und lädt den Stein auf 100%. Und es geht nicht über eine angemessene Zeit hinaus. Aber ich habe bereits Intel-Runtime.

 
Mathemat:

Interessant ist, wie:

Dieses Skript auf dem 630er Build läuft irgendwie nicht so. Keine Meldung, geht in eine Schleife und lädt den Stein zu 100 Prozent. Und es geht nicht über eine angemessene Zeit hinaus. Aber ich habe bereits Intel-Runtime.

Neu kompiliert. Bei mir funktioniert es.

2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==4.15901 at 208 pass
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==4.15901 at 208 pass
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

 
MetaDriver: Ich habe es neu kompiliert, bei mir funktioniert es.

Ist das auf der CPU?! Wenn das so ist, machst du mir Angst...

Ich habe mich zu früh gefreut. Ich habe es ausgeführt, und es hat keinen Sinn gemacht. Kein einziger Eintrag im EA-Protokoll. Obwohl das Skript begann und sofort den ganzen Felsen füllte. Mit anderen Worten, er hat auf etwas gehämmert, ist aber nicht zu CLContextCreate() gelangt (er hätte etwas gesagt, wenn er dorthin gelangt wäre, nicht wahr?).

Das ist etwas Neues. Es sieht so aus, als ob die Intel-Laufzeitumgebung den mit dem AMD SDK kompilierten Code nicht versteht. Ich habe OCL_Device sowohl auf 0 als auch auf -1 gesetzt. Keine Wirkung.

Im Allgemeinen ist es ungünstig, dass Sie die Plattform nicht wählen können. Ich wünschte, es wäre möglich, das zu tun. Ich bin es leid, alles neu zu installieren.

 
Mathemat:

Ist das auf der CPU?! Wenn das so ist, machst du mir Angst...

Nein, auf der GPU. Aber das OpenCL-Gerät ist auswählbar. Hier auf der CPU:

2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==3.53209 at 36 pass
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==3.53209 at 36 pass
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04.21 06:19:37     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

Ich habe mich zu früh gefreut. Ich habe es ausgeführt und es hat keinen Sinn gemacht. Kein einziger Eintrag im EA-Protokoll. Aber das Skript läuft an und füllt sofort den ganzen Felsen aus. D.h. es hämmert auf etwas ein, kommt aber nicht zu CLContextCreate() (wenn es so wäre, würde es etwas sagen, richtig?).

Etwas Neues. Es ist, als ob die Intel-Laufzeitumgebung den mit AMD SDK kompilierten Code nicht versteht. Ich habe OCL_Device sowohl auf 0 als auch auf -1 gesetzt. Keine Wirkung.

Im Allgemeinen ist es ungünstig, dass Sie die Plattform nicht auswählen können. Es wäre wünschenswert, eine solche Möglichkeit zu haben. Ich bin es leid, alles neu zu installieren.

Oh, Mann, es ist eine Ransomware).

Okay, hier ist der Quellcode. Machen Sie damit, was Sie wollen.

Der Code lässt sich nicht mit AMD SDK kompilieren. Zumindest der OCL-Code tut dies. Das OCL-Programm wird während der Ausführung von mql-Code kompiliert. Die EX5-Datei aus dem OCL-Snap-In kompiliert nur die Brückenfunktionen des mql/ocl-Treibers. Ich glaube nicht, dass sie je nach Hersteller des Treibers in unterschiedlichen Maschinencode kompiliert werden. Allerdings können nur die Entwickler diesen Punkt vollständig klären.

 
MetaDriver: Der Code lässt sich nicht mit dem AMD SDK kompilieren.
Es ist verständlich, ich habe mich schlecht ausgedrückt (ich bin ja kein professioneller Programmierer). Aber es hängt immer noch vom OpenCL-"Bibliotheks"-Anbieter ab (interne Funktionen selbst, nicht API).
 
Mathemat:

Haben Sie es dort überprüft? Ich zum Beispiel habe nichts dergleichen in diesem Pfad (aber ich habe nur die Runtime heruntergeladen und installiert, vielleicht ist das der Grund, warum es nichts gibt).

Und zweitens habe ich gerade intelocl.dll ohne den vollständigen Pfad erstellt. Wahrscheinlich wurde sie ohnehin bei der Installation der Laufzeitumgebung registriert.

...

Die "nackte" intelocl.dll war eine der ersten, die überprüft wurde. Sowohl im x64- als auch im x86-Ordner gibt es eine Datei mit diesem Namen.

 
Ashes: Die "nackte" intelocl.dll war eine der ersten, die überprüft wurde. Sowohl im x64- als auch im x86-Ordner gibt es eine Datei mit diesem Namen.

Ich weiß nicht, was ich dann tun soll. Ich habe mich auf der Suche nach einer Lösung gequält, bis mir das Support-Team einen Tipp gab. Wahrscheinlich ist das keine vollständige Lösung, aber auf meinem Computer hat es funktioniert.

Wahrscheinlich muss man als erstes lernen, wie man die Spuren der früheren SDKs sauber entfernt.

Grund der Beschwerde: