CLGetInfoString

Esta función devuelve el valor literal de la propiedad para un objeto o dispositivo OpenCL.

bool  CLGetInfoString(
   int  handle,                           // manejador del objeto OpenCL o el número del dispositivo OpenCL
   ENUM_OPENCL_PROPERTY_STRING  prop,     // propiedad solicitada
   string&  value                         // cadena por referencia
   );

Parámetros

handle

[in]  Manejador para un objeto OpenCL o 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_STRING cuyo valor hay que obtener.

value

[out]  Cadena para obtener el valor de la propiedad.

Valor devuelto

true para la ejecución con éxito, false en caso del error. Para obtener la información sobre el error, hay que llamar a la función GetLastError().

ENUM_OPENCL_PROPERTY_STRING

Identificador

Descripción

CL_PLATFORM_PROFILE

CL_PLATFORM_PROFILE - Perfil OpenCL. El nombre del perfil puede ser uno de los siguientes valores:

  • FULL_PROFILE - la implementación soporta OpenCL (la funcionalidad está definida como una parte de la especificación del núcleo y no requiere las extensiones adicionales para el soporte de OpenCL);
  • EMBEDDED_PROFILE - la implementación soporta OpenCL como un suplemento. El perfil enmendado se define como un subconjunto para cada versión OpenCL.

CL_PLATFORM_VERSION

Versión OpenCL

CL_PLATFORM_VENDOR

Nombre del fabricante del dispositivo

CL_PLATFORM_EXTENSIONS

Lista de extensiones que soporta la plataforma. Todos los dispositivos relacionados con esta plataforma deben soportar los nombres de las extensiones

CL_DEVICE_NAME

Nombre del dispositivo

CL_DEVICE_VENDOR

Nombre del fabricante

CL_DRIVER_VERSION

Versión del controlador OpenCL en el formato major_number.minor_number

CL_DEVICE_PROFILE

Perfil del dispositivo OpenCL. El nombre del perfil puede ser uno de los siguientes valores:

  • FULL_PROFILE - la implementación soporta OpenCL (la funcionalidad está definida como una parte de la especificación del núcleo y no requiere las extensiones adicionales para el soporte de OpenCL);
  • EMBEDDED_PROFILE - la implementación soporta OpenCL como un suplemento. El perfil enmendado se define como un subconjunto para cada versión OpenCL.

CL_DEVICE_VERSION

Versión OpenCL en el formato "OpenCL<space><major_version.minor_version><space><vendor-specific information>"

CL_DEVICE_EXTENSIONS

Lista de extensiones que soporta el dispositivo. La lista puede incluir extensiones soportadas por el fabricante y contener uno o más nombres aprobados:

   cl_khr_int64_base_atomics

   cl_khr_int64_extended_atomics

   cl_khr_fp16

   cl_khr_gl_sharing

   cl_khr_gl_event

   cl_khr_d3d10_sharing

   cl_khr_dx9_media_sharing

   cl_khr_d3d11_sharing

CL_DEVICE_BUILT_IN_KERNELS

Lista de kernels que soporta el dispositivo separados por ";" .

CL_DEVICE_OPENCL_C_VERSION

La versión máxima que soporta el compilador para este dispositivo. Formato de la versión:

"OpenCL<space>C<space><major_version.minor_version><space><vendor-specific information> "

CL_ERROR_DESCRIPTION

Descripción textual del error de OpenCL

Ejemplo:

void OnStart()
  {
   int cl_ctx;
   string str;
//--- inicialización del contexto OpenCL
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
     {
      Print("OpenCL not found");
      return;
     }
//--- Visualizamos la información sobre la plataforma
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_NAME,str))
      Print("OpenCL platform name: ",str);
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_VENDOR,str))
      Print("OpenCL platform vendor: ",str);
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_VERSION,str))
      Print("OpenCL platform ver: ",str);
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_PROFILE,str))
      Print("OpenCL platform profile: ",str);
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_EXTENSIONS,str))
      Print("OpenCL platform ext: ",str);
//--- Visualizamos la información sobre el dispositivo
   if(CLGetInfoString(cl_ctx,CL_DEVICE_NAME,str))
      Print("OpenCL device name: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_PROFILE,str))
      Print("OpenCL device profile: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_BUILT_IN_KERNELS,str))
      Print("OpenCL device kernels: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_EXTENSIONS,str))
      Print("OpenCL device ext: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_VENDOR,str))
      Print("OpenCL device vendor: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_VERSION,str))
      Print("OpenCL device ver: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_OPENCL_C_VERSION,str))
      Print("OpenCL open c ver: ",str);
//--- 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));
   Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE));
   Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE));
//--- free OpenCL context
   CLContextFree(cl_ctx);
  }