MetaTrader 5 Python User Group - wie man Python in Metatrader verwendet - Seite 25
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
Wie haben Sie den OpenCL-Teil des Codes debuggt?
Renat, könnten Sie bitte einige Hinweise darauf geben, wann OpenCL bei der Arbeit mit einer großen Anzahl von Arrays oder bei einem großen Satz von Symbolen und Indikatoren in einem EA von Vorteil wäre?
Wenn man Millionen von Arrays ohne Vernetzung aufbauen kann und diese parallel analysiert werden können, kann man die Geschwindigkeit erhöhen.
Im Allgemeinen wird jeder, der seine Aufgaben löst und ihre Grenzen versteht, seine Frage leicht beantworten können. Solange es kein Verständnis für die Grenzen gibt (und es nur Träume von "was wäre wenn" gibt),die ständig unter dem Druck der zu lösenden Aufgaben stehen, bleibt die Parallelität nur eine coole Idee.
Die meisten Aufgaben können leider nicht effektiv parallelisiert werden.
Wenn Sie Millionen von Arrays ohne Querverbindungen erstellen können, die parallel analysiert werden können, können Sie die Geschwindigkeit erhöhen.
Im Allgemeinen wird jemand, der seine Aufgaben löst und ihre Grenzen versteht, seine Frage leicht beantworten. Solange es kein Verständnis für die Grenzen gibt (und es gibt nur Träume "was wäre wenn"), die ständig mit dem Lösen von Tearing-Aufgaben verbunden sind, bleibt Parallelität nur eine coole Idee.
Die meisten Aufgaben können leider nicht effektiv parallelisiert werden.
Ich erinnere mich an die Tatsache, dass es bei Berechnungen begleitende Momente gibt, deshalb kam mir die Frage in den Sinn
Durch Ausführen und Aufheben der Grundierung der Ergebnisse.
Ist es möglich, einen Primer in OpenCL-Code zu integrieren?
Grob gesagt über OpenCL
Man kann sich vorstellen, dass es einen Prozessor mit großen (Vektor-)Registern gibt, in die einzelne N Doppelwerte geschrieben werden können (z.B. N=64, dann können 64 Werte in das Register geschrieben werden).
Solche Register können miteinander addiert, multipliziert usw. werden, d.h. mit einer Anweisung kann man eine Operation an N Tabellen durchführen.
Aber es gibt Grenzen.
Es ist nicht möglich, mit Werten in einem Register zu arbeiten, d.h. es ist z.B. nicht möglich, einen Teil der Werte eines Registers untereinander zu addieren.
In Bezug auf die Frequenz ist ein solcher Prozessor einer normalen CPU stark unterlegen, weshalb es keinen Sinn macht, ihn für Aufgaben zu verwenden, bei denen die sequentielle Verarbeitung eines Wertes erforderlich ist.
Neben der niedrigeren Frequenz gibt es auch eine Speicherbeschränkung, Werte können nur aus dem speziellen Speicher geladen und entladen werden.
Es ist möglich, Daten aus dem RAM in diesen speziellen Speicher zu kopieren, allerdings nur über einen sehr schmalen (langsamen) Kanal.
Daher sind Aufgaben, die große Datenmengen verarbeiten müssen, ebenfalls schlecht für OpenCL geeignet.
Ist es möglich, einen Primer in OpenCL-Code zu integrieren?
Außerhalb.
Überspringen wir die Vortragssitzung. Sie nehmen und lesen einfach alles, was von uns und allgemein im Internet über OpenCL erstellt und ausführlich beschrieben wurde.
OpenCL-Suche:
Eigentlich ist es sehr interessant, dass "opencl trading" eine Menge Google-Inhalte aus unseren Ressourcen hat:
Hier ist ein Vergleich in Python 3.8 und MQL5 im Single-Thread/OpenCL-Modus: Zeit in Sekunden, je weniger, desto besser
Python im JIT-Modus über numba, Hardware ist wie folgt:
Das Beispiel für die Verwendung von OpenCL ist sehr einfach, und es gibt keinen Schnickschnack bei seiner Optimierung. Obwohl die Aufgabe für OpenCL nicht sehr umfangreich ist und bei der Vorbereitung einen Overhead verursacht hat, hat sie dennoch ein viel besseres Ergebnis erzielt.
Sehr große parallele Berechnungen können routinemäßig mit OpenCL durchgeführt werden. Die Einstiegshürde ist nicht hoch, und es dauert nur einen Tag, um herauszufinden, wie man es benutzt.
Dateien für die Wiedergabe sind beigefügt.
Es scheint, dass dieses Problem der PI-Berechnung in OpenCL bereits vor 7 Jahren gelöst wurde:
Hat jemand einen direkten Link zu dem, was heruntergeladen werden muss? Bei Intel ist eine Registrierung erforderlich.
HI Auf Intel GPU in CPU habe ich die Video-Adapter-Treiber zu grok, dann installiert Intel_OpenCL_driver, dann legte die Video-Adapter-Treiber. Auf diese Weise funktioniert alles und das Video wird nicht langsamer.
Vict:
Ich befürchte, dass die aktive Nutzung dieser Funktion den Start in eine mehrminütige Suche verwandeln wird.
Sie können das Caching nicht aktivieren.
Hier ist ein Vergleich in Python 3.8 und MQL5 im Single-Thread/OpenCL-Modus: Zeit in Sekunden, je weniger, desto besser
Python im JIT-Modus über numba, Hardware ist wie folgt:
Im Multithreading-Modus vergleichen Sie die Leistung von CPU und GPU in 10000 Threads. Die GPU ist nicht an Python beteiligt.
Wenn ich einen Computer mit einer geeigneten Grafikkarte finde, werde ich den Python-Code korrigieren und ihn auf diesem Computer testen. Ich werde versuchen, Ihren Code auf CPU laufen zu lassen, ich dachte, GPU ist erforderlich.
Es ist nicht meine Absicht, zu beweisen, wer schneller ist. Interessanter wäre es, mehr über Ihre Pläne zur Integration von Python zu erfahren.
Planen Sie irgendwelche Handelsfunktionen und Tick-Events in Python?
Die GPU scheint jedoch obligatorisch zu sein, das "AMD APP SDK" ist nicht herunterladbar.
Grob gesagt über OpenCL
Wir können uns vorstellen, dass es einen Prozessor mit großen (Vektor-)Registern gibt, in die wir einzelne N Doppelwerte schreiben können (z.B. sei N=64, dann können 64 Werte in das Register geschrieben werden).
Solche Register können miteinander addiert, multipliziert usw. werden, d.h. mit einer Anweisung kann man eine Operation an N Tabellen durchführen.
Aber es gibt Grenzen.
Es ist nicht möglich, mit Werten in einem Register zu arbeiten, d.h. es ist z.B. nicht möglich, einen Teil der Werte eines Registers untereinander zu addieren.
In Bezug auf die Frequenz ist ein solcher Prozessor einer normalen CPU stark unterlegen, weshalb es keinen Sinn macht, ihn für Aufgaben zu verwenden, bei denen die sequentielle Verarbeitung eines Wertes erforderlich ist.
Neben der niedrigeren Frequenz gibt es auch eine Speicherbeschränkung, Werte können nur aus dem speziellen Speicher geladen und entladen werden.
Es ist möglich, Daten aus dem RAM in diesen speziellen Speicher zu kopieren, allerdings nur über einen sehr schmalen (langsamen) Kanal.
Daher sind Aufgaben, die große Datenmengen verarbeiten müssen, ebenfalls schlecht für OpenCL geeignet.
Im Beispiel der PI-Berechnung gibt es keine Vektoren. Es teilt die Gesamtsumme einfach in mehrere unabhängige Chunks auf und sendet sie an jeden OpenCL-Kern. Am Ende wird alles zusammengezählt.
Wenn beispielsweise keine diskrete Grafikkarte vorhanden ist und die CPU über 4 physische + 4 virtuelle Kerne verfügt, wird die Ausführung achtmal schneller sein. Das heißt, dass Teile der Summe auf jedem Kern parallel gezählt werden.