Classe permettant de travailler avec les programmes OpenCL

La classe COpenCL est un wrapper facilitant le travail avec les fonctions OpenCL. Dans certains cas, l'utilisation de la GPU permet d'améliorer de façon substantielle la vitesse de calculs.

Des exemples d'utilisation de la classe pour des calculs basés sur des valeurs flottantes et doubles sont disponibles dans les répertoires correspondants du répertoire MQL5\Scripts\Examples\OpenCL\. Le code sources des programmes OpenCL sont situés dans les répertoires MQL5\Scripts\Examples\OpenCL\Double\Kernels et MQL5\Scripts\Examples\OpenCL\Float\Kernels.

  • MatrixMult.mq5 - exemple de multiplication de matrices utilisant la mémoire globale et la mémoire locale
  • BitonicSort.mq5 - exemple de tri en parallèle des éléments d'un tableau dans la GPU
  • FFT.mq5 - exemple de calcul de la transformation de Fourier rapide
  • Wavelet.mq5 - exemple de transformation en ondelettes de données utilisant l'ondelette de Morlet.

Il est recommandé d'écrire le code source OpenCL dans des fichiers CL séparés, pouvant être par la suite inclus dans le programme MQL5 en utilisant des variables de ressource.

Déclaration

   class COpenCL

Titre

   #include <OpenCL\OpenCL.mqh>

Méthode de la classe

Nom

Description

BufferCreate

Crée un buffer OpenCL à l'indice spécifié

BufferFree

Supprime le buffer à l'indice spécifié

BufferFromArray

Crée un buffer à l'indice spécifié à partir d'un tableau de valeurs

BufferRead

Lit un buffer OpenCL à l'indice spécifié dans un tableau

BufferWrite

Ecrit un tableau de valeurs dans le buffer à l'indice spécifié

Execute

Exécute le noyau OpenCL à l'indice spécifié

GetContext

Retourne le handle du contexte OpenCL

GetKernel

Retourne le handle de l'objet noyau à l'indice spécifié

GetKernelName

Retourne le nom de l'objet noyau à l'indice spécifié

GetProgram

Retourne le handle du programme OpenCL

Initialize

Initialise le programme OpenCL

KernelCreate

Crée un point d'entrée dans le programme OpenCL à l'indice spécifié

KernelFree

Supprime une fonction de démarrage OpenCL à l'indice spécifié

SetArgument

Définit un paramètre pour la fonction OpenCL à l'indice spécifié

SetArgumentBuffer

Définit un buffer OpenCL comme paramètre de la fonction OpenCL à l'indice spécifié

SetArgumentLocalMemory

Définit un paramètre dans la mémoire locale pour la fonction OpenCL à l'indice spécifié

SetBuffersCount

Définit le nombre de buffers

SetKernelsCount

Définit le nombre d'objets noyaux

Shutdown

Décharge le programme OpenCL

SupportDouble

Vérifie si les types de données à virgule flottante sont supportés sur le périphérique