CLGetInfoInteger

Возвращает значение целочисленного свойства для OpenCL-объекта или устройства.

long  CLGetInfoInteger(
   int  handle,                           // хендл объекта OpenCL или номер OpenCL устройства
   ENUM_OPENCL_PROPERTY_INTEGER  prop     // запрашиваемое свойство
   );

Параметры

handle

[in]  Хендл на объект OpenCL или номер OpenCL устройства. Нумерация OpenCL устройств начинается с нуля.

prop

[in]  Тип запрашиваемого свойства из перечисления ENUM_OPENCL_PROPERTY_INTEGER, значение которого нужно получить.

Возвращаемое значение

Значение указанного свойства при успешном выполнении или -1 в случае ошибки. Для получения информации об ошибке используйте функцию GetLastError().

ENUM_OPENCL_PROPERTY_INTEGER

Идентификатор

Описание

Тип

CL_DEVICE_COUNT

Количество устройств с поддержкой OpenCL. Для этого свойства не требуется указание первого параметра, то есть можно передать нулевое значение для параметра handle.

int

CL_DEVICE_TYPE

Тип устройства

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

Уникальный идентификатор производителя

uint

CL_DEVICE_MAX_COMPUTE_UNITS

Количество параллельных вычисляемых задач в устройстве OpenCL. Одна рабочая группа выполняет одну вычислительную задачу. Минимальное значение равно 1

uint

CL_DEVICE_MAX_CLOCK_FREQUENCY

Максимальная установленная частота устройства в МГц.

uint

CL_DEVICE_GLOBAL_MEM_SIZE

Размер глобальной памяти устройства в байтах

ulong

CL_DEVICE_LOCAL_MEM_SIZE

Размер локальной памяти обрабатываемых данных (сцены) в байтах

uint

CL_BUFFER_SIZE

Реальный размер буфера OpenCL в байтах

ulong

CL_DEVICE_MAX_WORK_GROUP_SIZE

Общее количество локальных рабочих групп доступных для OpenCL устройства.

ulong

CL_KERNEL_WORK_GROUP_SIZE

Общее количество локальных рабочих групп, доступных для OpenCL программы.

ulong

CL_KERNEL_LOCAL_MEM_SIZE

Размер локальной памяти в байтах, которую использует OpenCL программа для всех параллельных задач в группе. Используйте CL_DEVICE_LOCAL_MEM_SIZE для получения доступного максимума

ulong

CL_KERNEL_PRIVATE_MEM_SIZE

Минимальный размер приватной памяти в байтах, используемый каждой задачей в кернеле OpenCL программы.

ulong

CL_LAST_ERROR

Значение последней OpenCL ошибки

int

 

Перечисление ENUM_CL_DEVICE_TYPE содержит возможные типы устройств с поддержкой OpenCL. Получить тип устройства можно по его номеру или хэндлу объекта OpenCL с помощью вызова CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE).

ENUM_CL_DEVICE_TYPE

Идентификатор

Описание

CL_DEVICE_ACCELERATOR

Специализированный OpenCL ускоритель (например, IBM CELL Blade).

CL_DEVICE_CPU

Использование центрального процессора компьютера в качестве OpenCL устройства. Центральный процессор может иметь одно или более вычислительных ядер.

CL_DEVICE_GPU

OpenCL устройство на основе видеокарты.

CL_DEVICE_DEFAULT

OpenCL устройство по умолчанию. Устройством по умолчанию не может являться CL_DEVICE_TYPE_CUSTOM устройство.

CL_DEVICE_CUSTOM

Специализированные ускорители, которые не поддерживают программы на OpenCL C.

Пример:

void OnStart()
  {
   int cl_ctx;
//--- инициализация OpenCL контекста
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
     {
      Print("OpenCL not found");
      return;
     }
//--- Выведем общую информацию об устройстве 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");
//--- освободим OpenCL контектс
   CLContextFree(cl_ctx);
  }