CLGetInfoInteger

Restituisce il valore di una proprietà integer per un oggetto o dispositivo OpenCL.

long  CLGetInfoInteger(
   int  handle,                           // L' handle dell' oggetto OpenCL o il numero di dispositivi OpenCL
   ENUM_OPENCL_PROPERTY_INTEGER  prop     // Proprietà richiesta
   );

Parametri

handle

[in] Un handle per l'oggetto OpenCL o il numero del dispositivo OpenCL. La numerazione dei dispositivi OpenCL inizia con zero.

prop

[in] Il tipo di una proprietà richiesta dall' enumarazione ENUM_OPENCL_PROPERTY_INTEGER, il cui valore si desidera ottenere.

Valore restituito

Il valore della proprietà in caso di successo o -1 in caso di errore. Per ulteriori informazioni sull'errore, utilizzare la funzione GetLastError().

ENUM_OPENCL_PROPERTY_INTEGER

Identificatore

Descrizione

Tipo

CL_DEVICE_COUNT

Il numero di dispositivi con supporto OpenCL. Questa proprietà non richiede specifiche del primo parametro, cioè si può passare un valore zero per il parametro handle.

int

CL_DEVICE_TYPE

Tipo di dispositivo

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

Identificatore unico del fornitore

uint

CL_DEVICE_MAX_COMPUTE_UNITS

Numero di attività parallele calcolate nel dispositivo OpenCL. Un gruppo di lavoro risolve un compito computazionale. Il valore minimo è 1

uint

CL_DEVICE_MAX_CLOCK_FREQUENCY

Set massima frequenza del dispositivo in MHz.

uint

CL_DEVICE_GLOBAL_MEM_SIZE

Dimensione della memoria globale del dispositivo in byte

ulong

CL_DEVICE_LOCAL_MEM_SIZE

Dimensione dei dati trattati (scena) di memoria locale in byte

uint

CL_BUFFER_SIZE

Grandezza effettiva del buffer OpenCL in byte

ulong

CL_DEVICE_MAX_WORK_GROUP_SIZE

Il numero totale dei gruppi di lavoro locali disponibili per un dispositivo OpenCL.

ulong

CL_KERNEL_WORK_GROUP_SIZE

Il numero totale dei gruppi di lavoro locali disponibili per un programma OpenCL.

ulong

CL_KERNEL_LOCAL_MEM_SIZE

Grandezza della memoria locale (in byte) utilizzata da un programma OpenCL per risolvere tutti i task paralleli in un gruppo. Utilizzare CL_DEVICE_LOCAL_MEM_SIZE per ricevere il valore massimo disponibile

ulong

CL_KERNEL_PRIVATE_MEM_SIZE

La grandezza minima della memoria privata (in byte) utilizzata da ogni attività nel kernel del programma OpenCL.

ulong

CL_LAST_ERROR

Il valore dell'ultimo errore OpenCL

int

 

L'enumerazione ENUM_CL_DEVICE_TYPE contiene i possibili tipi di dispositivi che supportano OpenCL. È possibile ricevere il tipo di dispositivo con il suo numero o l'handle dell'oggetto OpenCL chiamando CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE).

ENUM_CL_DEVICE_TYPE

Identificatore

Descrizione

CL_DEVICE_ACCELERATOR

Acceleratori dedicati OpenCL (per esempio, the IBM CELL Blade). Questi dispositivi comunicano con il processore host usando una interconnessione periferica come PCIe.

CL_DEVICE_CPU

Un dispositivo OpenCL è il processore host. Il processore host esegue le implementazioni OpenCL ed è una CPU singola o CPU multi-core.

CL_DEVICE_GPU

Un dispositivo OpenCL che è una GPU.

CL_DEVICE_DEFAULT

Il dispositivo OpenCL predefinito nel sistema. Il dispositivo predefinito non può essere un dispositivo CL_DEVICE_TYPE_CUSTOM.

CL_DEVICE_CUSTOM

Acceleratori dedicati che non supportano i programmi scritti in OpenCL C.

Esempio:

voidOnStart()
  {
   int cl_ctx;
//--- inizializza il contesto OpenCL
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
     {
      Print("OpenCL non trovato");
      return;
     }
//--- Mostra informazioni generiche riguardo il dispositivo OpenCL
   Print("Tipo OpenCL: ",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);
  }