CLGetInfoInteger

Retourne la valeur d'une propriété de type integer pour un objet ou un dispositif OpenCL

long  CLGetInfoInteger(
   int  handle,                           // le handler sur l'objet OpenCL ou le numéro du dispositif OpenCL
   ENUM_OPENCL_PROPERTY_INTEGER  prop     // la propriété demandée
   );

Paramètres

handle

[in]  Le handler sur l'objet OpenCL ou le numéro du dispositif OpenCL. Le numérotation des dispositifs OpenCL commence à zéro

prop

[in]  L'identifiant de la propriété demandée dans l'énumération ENUM_OPENCL_PROPERTY_INTEGER et pour laquelle vous souhaitez obtenir la valeur.

Valeur de retour

La valeur de la propriété en cas de succès ou -1 en cas d'erreur Pour obtenir des informations sur l'erreur, utilisez la fonction GetLastError().

ENUM_OPENCL_PROPERTY_INTEGER

Identifiant

Description

Type

CL_DEVICE_COUNT

Le nombre de dispositifs avec le support d'OpenCL. Cette propriété ne nécessite pas de spécifier le premier paramètre, à savoir que vous pouvez passer une valeur nulle pour le paramètre handle.

int

CL_DEVICE_TYPE

Le type du dispositif

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

L'identifiant unique du vendeur

uint

CL_DEVICE_MAX_COMPUTE_UNITS

Le nombre de tâches calculées parallèlement sur le périphérique OpenCL. Un groupe de travail travaille sur une tâche de calcul. La valeur minimale est de 1

uint

CL_DEVICE_MAX_CLOCK_FREQUENCY

La fréquence maximale en MHz du périphérique .

uint

CL_DEVICE_GLOBAL_MEM_SIZE

La taille de la mémoire globale du dispositif en octets

ulong

CL_DEVICE_LOCAL_MEM_SIZE

La taille de la mémoire locale des données traitées en octets

uint

CL_BUFFER_SIZE

Taille actuelle du buffer OpenCL en octets

ulong

CL_DEVICE_MAX_WORK_GROUP_SIZE

Le nombre total de groupe de travail locaux disponibles pour le périphérique OpenCL.

ulong

CL_KERNEL_WORK_GROUP_SIZE

Le nombre total de groupe de travail locaux disponibles pour le programme OpenCL.

ulong

CL_KERNEL_LOCAL_MEM_SIZE

La taille de la mémoire locale (en octets) utilisée par un programme OpenCL pour résoudre toutes les taches parallèles dans un groupe. Utilisez CL_DEVICE_LOCAL_MEM_SIZE pour récupérer la valeur disponible maximum

ulong

CL_KERNEL_PRIVATE_MEM_SIZE

La taille minimum de la mémoire privée (en octets) utilisée par chaque tâche du noyau du programme OpenCL.

ulong

CL_LAST_ERROR

La valeur de la dernière erreur OpenCL

int

 

L'énumération ENUM_CL_DEVICE_TYPE contient les types possibles des périphériques supportant OpenCL. Vous pouvez récupérer le type du périphérique par son numéro ou le handle de l'objet OpenCL à l'aide de l'appel CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE).

ENUM_CL_DEVICE_TYPE

Identifiant

Description

CL_DEVICE_ACCELERATOR

Accélérateur OpenCL dédiés (par exemple l'IBM CELL Blade).

CL_DEVICE_CPU

Le périphérique OpenCL qui est le processeur hôte. Le processeur hôte exécute les implémentations OpenCL et est mono ou multi coeurs.

CL_DEVICE_GPU

Le dispositif OpenCL basé sur la carte vidéo.

CL_DEVICE_DEFAULT

Le dispositif OpenCL par défaut. Le dispositif CL_DEVICE_TYPE_CUSTOM ne peut pas être le dispositif par défaut.

CL_DEVICE_CUSTOM

Les accélérateurs spécialisés ne supportent pas les programmes écrits en OpenCL C.

Exemple :

void OnStart()
  {
   int cl_ctx;
//--- initialisation du contexte OpenCL 
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
     {
      Print("OpenCL not found");
      return;
     }
//--- information totale sur le dispositif OpenCL
   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");
//--- free OpenCL context
   CLContextFree(cl_ctx);
  }