- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
Arbeit mit OpenCL
Programme auf OpenCLsind entwickelt, um Berechnungen auf Grafikkarten mit Unterstützung für OpenCL 1.1 oder höher auszuführen. Moderne Grafikkarten enthalten hunderte von kleinen, spezialisierten Prozessoren, die gleichzeitig einfache mathematische Operationen auf eingehenden Datenströme ausführen können. Die Sprache OpenCL übernimmt die Organisation der Parallel-Computing und ermöglicht eine hohe Geschwindigkeit für eine bestimmte Klasse von Aufgaben.
Bei einigen Grafikkarten ist der Modus der Arbeit mit double-Zahlen deaktiviert, das zum Kompilierung-Fehler 5105 führen kann. Um Unterstützung von double-Zahlen zu aktivieren, fügen Sie eine Direktive #pragma OPENCL EXTENSION cl_khr_fp64 : enable in den Text des OpenCL-Programms hinzu. Aber wenn die Grafikkarte den double-Typ nicht unterstützt, die Einbeziehung dieser Direktive wird nicht helfen.
Es ist zu empfehlen, den OpenCL-Code in separaten CL-Dateien zu schreiben, die man später mithilfe von Ressourcenvariablen einem MQL5-Programm hinzufügen kann.
Behandlung von Fehlern in OpenCL-Programmen
Um Informationen über den letzten Fehler in einem OpenCL-Programm zu erhalten, verwenden Sie die Funktionen CLGetInfoInteger und CLGetInfoString, die es ermöglichen, den Fehlercode und die Textbeschreibung zu erhalten.
Der letzte Fehler von: Um den letzten OpenCL-Fehler zu erhalten, rufen Sie CLGetInfoInteger auf, wobei der Parameter handle ignoriert wird (kann auf Null gesetzt werden). Fehlerbeschreibung: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
Bei einem unbekannten Fehlercode wird die Zeichenkette "unbekannter OpenCL-Fehler N" zurückgegeben, wobei N der Fehlercode ist. Beispiel:
//--- der erste Parameter „handle“ wird ignoriert, wenn man den letzten Fehlercode abruft
|
Textbeschreibung des OpenCL-Fehlers: Um den letzten OpenCL-Fehler zu erhalten, rufen Sie CLGetInfoString auf. Der Fehlercode sollte über den Parameter handle übergeben werden.
Fehlerbeschreibung: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Wenn CL_LAST_ERROR anstelle des Fehlercodes übergeben wird, dann gibt die Funktion die Beschreibung des letzten Fehlers zurück. Zum Beispiel:
//--- liefert den Code des letzten OpenCL-Fehlers
|
Bislang wird der Name der internen Enumeration als Fehlerbeschreibung angegeben. Ihre Dekodierung finden Sie hier: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Der Wert CL_INVALID_KERNEL_ARGS bedeutet zum Beispiel "Wird beim Enqueuing eines Kernels zurückgegeben, wenn einige Kernel-Argumente nicht gesetzt oder ungültig sind."
Funktionen zum Ausführen von Programmen auf OpenCL:
Funktion |
Aktion |
---|---|
Gibt den Typ des OpenCL-Handles als ein Wert aus Enumeration ENUM_OPENCL_HANDLE_TYPE zurück |
|
Gibt den Wer des ganzzahligen Eigenschafts für ein OpenCL-Objekt oder Gerät zurück |
|
Erstellt einen Kontext für OpenCL |
|
Löscht den Kontext von OpenCL |
|
Erhielt die Geräteeigenschaft aus dem OpenCL-Treiber |
|
Erstellt ein OpenCL-Programm aus dem Quellcode |
|
Löscht das OpenCL-Programm |
|
Erstellt eine Funktion des Starts von OpenCL |
|
Löscht die Funktion des Starts von OpenCL |
|
Setzt den Parameter für die OpenCL-Funktion |
|
Setzt einen OpenCL-Puffer als ein Parameter der OpenCL-Funktion |
|
Setzt den lokalen Puffer als Argument der kernel-Funktion |
|
Erstellt einen OpenCL-Puffer |
|
Löscht einen OpenCL-Puffer |
|
Schreibt ein Array in einen OpenCL-Puffer |
|
Liest einen OpenCL-Puffer in ein Array |
|
Führt das OpenCL-Programm aus |
|
Gibt den Ausführungsstatus eines OpenCL Programms zurück |
Sehen Sie auch