CLGetInfoInteger

Devuelve el valor de una propiedad de números enteros para el objeto o dispositivo OpenCL.

long  CLGetInfoInteger(
   int  handle,                           // manejador del objeto OpenCL o el número del dispositivo OpenCL
   ENUM_OPENCL_PROPERTY_INTEGER  prop     // propiedad solicitada
   );

Parámetros

handle

[in]  Manejador para el objeto OpenCL o el número del dispositivo OpenCL. La numeración de los dispositivos OpenCL se empieza desde cero

prop

[in]  Tipo de la propiedad solicitada desde la enumeración ENUM_OPENCL_PROPERTY_INTEGER cuyo valor hay que recibir.

Valor devuelto

Valor de la propiedad especificada en caso del éxito, o -1 en caso del error. Para obtener la información sobre el error, utilice la función GetLastError().

ENUM_OPENCL_PROPERTY_INTEGER

Identificador

Descripción

Tipo

CL_DEVICE_COUNT

El número de dispositivos con soporte de OpenCL. Para esta propiedad no hace falta indicar el primer parámetro, es decir, se puede pasar el valor cero para el parámetro handle.

int

CL_DEVICE_TYPE

Tipo del dispositivo

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

Identificador único del fabricante

uint

CL_DEVICE_MAX_COMPUTE_UNITS

Número de tareas paralelas calculadas en el dispositivo OpenCL. Un grupo de trabajo se encarga de una tarea computacional. El valor mínimo es igual a 1

uint

CL_DEVICE_MAX_CLOCK_FREQUENCY

Frecuencia máxima establecida del dispositivo en MHz.

uint

CL_DEVICE_GLOBAL_MEM_SIZE

Tamaño de la memoria global del dispositivo en bytes

ulong

CL_DEVICE_LOCAL_MEM_SIZE

Tamaño de la memoria local de datos procesados (escenarios) en bytes

uint

CL_BUFFER_SIZE

Tamaño real del búfer OpenCL en bytes

ulong

CL_DEVICE_MAX_WORK_GROUP_SIZE

Número total de grupos locales de trabajo disponibles para un dispositivo OpenCL

ulong

CL_KERNEL_WORK_GROUP_SIZE

Número total de grupos locales de trabajo disponibles para un programa OpenCL

ulong

CL_KERNEL_LOCAL_MEM_SIZE

Tamaño de la memoria local en bytes usada por un programa OpenCL para todas las tareas simultáneas en el grupo. Use CL_DEVICE_LOCAL_MEM_SIZE para obtener el máximo disponible

ulong

CL_KERNEL_PRIVATE_MEM_SIZE

Tamaño mínimo de la memoria privada en bytes usado por cada tarea en el núcleo del programa OpenCL

ulong

CL_LAST_ERROR

Valor del último error de OpenCL

int

 

La enumeración ENUM_CL_DEVICE_TYPE contiene los posibles tipos de dispositivos con el soporte de OpenCL. Puede obtener el tipo del dispositivo según su número o el handle del objeto OpenCL llamando a CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE).

ENUM_CL_DEVICE_TYPE

Identificador

Descripción

CL_DEVICE_ACCELERATOR

Acelerador especializado OpenCL (por ejemplo, IBM CELL Blade).

CL_DEVICE_CPU

Uso de la CPU del ordenador como un dispositivo OpenCL. La CPU puede tener uno o más núcleos de cómputo.

CL_DEVICE_GPU

Un dispositivo OpenCL a base de una tarjeta de vídeo.

CL_DEVICE_DEFAULT

Dispositivo OpenCL por defecto. Un dispositivo CL_DEVICE_TYPE_CUSTOM no puede ser el dispositivo predefinido.

CL_DEVICE_CUSTOM

Los aceleradores especializados que no soportan los programas en OpenCL C.

Ejemplo:

void OnStart()
  {
   int cl_ctx;
//--- inicialización del contexto OpenCL
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
     {
      Print("OpenCL not found");
      return;
     }
//--- Visualizamos la información general sobre el dispositivo 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);
  }