CLGetInfoString

Retorna valor string de uma propriedade para o objeto OpenCL ou dispositivo.

bool  CLGetInfoString(
   int  handle,                           // Objeto manipulador de OpenCL ou número de dispositivo OpenCL
   ENUM_OPENCL_PROPERTY_STRING  prop,     // propriedade solicitada
   string&  value                         // string referenciada
   );

Parâmetros

handle

[in]  Objeto manipulador de OpenCL ou número de dispositivo OpenCL. A numeração dos dispositivos OpenCL começa com um zero.

prop

[in]  Tipo de propriedade requerida do enumerador ENUM_OPENCL_PROPERTY_STRING, o valor do qual deve ser obtido.

value

[out]  String para receber o valor da propriedade.

Valor de retorno

true se bem sucedido, caso contrário false. Para obter informações sobre o erro, utilize a função GetLastError().

ENUM_OPENCL_PROPERTY_STRING

Identificador

Descrição

CL_PLATFORM_PROFILE

CL_PLATFORM_PROFILE - Perfil OpenCL. Nome do perfil pode ser um dos seguintes valores:

  • FULL_PROFILE - implementação suporta OpenCL (funcionalidade é definida como a parte da especificação do kernel sem necessidade de extensões adicionais para o apoio OpenCL);
  • EMBEDDED_PROFILE - implementação suporta OpenCL como um suplemento. Perfil alterado é definido como um subconjunto para cada versão OpenCL.

CL_PLATFORM_VERSION

Versão OpenCL

CL_PLATFORM_VENDOR

Nome do fornecedor da Plataforma

CL_PLATFORM_EXTENSIONS

Lista de extensões suportadas pela plataforma. Nomes de extensão deve ser suportado por todos os dispositivos relacionados com esta plataforma

CL_DEVICE_NAME

O nome do dispositivo

CL_DEVICE_VENDOR

Nome do fornecedor

CL_DRIVER_VERSION

Versão do driver OpenCL em formato major_number.minor_number

CL_DEVICE_PROFILE

Perfil de dispositivo OpenCL. Nome do perfil pode ser um dos seguintes valores:

  • FULL_PROFILE - implementação suporta OpenCL (funcionalidade é definida como a parte da especificação do kernel sem necessidade de extensões adicionais para o apoio OpenCL);
  • EMBEDDED_PROFILE - implementação suporta OpenCL como um suplemento. Perfil alterado é definido como um subconjunto para cada versão OpenCL.

CL_DEVICE_VERSION

OpenCL versão em formato "OpenCL<space><major_version.minor_version><space><vendor-specific information>"

CL_DEVICE_EXTENSIONS

Lista de extensões suportadas pelo dispositivo. A lista pode conter extensões suportadas pelo fornecedor, bem como um ou mais nomes aprovados:

   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

A lista de kernels suportados separados por ";".

CL_DEVICE_OPENCL_C_VERSION

A versão máximo suportado pelo compilador para este dispositivo. Versão formato:

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

Exemplo:

void OnStart()
  {
   int cl_ctx;
   string str;
//--- inicializar contexto OpenCL
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
     {
      Print("OpenCL não encontrado");
      return;
     }
//--- Exibir informações sobre a plataforma
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_NAME,str))
      Print("Nome da plataforma OpenCL: ");
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_VENDOR,str))
      Print("Fornecedor da plataforma OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_VERSION,str))
      Print("Versão da plataforma OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_PROFILE,str))
      Print("Perfil da plataforma OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_PLATFORM_EXTENSIONS,str))
      Print("Extensão da plataforma OpenCL: ",str);
//--- Exibir informações sobre o dispositivo
   if(CLGetInfoString(cl_ctx,CL_DEVICE_NAME,str))
      Print("Nome do dispositivo OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_PROFILE,str))
      Print("Perfil do dispositivo OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_BUILT_IN_KERNELS,str))
      Print("Kernels dispositivo OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_EXTENSIONS,str))
      Print("Extensão do dispositivo OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_VENDOR,str))
      Print("Fornecedor do dispositivo OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_VERSION,str))
      Print("Versão do dispositivo OpenCL: ",str);
   if(CLGetInfoString(cl_ctx,CL_DEVICE_OPENCL_C_VERSION,str))
      Print("Versão do c OpenCL: ",str);
//--- Exibir informações gerais sobre o dispositivo OpenCL
   Print("Tipo OpenCL: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE)));
   Print("Fornecedor ID OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID));
   Print("Unidades OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS));
   Print("Freqüência OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY));
   Print("Memória global OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE));
   Print("Memória local OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE));
//--- free OpenCL context
   CLContextFree(cl_ctx);
  }