Diskussion zum Artikel "Wie Sie OpenCl öffnen und für Kalkulationen verwenden." - Seite 6

 

Kann jemand ein Update, um RX 580 / 570 enthalten haben?

Ich habe beide Karten, aber nicht über das Kochbuch für detaillierte Anweisungen, um diese Karten zu nutzen.

Sehr schätzen es.

 
Derzeit versuche ich OpenCL auf einer GTX1070 zum Laufen zu bringen, aber Metatrader erwähnt weder die Hardware noch kann ich sie irgendwo aktivieren. Wie sollte es mit dem aktuellen MT5 aussehen?
 
hao xue:

Kann jemand ein Update, um RX 580 / 570 enthalten haben?

Ich habe beide Karten, aber nicht über das Kochbuch für detaillierte Anweisungen, um diese Karten zu nutzen.

Sehr schätzen es.

Ich weiß nicht, warum Terminal die rx580 nicht erkennt, aber opencl funktioniert. Sie können diesen Code ausprobieren:

void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- OpenCL-Kontext initialisieren 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Allgemeine Informationen zum OpenCL-Gerät anzeigen 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

Hallo an alle


Ich habe versucht, den Code auf lensflare auf einem Computer mit einem AMD 530 und einem anderen mit einem NVIDEA gtx 1060, aber ohne Erfolg. Mein EA meldet ein 0 unterstütztes Gerät. Hatte jemand das gleiche Problem? Vielen Dank!


void OnStart()
  {
//---
   Print("TERMINAL_OPENCL_SUPPORT = ",TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT));
   
   int cl_ctx; 
//--- OpenCL-Kontext initialisieren 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE) 
     { 
      Print("OpenCL not found"); 
      return; 
     } 
//--- Allgemeine Informationen zum OpenCL-Gerät anzeigen 
   Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE))); 
   Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID)); 
   Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS)); 
   Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz"); 
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes"); 
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes"); 

  }
 

Wie kann ich auswählen, welcher openCL-Prozessor verwendet werden soll?
Es scheint, dass ich CPU + Nvidia + Intel habe, und laut Hauptseite, dass die Intel GPU schneller ist.

Auch, weil meine Nvidia ein wenig laufen, und dann stürzt ab, wenn ich versuche, die EA zu beenden.

 

>Um die Vorteile der Verwendung von OpenCL in MQL5 zu demonstrieren, wurde das Skript OpenCL_Sample.mq5 geschrieben, das die Werte einer Funktion aus zwei Variablen auf einer Menge berechnet und das Ergebnis im Diagrammfenster mit einem grafischen Label (OBJ_BITMAP_LABEL) anzeigt.

Das Beispiel ist interessant, aber verblüffend nutzlos.....

Kann jemand ein Beispiel für die Optimierung eines Standard-Expert Advisors auf OpenCL .... machen?

Im Allgemeinen denke ich, dass der Artikel nichts taugt, die ganze Welt bewegt sich in Richtung Frameworks (wie CNTK), ein Entwickler für MQL5 sollte Code in MQL5 schreiben, nicht in OpenCL/CUDA, und die Kerne (CU) aller Videokarten sollten in der Liste der verfügbaren Kerne für die Optimierung einfach als normale Kerne sichtbar sein und das war's.

Ich denke schon ...

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BITMAP_LABEL
  • www.mql5.com
//| Создает объект "Графическая метка"                               |               chart_ID=0,                               sub_window=0,                             x=0,                                      y=0,                                      width=0,                                  height=0,                 ...
 
Boris Egorov:

MQL5-Entwickler sollten Code in MQL5 schreiben, nicht in OpenCL/CUDA, und die Kerne (CU) aller Grafikkarten sollten in der Liste der verfügbaren Kerne für die Optimierung als normale Kerne sichtbar sein, und das ist alles

Ich denke schon ...

denn wenn Sie die Möglichkeit hätten, Code in MQL5 zu schreiben und Aufgaben auf der GPU zu berechnen, warum machen Sie dann so einen Lärm?

Eine andere Frage ist, dass Sie nicht wissen, welche Aufgaben auf der GPU gelöst werden können und welche nicht.

Hier ist ein guter Artikel, ich habe ihn selbst Anfang des Jahres gelesen https://habr.com/ru/company/combox/blog/425731/.

Wenn Sie in der Lage sind, eine Optimierungsaufgabe zu parallelisieren, dann verwenden Sie GPU.

 
Igor Makanu:

als ob es möglich wäre, Code in MQL5 zu schreiben und Aufgaben auf GPU zu berechnen


genau wie in Python/# zu berechnen.

Es gibt kein OpenCL, es gibt eine Framework-Verbindung, Sie sagen einfach, was es zu berechnen, so persönlich ist es einfacher für mich, eine Farm von GPU als auf CPU zu bauen.

 
Boris Egorov:

so wie es in Python/# gemacht wird.

es gibt dort kein OpenCL, es ist eine Rahmenverbindung

alles ist korrekt und das Framework ist für GPU-Aufgaben angepasst, ich habe Tensorflow auf diese Weise getestet.


dann ist die Frage nicht an MQL5, sondern an die Ersteller von Frameworks für MQL5 - leider gibt es sie (Frameworks) nicht, ich leide selbst darunter,

oder besser gesagt, es gibt nur ein paar - alglib in SB und viele Artikel über die Integration mit Fremdsprachen.

d.h. wie Entwickler schreiben - schreiben Sie es selbst, es gibt keine vorgefertigten Lösungen.

 
Igor Makanu:

Alles ist korrekt und das Framework ist für GPU-Aufgaben angepasst, ich habe Tensorflow auf diese Weise getestet.


dann ist die Frage nicht an MQL5, sondern an die Schöpfer von Frameworks für MQL5 - leider gibt es sie (Frameworks) nicht, ich leide selbst darunter,

oder besser gesagt, es gibt nur ein paar - alglib in SB und eine Menge Artikel über die Integration mit Fremdsprachen.

d.h. wie Entwickler schreiben - schreiben Sie es selbst, es gibt keine vorgefertigten Lösungen.

Das ist nicht ganz so.

Die Entwickler sind gut und haben viel getan, sie haben Fuzzy, Alglib, python implementiert, aber die Frage ist warum? Warum haben sie so viel wertvolle Zeit von coolen Entwicklern damit verbracht, all das zu implementieren, weil sie in Wirklichkeit keinen Nutzen haben.

Natürlich sprechen wir über neuronale Netze, Alglib ist ein extrem begrenztes Framework und wenn ich mich nicht irre, ist es unmöglich, ein normales neuronales Netz darauf zu erstellen, selbst in der Theorie.

Ich bin auch nicht glücklich über Python ... Stellen Sie sich vor, wie Sie die Logik des EA in eine völlig andere Sprache übertragen .... und dann wieder zurück .... auf keinen Fall richtig ... und was ist der Sinn dieser Hämorrhoiden.

daher war es notwendig, entweder cntk oder tenzorflow von Anfang an zu implementieren ... dann braucht man keinen Standard-Optimierer, man braucht keinen genetischen Algorithmus und man kann ohne Probleme auf der GPU rechnen ...