Klasse für das Arbeiten mit OpenCL Programmen

Die Klasse COpenCL ist ein Wrapper ("Umhüllung") für das Arbeiten mit OpenCL Funktionen. Die Verwendung von GPU erlaubt es, in einigen Fällen die Geschwindigkeit der Berechnungen wesentlich zu erhöhen.

Beispiele für die Verwendung der Klasse für Berechnungen anhand der Zahlen float und double kann man im Ordner MQL5\Scripts\Examples\OpenCL\ in den entsprechenden Unterverzeichnissen finden, Quellcodes der OpenCL-Programme sind in den Unterverzeichnissen MQL5\Scripts\Examples\OpenCL\Double\Kernels und MQL5\Scripts\Examples\OpenCL\Float\Kernels zu finden.

  • MatrixMult.mq5 - ein Beispiel für die Multiplikation von Matrizes unter Verwendung des globalen und lokalen Speichers
  • BitonicSort.mq5 - ein Beispiel für eine parallele Sortierung von Elementen eines Arrays auf GPU
  • FFT.mq5 - ein Beispiel für die Berechnung schneller Fourier-Transformation
  • Wavelet.mq5 - ein Beispiel für die Berechnung der Wavelet-Transformation mithilfe von Morlet-Wavelet.

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.

Deklaration

   class COpenCL

Überschrift

   #include <OpenCL\COpenCL.mqh>

Methoden der Klasse

Name

Beschreibung

BufferCreate

Erstellt einen OpenCL Puffer nach dem angegebenen Index

BufferFree

Löscht einen Puffer nach dem angegebenen Index

BufferFromArray

Erstellt einen Puffer nach dem angegebenen Index aus dem Array von Werten

BufferRead

Liest einen OpenCL Puffer nach dem angegebenen Index ins Array

BufferWrite

Schreibt ein Array von Daten in den Puffer nach dem angegebenen Index

Execute

Führt ein OpenCL Programm nach dem angegebenen Index aus

GetContext

Gibt den Handle des OpenCL Kontextes zurück

GetKernel

Gibt den Handle eines Kernel-Objekts nach dem angegebenen Index zurück

GetKernelName

Gibt den Namen eines Kernel-Objekts nach dem angegebenen Index zurück

GetProgram

Gibt den Handle des OpenCL-Programms zurück

Initialize

Initialisiert ein OpenCL Programm

KernelCreate

Erstellt den Einsprungpunkt eines OpenCL Programm nach dem angegebenen Index

KernelFree

Löscht die Startfunktion von OpenCL nach dem angegebenen Index

SetArgument

Setzt einen Parameter für eine OpenCL Funktion nach dem angegebenen Index

SetArgumentBuffer

Setzt einen OpenCL Puffer als Parameter einer OpenCL Funktion nach dem angegebenen Index

SetArgumentLocalMemory

Setzt einen Parameter im lokalen Speicher für eine OpenCL Funktion nach dem angegebenen Index

SetBuffersCount

Setzt die Anzahl von Puffern

SetKernelsCount

Setzt die Anzahl von Kernel-Objekten

Shutdown

Entfernt ein OpenCL Programm aus dem Speicher

SupportDouble

Ermittelt, ob reelle Datentypen auf dem Gerät unterstützt werden