Asynchrone und mehrfädige Programmierung in MQL - Seite 23

 
Maxim Romanov:
Erklären Sie mir, was an opencl falsch ist. Das Terminal bietet die Möglichkeit, opencl-Code zu schreiben, und das ist Multithreading. Ich möchte für mich selbst verstehen, was die Unterschiede zwischen dem hier beschriebenen Multithreading und dieser Funktion sind.
Nun, oder wer weiß, erklären Sie es mir, damit ich es verstehen kann.

Es gibt keine Videokarten auf VPS-Servern, oder es ist sehr unrentabel, wenn sie sind ))
Auch die meisten Benutzer auf lokalen, Grafikkarten nicht unterstützen opencl))
Ganz zu schweigen von der Komplexität, richtigen Code für opencl zu schreiben.
Ja, es gibt eine Möglichkeit, aber nur für einen sehr kleinen Personenkreis.

 
Roman:

Videokarten sind auf VPS-Servern nicht verfügbar, oder sehr unrentabel, wenn sie verfügbar sind ))
Selbst die meisten Benutzer eines lokalen Standorts unterstützen opencl nicht))
Ganz zu schweigen von der Komplexität, richtigen Code für opencl zu schreiben.
Die Option gibt es, aber nur für einen sehr kleinen Kreis von Menschen.

Auf einem Prozessor funktioniert auch opencl. Sie wählen einfach das Gerät aus, das den Code ausführen soll. Das gilt nicht nur für die Grafikkartentechnologie. Ich weiß, dass es bei Servern Probleme mit Videokarten gibt.
 
Maxim Romanov:
Auf einem opencl-Prozessor funktioniert es auch. Sie wählen einfach das Gerät aus, das den Code ausführen soll. Es geht nicht nur um die Technologie der Grafikkarte. Ich weiß, dass es bei Servern Probleme mit Videokarten gibt.

Aber ich wusste nicht, dass opencl auch auf CPUs funktioniert. Ich kann immer noch nicht zu Renats Artikel gelangen, um über opencl zu lesen.
Ich las einen Beitrag über opencl hier auch, aber ich kann nicht alle Programmierer auf opencl, native Methoden von Aufgaben aus der Box sehen mehr brauchbar.
Funktioniert opencl also auf jedem Prozessor? Oder kommt es auch auf das Modell an?

 
Roman:

Aber ich wusste nicht, dass opencl auch auf Prozessoren funktioniert. Ich kann immer noch nicht zu Renats Artikel gelangen, um über opencl zu lesen.
Ich habe hier auch einen Beitrag über opencl gelesen, aber man kann nicht alle Programmierer auf opencl ansetzen, die Standardmethoden von Aufgaben aus der Box sehen brauchbarer aus.
Funktioniert opencl also auf jedem Prozessor? Oder kommt es auch auf das Modell an?

Ja, es scheint sowohl mit Intel- als auch mit amd-Prozessoren zu funktionieren, man muss nur die Treiber installieren. Ich habe es bei amd ausprobiert und es hat funktioniert.
 
Maxim Romanov:
Es scheint, dass ja, sollte es auf Intel und amd arbeiten, müssen Sie nur Treiber zu installieren. Ich habe es bei amd ausprobiert und es hat funktioniert.

Es stellt sich heraus, dass trotzdem ein gewisser Grad an Abhängigkeit entweder vom Prozessormodell oder von den Treibern besteht.
Dies ist möglicherweise nicht für alle geeignet, zum Beispiel für diejenigen, die ihre Arbeit vertreiben (verkaufen).
Es gibt Leute, die sich um die Portabilität des Programms kümmern, meiner Meinung nach ist das auch ein wichtiger Parameter.

Kann opencl mit benutzerdefinierten DLLs arbeiten?
d.h. asynchroner Aufruf exportierter Funktionen aus der DLL?
Wenn wir eine Standardklasse für die Arbeit mit Aufgaben hätten, könnten wir unsere eigenen Funktionen asynchron aus der DLL aufrufen.
Das heißt, die reguläre Funktionalität ist viel besser nutzbar und beim Schreiben von Code leichter zugänglich.

 

Schade, dass wir noch nichts vom Leiter der Verkehrsabteilung gehört haben - für welche konkrete Aufgabe wollen Sie Multi-Threading einsetzen? Zeichnen Sie ein einfaches Blockdiagramm der vorgeschlagenen Lösung.

Sie versuchen hartnäckig, eine MKL-Aufgabe hineinzuzwängen, für die sie ursprünglich nicht vorgesehen war. Mit einem Wort, überhaupt nicht. Es gibt fertige Lösungen - schauen Sie sich ZeroMQ an, das über eine API für fast alle JDs verfügt. Darüber hinaus hat der freundliche Ding Li eine Bibliothek für ZeroMQ mit MQL4/5 mit einer Reihe von Beispielen entwickelt. Bitte lesen Sie den Forumsbeitrag zu diesem Thema mit praktischen Codebeispielen.

Warum drückst du (der Themenstarter) Wasser in einen Topf? Oder sind Sie auch an den Markt gebunden?

Viel Glück!

Interesting Whitepapers - zeromq
  • zeromq.org
Unlike other (centralised) messaging systems which are based on the well-understood theoretical foundation, there are almost no resources regarding distributed messaging in general and ØMQ in particular that an interested reader can be pointed to. The goal of this paper is to explain the elementary concepts of ØMQ architecture, how they fit...
 
Roman:

Weiß opencl, wie man mit benutzerdefinierten DLLs arbeitet?
D.h. asynchroner Aufruf von exportierten Funktionen aus der dll ?
Es gab eine eigene Klasse für die Arbeit mit Tasks, und Sie konnten Ihre Funktionen aus der DLL auch asynchron aufrufen.
Das heißt, die reguläre Funktionalität ist viel besser nutzbar und beim Schreiben von Code leichter zugänglich.

Rufen Sie die DLL-Funktion auf. Sie erstellen einen Thread in der DLL und übertragen Daten an ihn, trennen den Thread und vergessen ihn - er wird nach Abschluss seiner Aufgabe von selbst beendet. Wenn Sie den Thread in der DLL abschalten, wird der Terminal-Thread freigegeben. Der gesamte Vorgang dauert, glaube ich, weniger als eine Millisekunde. Nach der Tatsache zu urteilen, dass der Prozess des Schreibens in die Datenbank auch ohne Unterbrechung des Threads 4-5 ms dauert. Nun, und 60 Ticks/Min. sind genug, um nicht über asynchrone Aufrufe vom Terminal traurig zu sein.

 
Vladimir Perervenko:

Schade, dass wir noch nichts vom Leiter der Verkehrsabteilung gehört haben - für welche konkrete Aufgabe wollen Sie Multi-Threading einsetzen? Zeichnen Sie ein einfaches Blockdiagramm der vorgeschlagenen Lösung.

Sie versuchen hartnäckig, eine MKL-Aufgabe hineinzuzwängen, für die sie ursprünglich nicht vorgesehen war. Mit einem Wort, überhaupt nicht. Es gibt fertige Lösungen - schauen Sie sich ZeroMQ an, das über eine API für fast alle JDs verfügt. Darüber hinaus hat der freundliche Ding Li eine Bibliothek für ZeroMQ mit MQL4/5 und einer Reihe von Beispielen entwickelt. Bitte lesen Sie den Forumsbeitrag zu diesem Thema mit praktischen Codebeispielen.

Warum drückst du (der Themenstarter) Wasser in einen Topf? Oder sind Sie auch an den Markt gebunden?

Viel Glück!

Ich versuche, keine Lösungen von Drittanbietern zu verwenden.
Ich habe bereits eine Lösung für mein Netzwerkproblem gefunden, also muss ich sie nur noch studieren, anwenden und mir nicht das Hirn zermartern.
Aber es gibt auch Programmierer, die nicht blockierende Aufrufe und Asynchronität benötigen.
Deshalb habe ich vorgeschlagen, diese Funktion in die Standardsprachlieferung zu integrieren. Und es liegt an den Entwicklern, die Hauptsache ist die Idee, und die ist vernünftig.
Warum glauben Sie, dass das Terminal nicht für die Implementierung von EventLoop ausgelegt ist? Vor allem von Anfang an...
Welcher Algorithmus wird zur Ausführung lokaler Agenten verwendet? Wahrscheinlich in einem Thread-Pool, richtig? Wer verwaltet sie, wer verteilt die Aufgaben?
Das Terminal verfügt also bereits über einen solchen Algorithmus, warum sollte man ihn nicht nutzen, um seine Funktionalität zu erweitern?
Geben Sie Programmierern einen asynchronen Modus zum Schreiben von Code.
Ich bin für die Idee, wenn niemand es asynchron braucht, nun, was soll ich sagen, ich bedaure nur, dass viele in einem Thread feststecken.


 
Yuriy Asaulenko:

Rufen Sie die DLL-Funktion auf. Sie erstellen einen Thread in der DLL und übertragen Daten an ihn, trennen den Thread und vergessen ihn - er wird nach Abschluss seiner Aufgabe von selbst beendet. Wenn Sie den Thread in der DLL abschalten, wird der Terminal-Thread freigegeben. Der gesamte Vorgang dauert, glaube ich, weniger als eine Millisekunde. Nach der Tatsache zu urteilen, dass der Prozess des Schreibens in die Datenbank auch ohne Unterbrechung des Threads 4-5 ms dauert. Nun, 60 Ticks/s sind genug, um über den asynchronen Aufruf vom Terminal aus nicht traurig zu sein.

Hier, danke für eine andere Idee, ich kann dll nach lokalen Artikeln schreiben, aber leider beschreiben sie nicht Einstiegspunkt Verfahren, Initialisierung,Speicherzuweisung, Thread-Erstellung, etc.
Ich kann keine Literatur zu diesem Thema finden, ich kann nicht herausfinden, wie man den Einstiegspunkt richtig behandelt. Wenn Sie irgendwelche Informationen zu diesem Thema haben, lassen Sie es mich bitte wissen.
Wenn Sie mir etwas beibringen können, bin ich gerne bereit, das Wissen anzunehmen.
Ich habe nicht studiert, wie ein Programmierer, alles, was ich selbst lernen, also nicht treten mich langweilen ))

 
Maxim Romanov:
Erklären Sie mir, was an opencl falsch ist. Das Terminal bietet die Möglichkeit, opencl-Code zu schreiben, und das ist Multithreading. Ich möchte für mich selbst verstehen, was die Unterschiede zwischen dem hier beschriebenen Multithreading und dieser Funktion sind.
Nun, oder wer weiß, erklären Sie es mir, damit ich es verstehen kann.
Um ehrlich zu sein, hat opencl ihn nicht aufmerksam studiert. Ich habe eine gewisse Abhängigkeit von dieser Lösung festgestellt und war nicht mehr daran interessiert. Mir kam der Gedanke, dass ich Drähte von einem Ort zum anderen ziehen und etwas anschrauben sollte. Vielleicht irre ich mich, aber ich habe hier keine Praktiker getroffen, die opencl verwenden, und es gab niemanden, der meine Vorurteile zerstören konnte. Vielleicht ändere ich meine Meinung später, wenn ich sie besser kennengelernt habe, oder umgekehrt. Auf jeden Fall ist die externe Abhängigkeit belastend, denn die Portabilität von Programmen ist für mich entscheidend.