Hier sehen Sie, was Sie mit OpenCL direkt in MetaTrader 5 ohne DLLs machen können - Seite 15

Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Der OpenCL-Schlüssel wurde vor der Ausführung entfernt. Das Verhalten hat sich nicht geändert.
Das heißt, der erste Start des Expert Advisors mit CLContextCreate(CL_USE_GPU_ONLY) führt zu den oben genannten Fehlern und der Expert Advisor startet nicht. Ab dem zweiten Durchlauf wird das Initialisierungsprotokoll der OpenCL-Geräte nicht mehr angezeigt, es gibt nur noch einen Fehler im EA-Protokoll und EA funktioniert nicht mehr. Beim Neustart des Terminalsfunktioniert EA mit einem korrigiertenCLContextCreate(0)-Befehl- es erscheint eine mega-realistische Meereslandschaft. Gleichzeitig werden im Initialisierungsprotokoll dieselbenLeistungstestfehler angezeigt, aber im EA-Protokoll herrscht Ruhe.
Der Schlüssel ist leicht verändert:
[HKEY_CURRENT_USER\Software\MetaQuotes Software]
before - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,6c,2a,09,a4,b3,d8,e2,3f
после - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,98,6b,19,ab,41,5c,fd,3f
Im Prinzip ist dieses Verhalten unkritisch, wenn man EA/Skripte fixiert und Geräte umgeht, indem man sie explizit anspricht und das CL_DEVICE_TYPE-Zeichen überprüft. Es ist imho sogar besser, die Aufgaben auf Geräte mit eigener Bewertung zu verteilen. Es ist einfach frustrierend, wenn Initialisierungsfehler auftreten. Wer weiß, wie sich OpenCL in der nächsten Schlacht verhalten wird.
Bitte helfen Sie mir, dasOriginal Intel SDK für OpenCL-Anwendungen 2016 R2 zu finden, um die Kernel zu schreiben und zu testen. Es ist sinnlos, an Intel auf Russisch zu schreiben ;)
Warum versuchen Sie es nicht mit dem AMD SDK?
Versuchen Sie ein Upgrade auf Beta 2543
beta 2545, Freigabe 2560.
Immer, wenn das Skript zum ersten Malausgeführt wird:
BeimAusführendes Skripts mitCLContextCreate (CL_USE_GPU_ONLY):Seascape (GBPUSD,H1) OpenCL not found. Error=5114
Ich habe ähnliche Fehler, aber vor einem Jahr funktionierte es auf einem schwächeren Tablet problemlos.
und jetzt funktioniert auch das nicht mehr:mit den Parametern: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - Ergebnis: -1 mit Fehlercode: 5115
mit den Parametern: 0, 1 - Ergebnis: positiv
beta 2545, Freigabe 2560.
WennSie das Skript zum ersten Malausführen:
BeimAusführendes Skripts mit CLContextCreate(CL_USE_GPU_ONLY):Ihre Karte unterstützt keine doppelten Berechnungen:
Bei Finanzberechnungen kann man wegen der enormen Rundungen keine Fließkommazahlen verwenden, und daher ist die Unterstützung von Doppelberechnungen ausdrücklich erforderlich.
Bisher war es möglich, OpenCL ohne Double zu aktivieren, aber das war nicht sinnvoll.
Jetzt schränken wir sie ausdrücklich ein.
Ich habe ähnliche Fehler, aber vor einem Jahr funktionierte es auf einem schwächeren Tablet problemlos.
Und jetzt funktioniert auch das nicht mehr:mit den Parametern: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - Ergebnis: -1 mit Fehlercode: 5115
mit den Parametern: 0, 1 - Ergebnis ist positiv
Es ist sehr merkwürdig, dass Atom den gleichen Fehler bei der Verdopplung produziert.
Wir werden das überprüfen müssen.
Dass Atom die gleiche Fehlermeldung über die Verdoppelung ausgibt, ist sehr seltsam.
Es unterstützt auch nicht das Doppelte.
Es ist an sich schon seltsam, eine solche Unterstützung durch das Terminal zu verlangen... Meine .cl-Datei hat überhaupt kein Double und ich verwende OpenCL nicht für präzise wissenschaftliche Berechnungen.
Außerdem handelt es sich nicht um einen alten Atom-Prozessor, sondern um einen modernen mit einer separaten GPU
Ihre Karte unterstützt keine Doppelzählung
Fragen wir das Gerät selbst:
Die Antwort des Tanks:
OpenCL-Gerät ext: cl_intel_accelerator cl_intel_advanced_motion_estimation cl_intel_ctz cl_intel_d3d11_nv12_media_sharing cl_intel_dx9_media_sharing cl_intel_motion_estimation cl_intel_simultaneous_sharing cl_intel_subgroups cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_gl_depth_images cl_khr_gl_event cl_khr_gl_msaa_sharing cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
Es gibt in der Tat keine Unterstützung für cl_khr_fp64
Ich kann das offizielle Datenblattder Intel HD Graphics 4400 mit Informationen über die fehlende doppelte Genauigkeit im Netz nicht finden, um sicherzugehen, dass es sich nicht um ein Treiberproblem handelt.
Der einzige Weg, um festzustellen, ob eine Grafikkarte FP64 hat, ist, Lefty-Benchmarks zu verwenden:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_HD-Graphics-4400
Übrigens scheint auch der Grafik-Coprozessor von Renata keine FP64-Unterstützung zu haben:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_UHD-Graphics-630
Renat, können Sie mein obiges Skript ausführen, um festzustellen, ob Ihr IGP doppelte Genauigkeit unterstützt?
Wenn ja, dann wird klar, warum Ihr Leistungstest erfolgreich war.
Vielleicht versuchen Sie dann die Option der Konvertierung mqlrates Arrays zu int auf CPU vor dem Senden an OpenCL, multipliziert sie mit Digits. Der Speicherverbrauch wird halbiert. Spielen Sie danach mit Vektoren oder versuchen Sie, bei der Verwendung von Fließkommazahlen keine Fehler zu machen. Im Prinzip sollte die Genauigkeit der Ziffern+1-Indikatoren mehr als ausreichend sein.
Datetime kann auch leicht in int umgewandelt werden, wenn 1440 Minuten im Tag in den ersten 12 Bits (oder in den ersten 2 Bytes) und die Tage in den hohen Bits sind. Der Geschwindigkeitsgewinn von int gegenüber double sollte ausreichen, um den Overhead von iTime-ähnlichen Funktionen in Kerneln zu decken.