OpenCL: Echte Herausforderungen

 

Es gibt viele Themen über OpenCL, aber die zitierten Aufgaben sind zu weit vom Handel entfernt.

Was also kann OpenCL den Händlern bieten?

Ja, ich habe OpenCL noch nicht studiert und möchte die wichtigsten Punkte lernen und klären:

  1. Handelt es sich nicht um ein separates Programm, das Eingaben empfängt und Daten ausgibt? Es gibt also überhaupt keine Interaktion von MQL?
  2. Lohnt es sich, die Array-Suche in OpenCL zu implementieren, wenn Sie nur eine Bestätigung erhalten möchten, dass eine Übereinstimmung besteht?
  3. Während der Optimierung muss jeder Thread seine eigene OpenCL-Initialisierung durchführen, und es gibt keine Möglichkeit, sich bereits mit dem aktiven Thread zu verbinden?
  4. Wird die Grafikkarte beim Optimieren nicht durch mehrere OpenCL-Threads gleichzeitig verlangsamt?
 
Roffild:

Es gibt viele Themen über OpenCL, aber die zitierten Aufgaben sind zu weit vom Handel entfernt.

Was kann OpenCL den Händlern also bieten?

Was man nehmen kann, das gibt er auch.

Ja, ich habe OpenCL noch nicht studiert und möchte die wichtigsten Punkte lernen und klären:

Lernen Sie. Das Internet wird Ihnen dabei helfen. Lassen Sie sich nicht von den Fragen im Forum, oder besser gesagt den Einstiegsfragen, mitreißen. Alle Informationen darüber, "wie es funktioniert", finden Sie im Internet und in den Artikeln im Forum. Ich, zum Beispiel, habe den Wunsch zu helfen, wenn ich sehe, dass der Mann selbst in die Studie pflügen und bereits sichtbar ein gewisses Niveau der Beherrschung des Materials. Ich will nicht zu helfen Trittbrettfahrer, die in der Haltung des "hier bin ich, lehre mich schon!", und ich will nur "rechts in das Gehirn.)

Ich werde heute eine Ausnahme machen (ich bin gut gelaunt), aber da es in der Anfangsphase offensichtlich sehr rutschig ist, werde ich "Babysprache" wahrscheinlich ignorieren und nur spezifische Programmierfragen beantworten, sofern sie nicht zu dumm sind.

1. Es handelt sich um ein separates Programm, das Eingaben empfängt und Daten ausgibt, nicht wahr? Es gibt also überhaupt keine Interaktion von MQL?

Während der Kernel-Operation gibt es keine Interaktion. Die Interaktion ist ähnlich wie bei einem Funktionsaufruf. 1: 1. Anfangsparameter einstellen, 2. Berechnung durchführen, 3. das Ergebnis übernehmen

2. Lohnt es sich überhaupt, die Array-Suche in OpenCL zu integrieren, wenn Sie nur eine Bestätigung erhalten wollen, dass eine Übereinstimmung besteht?

Ich weiß es nicht. Es hängt von der jeweiligen Aufgabe ab. Vielleicht müssen Sie das auch gar nicht. Oder vielleicht solltest du das tun. Weißt du, wo der Telepathenclub ist? :)

3. Während der Optimierung muss jeder Thread seine eigene OpenCL-Initialisierung durchführen und es gibt keine Möglichkeit, sich mit dem aktiven Thread zu verbinden?

Ich verstehe die Frage nicht ganz. Wenn Sie die Optimierung im Tester/Optimierer der Terminal-Strategien meinen, denke ich, dass es so sein muss. Ich habe nicht versucht, OPTZL über den Optimierer auszuführen. Ich habe es im Tester gemacht, aber dort ist alles konsistent und ein Kernel kann mehrfach verwendet werden, das ist ohne jede Erklärung offensichtlich.
4 Wird die Grafikkarte beim Optimieren nicht durch mehrere OpenCL-Threads gleichzeitig verlangsamt?

Ich habe nicht versucht, es in einem Optimierer laufen zu lassen, aber wenn sich mehrere Aufrufe überschneiden (ich habe damit mehrere OpenCL-Indikatoren und Expert Advisors gleichzeitig gestartet), wird es natürlich langsamer.

// Es werden keine Mittel von der Decke genommen, oder?

Wenn der Speicher der Grafikkarte überlastet ist (z.B. wenn mehrere Prozesse parallel versuchen, Arrays in den Videospeicher zu laden, die dessen Speicherkapazität überschreiten), dann kann es zu einem "Treiberabsturz" kommen - es kommt zu einem vollständigen Neustart (Reset) von Grafikkarte und Treiber, gefolgt von einer Meldung über einen Treiberabsturz. Zumindest ist dies bei meiner Karte/Treiber wiederholt passiert. Dies führt zwar nicht zu irreversiblen Schäden, aber Programme, die den Absturz verursachen, hängen in der Regel (sie müssen neu gestartet werden). Es gab schon früher Fälle von terminalem Aufhängen, aber nicht in letzter Zeit.

// Allerdings habe ich den Fahrer schon lange nicht mehr mit unbescheidenen Speicherabfragen "gerissen", ich habe ungefähr "Grenzen des Luxus" gefunden. :)

 
Roffild: Es gibt viele Threads zu OpenCL, aber die in dem Beispiel beschriebenen Aufgaben sind zu weit von einer kommerziellen Anwendung entfernt.

Es ist ganz einfach: Sie nehmen eine Aufgabe, die dem Handel nahe kommt (z. B. die Analyse des Kursverlaufs) und versuchen, sie mit OpenCL zu lösen. Nach ein paar erfolglosen Versuchen, weiterem Lesen der Literatur und neuen Versuchen wird es funktionieren, das garantiere ich. Aber nur unter der Bedingung, dass Sie in der Lage sind, die englischsprachige Literatur zu verdauen und ein bisschen Ausdauer sowie ein Mindestmaß an Grips mitbringen.

OpenCL-Treiber sind bereits recht gut optimiert, sowohl für Grafikkarten als auch für die Emulation auf Prozessoren (im letzteren Fall sind Intel-Prozessoren wahrscheinlich viel stärker). Man muss sich also sehr anstrengen, um am Ende überhaupt keine positiven Ergebnisse zu erzielen.

 
Roffild:

Was kann OpenCL den Händlern also bieten?

Zu den Punkten 1-4 wurde Ihnen bereits geantwortet, ich werde es wagen, Ihre Hauptfrage zu beantworten (natürlich ist dies nur mein Standpunkt): die große Mehrheit der Händler wird nichts von OpenCL haben, sie sollten dieses "Brot" besser den Programmierern überlassen.
 
Leute, wer mischt die Karten neu? Ist es möglich, die Lösung eines linearen Gleichungssystems auf OpenCL zu übertragen? Die Größe des Systems kann sehr groß sein und es gibt noch andere Nuancen.
 
TheXpert:
Leute, wer zaubert denn da? Ist es möglich, die Lösung eines linearen Gleichungssystems auf OpenCL zu übertragen? Die Größe des Systems kann sehr groß sein und es gibt noch andere Nuancen.

Lösen von SLAEs in OpenCL

Dies ist eine gute pdf-Datei, die Ihre Frage beantwortet.

 

Nikolai, ich danke Ihnen für Ihr Entgegenkommen. Es gibt kein CUDA und keinen Code.

Oh, ich habe vergessen, eine weitere Sache zu erwähnen - die Konstruktion der Matrix braucht mehr Zeit als ihre Lösung :) also müssen Sie die Konstruktion möglicherweise parallelisieren.

 
TheXpert:

Nikolai, ich danke Ihnen für Ihr Entgegenkommen. Es gibt kein CUDA und keinen Code.

Oh, ich habe noch eine Sache vergessen zu erwähnen - die Konstruktion der Matrix braucht mehr Zeit als ihre Lösung :) also muss ich sie vielleicht parallelisieren.

Was sind die Quelldaten? // Format, Datenstruktur

Ich meine, woraus bauen wir die Matrix auf? Aus einem Bündel von Puffern oder einem Baum? Von [...] ?

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных - Документация по MQL5
 
TheXpert:

Nikolai, ich danke Ihnen für Ihr Entgegenkommen. Es gibt kein CUDA und keinen Code.

Oh, ich habe noch etwas vergessen - die Matrix braucht mehr Zeit zum Bauen als zum Lösen :), daher kann es notwendig sein, den Bau zu parallelisieren.

Ich meinte den Plan, nicht die Umsetzung. Natürlich ist CUDA anders, aber das allgemeine Schema ist das gleiche.

Ich stimme Vladimir zu, Sie geben nicht genug Informationen, um Ihnen zu helfen.

Ich glaube nicht, dass sich noch jemand anschließen wird. Wenn Sie es also nicht öffentlich machen wollen, können Sie einen der Moderatoren unter vier Augen fragen.

 
MetaDriver:

Ich meine, woraus bauen wir die Matrix auf? Aus einer Reihe von Puffern? Aus einem Baum? Von [...] ?

Grob gesagt, gibt es einen Raum von großer Dimensionalität (10 - 1000 und mehr), für den wir das MNC-Problem lösen müssen.

Die Lösung des ANM-Problems läuft auf folgende Punkte hinaus

(1) Gleichungen von Ableitungen aufstellen

(2) durch Lösen eines Gleichungssystems aus (1)

Nun nimmt (1) den größten Teil der Lösungszeit in Anspruch. Je größer die Dimensionalität ist, desto größer ist der Bruch.

 

Parallele Algorithmen haben nur zwei Eigenschaften, die ihnen einen Vorteil gegenüber sequenziellen Algorithmen verschaffen.

Es handelt sich um den Kämmalgorithmus, bei dem jeder Zahn seinen Faden nimmt und über die gesamte Länge zieht.

Und die Pyramide rollen/abrollen. Das Abwickeln ist weniger häufig, meist ist es ein Locken.

Wenn die Problemstellung keines dieser Merkmale enthält, bringt der parallele Löser keinen Vorteil und ist aufgrund der Kosten für das Laden des Speichers oft langsamer.