CLGetInfoInteger

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

long  CLGetInfoInteger(
   int  handle,                           // O manipulador do objeto OpenCL ou o número do dispositivo OpenCL
   ENUM_OPENCL_PROPERTY_INTEGER  prop     // Propriedade solicitada
   );

Parâmetros

handle

[in]  Um manipulador para o objeto OpenCL ou o número do dispositivo OpenCL. A numeração dos dispositivos OpenCL começa com um zero.

prop

[in]  O tipo de uma propriedade solicitada do enumerador ENUM_OPENCL_PROPERTY_INTEGER, o valor que você deseja obter.

Valor do Retorno

O valor da propriedade, se for bem-sucedido ou -1 em caso de erro. Para obter informações sobre o erro, utilize a função GetLastError().

ENUM_OPENCL_PROPERTY_INTEGER

Identificador

Descrição

Tipo

CL_DEVICE_COUNT

O número de dispositivos com suporte a OpenCL. Esta propriedade não requer a especificação do primeiro parâmetro, ou seja, você pode passar um valor zero para o parâmetro do manipulador.

int

CL_DEVICE_TYPE

Tipo de dispositivo

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

Identificador único do fornecedor

uint

CL_DEVICE_MAX_COMPUTE_UNITS

Número de tarefas paralelas calculados em dispositivos OpenCL. Um grupo de trabalho resolve uma tarefa computacional. O menor valor é 1

uint

CL_DEVICE_MAX_CLOCK_FREQUENCY

Define a maior freqüência do dispositivo em MHz.

uint

CL_DEVICE_GLOBAL_MEM_SIZE

Tamanho da memória global do dispositivo em bites

ulong

CL_DEVICE_LOCAL_MEM_SIZE

Tamanho dos dados processados (cena) de memória local, em bites

uint

CL_BUFFER_SIZE

Actual size of the OpenCL buffer in bytes.

ulong

CL_DEVICE_MAX_WORK_GROUP_SIZE

Número total de grupos locais de trabalho disponíveis para um dispositivo OpenCL.

ulong

CL_KERNEL_WORK_GROUP_SIZE

Número total de grupos locais de trabalho disponíveis para um programa OpenCL.

ulong

CL_KERNEL_LOCAL_MEM_SIZE

Tamanho da memória local em bytes, que é usada pelo OpenCL do programa para todas as tarefas simultâneas no grupo. Utilize CL_DEVICE_LOCAL_MEM_SIZE para obter o máximo disponível.

ulong

CL_KERNEL_PRIVATE_MEM_SIZE

 

 

Tamanho mínimo de memória privada em bytes a ser usado por cada tarefa na kernel do programa OpenCL.

ulong

CL_LAST_ERROR

Valor do último último erro OpenCL

int

 

O enumerador ENUM_CL_DEVICE_TYPE contém possíveis tipos de dispositivos que suportam OpenCL. Você pode receber o tipo de dispositivo pelo seu número ou o manipulador do objeto OpenCL, chamando CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE).

ENUM_CL_DEVICE_TYPE

Identificador

Descrição

CL_DEVICE_ACCELERATOR

Aceleradores OpenCL dedicados (por exemplo, a IBM CELL Blade). Estes dispositivos se comunicam com o processador hospedeiro utilizando uma interconexão de periféricos, como PCIe.

CL_DEVICE_CPU

Um dispositivo OpenCL que é o processador hospedeiro. O processador hospedeiro executa as implementações OpenCL, sendo uma única ou multi-core CPU.

CL_DEVICE_GPU

Um dispositivo OpenCL que é uma GPU.

CL_DEVICE_DEFAULT

O dispositivo padrão OpenCL no sistema. O dispositivo padrão não pode ser um dispositivo CL_DEVICE_TYPE_CUSTOM.

CL_DEVICE_CUSTOM

Aceleradores dedicados que não suportam programas escritos em OpenCL C.

CL_ERROR_DESCRIPTION

Descrição de texto do erro OpenCL

Exemplo:

void OnStart()
  {
   int cl_ctx;
//--- 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
   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)," MHz");
   Print("Memória global OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes");
   Print("Memória local OpenCL: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes");
//--- free OpenCL context
   CLContextFree(cl_ctx);
  }