- CLHandleType
- CLGetInfoInteger
- CLGetInfoString
- CLContextCreate
- CLContextFree
- CLGetDeviceInfo
- CLProgramCreate
- CLProgramFree
- CLKernelCreate
- CLKernelFree
- CLSetKernelArg
- CLSetKernelArgMem
- CLSetKernelArgMemLocal
- CLBufferCreate
- CLBufferFree
- CLBufferWrite
- CLBufferRead
- CLExecute
- CLExecutionStatus
Travailler avec OpenCL
Les programmes OpenCL qui sont utilisés pour effectuer des calculs sur les cartes vidéo prenant en charge OpenCL 1.1 ou supérieur. Les cartes vidéo modernes contiennent des centaines de petits processeurs spécialisés qui peuvent effectuer simultanément des opérations mathématiques simples avec des flux de données entrants. Le langage OpenCL prend en charge l'organisation de tels calculs parallèles et offre une plus grande vitesse pour une certaine classe de tâches.
Dans certaines cartes graphiques, travailler avec des données de type double est désactivé par défaut. Cela peut conduire à des erreurs de compilation 5105. Pour activer le support pour les données de type double, veuillez ajouter la directive suivante à votre programme OpenCL : #pragma OPENCL EXTENSION cl_khr_fp64 : enable. Toutefois, si la carte graphique ne prend pas en charge les doubles, l'activation de cette directive ne sera d'aucun effet.
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.
Gestion des erreurs dans les programmes OpenCL
Pour obtenir des informations sur la dernière erreur dans un programme OpenCL, utilisez les fonctionsCLGetInfoInteger et CLGetInfoString qui permettent l'obtention du code d'erreur et de la description textuelle.
Dernier code d'erreur OpenCL : Pour obtenir la dernière erreur OpenCL, appelez la fonction CLGetInfoInteger, le paramètre handleest ignoré (peut être égal à 0). Description des erreurs :https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
Pour un code d'erreur inconnu, la chaîne "unknown OpenCL error N" () est retournée, où N est le code d'erreur. Exemple :
//--- le premier paramètre 'handle' est ignoré lorsque l'on récupère le dernier code d'erreur
|
Description textuelle de l'erreur OpenCL : pour obtenir la dernière erreur OpenCL, appelez la fonction CLGetInfoString. Le code d'erreur doit être passé dans le paramètrehandle.
Description des erreurs : https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Si CL_LAST_ERROR est passé à la place du code d'erreur, la fonction renvoie la description de la dernière erreur. Par exemple :
//--- récupère le code de la dernière erreur OpenCL
|
Pour l'instant, le nom dans l'énumération interne est donné comme description de l'erreur. Vous pouvez trouver sa description ici :https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Par exemple, la valeur CL_INVALID_KERNEL_ARGS signifie "Returned when enqueuing a kernel when some kernel arguments have not been set or are invalid" ("Renvoyé lors de la mise en file d'attente d'un noyau lorsque certains arguments du noyau n'ont pas été définis ou sont invalides.")
Fonctions pour l'exécution des programmes en OpenCL :
Fonction |
Action |
---|---|
Retourne le type du handle OpenCL comme une valeur de l'énumération ENUM_OPENCL_HANDLE_TYPE |
|
Retourne la valeur d'une propriété de type integer pour un objet ou un dispositif OpenCL |
|
Crée un contexte OpenCL |
|
Supprime un contexte OpenCL |
|
Reçoit la propriété du dispositif du pilote informatique OpenCL |
|
Crée un programme OpenCL à partir du code source |
|
Supprime un programme OpenCL |
|
Crée une fonction de démarrage OpenCL |
|
Supprime une fonction au démarrage de l'OpenCL |
|
Définit un paramètre pour la fonction OpenCL |
|
Définit un buffer OpenCL en tant que paramètre de la fonction OpenCL |
|
Définit le buffer local comme un argument de la fonction du noyau |
|
Crée un buffer OpenCL |
|
Supprime un buffer OpenCL |
|
Ecrit un tableau dans un buffer OpenCL |
|
Lit un buffer OpenCL dans un tableau |
|
Exécute un programme OpenCL |
|
Retourne le statut d'exécution du programme OpenCL |
Voir aussi