CLGetInfoString

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

bool  CLGetInfoString(
   int  handle,                           // хендл объекта OpenCL или номер OpenCL устройства
   ENUM_OPENCL_PROPERTY_STRING  prop,     // запрашиваемое свойство
   string&  value                         // строка по ссылке
   );

Параметры

handle

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

prop

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

value

[out]  Строка для получения значения свойства.

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

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

ENUM_OPENCL_PROPERTY_STRING

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

Описание

CL_PLATFORM_PROFILE

CL_PLATFORM_PROFILE - Профиль OpenCL.  Имя профиля может быть одним из значений:

  • FULL_PROFILE - реализация поддерживает OpenCL (функциональность определена как часть спецификации ядра и не требует дополнительных расширений для поддержки OpenCL);
  • EMBEDDED_PROFILE - реализация поддерживает OpenCL  в виде дополнения. Дополненный профиль определяется как подмножество для каждой версии OpenCL.

CL_PLATFORM_VERSION

Версия OpenCL

CL_PLATFORM_VENDOR

Название производителя устройства

CL_PLATFORM_EXTENSIONS

Список расширений, поддерживаемых платформой. Названия расширений должны поддерживаться всеми устройствами, связанными с данной платформой

CL_DEVICE_NAME

Название устройства

CL_DEVICE_VENDOR

Название производителя

CL_DRIVER_VERSION

Версия драйвера OpenCL в формате major_number.minor_number

CL_DEVICE_PROFILE

Профиль OpenCL устройства. Имя профиля может быть одним из следующих значений:

  • FULL_PROFILE - реализация поддерживает OpenCL (функциональность определена как часть спецификации ядра и не требует дополнительных расширений для поддержки OpenCL);
  • EMBEDDED_PROFILE - реализация поддерживает OpenCL  в виде дополнения. Дополненный профиль определяется как подмножество для каждой версии OpenCL.

CL_DEVICE_VERSION

Версия OpenCL в формате "OpenCL<space><major_version.minor_version><space><vendor-specific information>"

CL_DEVICE_EXTENSIONS

Список расширений, поддерживаемых устройством. Список может включать расширения, поддерживаемые производителем и содержать один или более одобренных имен:

   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

Список кернелов, поддерживаемых устройством, разделенных ";" .

CL_DEVICE_OPENCL_C_VERSION

Максимальная версия, поддерживаемая компилятором для данного устройства. Формат версии:

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

CL_ERROR_DESCRIPTION

Текстовое описание ошибки OpenCL

Пример:

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