CLGetInfoString

OpenCL 개체 또는 디바이스에 대한 속성의 문자열 값을 반환합니다.

bool  CLGetInfoString(
   int  handle,                           // OpenCL 개체 핸들 또는 OpenCL 장치 번호
   ENUM_OPENCL_PROPERTY_STRING  prop,     // 요청된 속성
   string&  value                         // 참조 문자열
   );

Parameter

handle

[in]  OpenCL 개체 핸들 또는 OpenCL 장치 번호. OpenCL 장치의 넘버링은 0부터 시작합니다.

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

major_number.minor_number 형식의 OpenCL 드라이버 버전

CL_DEVICE_PROFILE

OpenCL 디바이스 프로파일. 프로파일 이름은 다음 값 중 하나일 수 있습니다.

  • FULL_PROFILE - 구현은 OpenCL을 지원합니다(기능은 OpenCL 지원을 위한 추가 확장 없이 커널 규격의 일부로 정의됨).
  • EMBEDDED_PROFILE - 구현은 추가적으로 OpenCL을 지원합니다. 수정된 프로파일은 각 OpenCL 버전에 대한 하위 집합으로 정의됩니다.

CL_DEVICE_VERSION

"OpenCL<space><major_version.minor_version><space><vendor-specific information>" 포맷의 OpenCL 버전

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을 찾을 수 없습니다");
      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));
//--- free OpenCL 컨텍스트
   CLContextFree(cl_ctx); 
  }