CLGetInfoInteger

OpenCL 개체 또는 디바이스에 대한 정수 속성 값을 반환합니다.

long  CLGetInfoInteger(
   int  handle,                           // OpenCL 개체의 핸들 또는 OpenCL 장치의 번호
   ENUM_OPENCL_PROPERTY_INTEGER  prop     // 요청된 속성
   );

Parameter

핸들

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

prop

[in] ENUM_OPENCL_PROPERTY_INTEGER 열거값에서, 요청한 속성의 유형이며, 가져올 값입니다.

반환값

성공한 경우 속성의 값 또는 오류가 발생한 경우 -1입니다. 오류에 대한 자세한 내용은 GetLastError() 함수를 사용하십시오.

ENUM_OPENCL_PROPERTY_INTEGER

식별자

설명

유형

CL_DEVICE_COUNT

OpenCL이 지원되는 장치 수. 이 속성은 첫 번째 매개 변수를 지정할 필요가 없는데, 즉, 핸들 매개 변수에 0 값을 전달할 수 있습니다.

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

장치의 최고 설정 주파수(MHz)입니다.

uint

CL_DEVICE_GLOBAL_MEM_SIZE

장치의 글로벌 메모리 크기(바이트)

ulong

CL_DEVICE_LOCAL_MEM_SIZE

처리된 데이터 (scene) 로컬 메모리의 크기(바이트)

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

 

The ENUM_CL_DEVICE_TYPE 열거값에 OpenCL을 지원하는 가능한 장치 유형이 포함되어 있습니다. 장치 번호를 기준으로 장치 유형을 받거나 OpenCL 개체의 핸들을 CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE)를 호출하여 받을 수 있습니다.

ENUM_CL_DEVICE_TYPE

식별자

설명

CL_DEVICE_ACCELERATOR

전용 OpenCL 가속기 (예: IBM CELL Blade). 이러한 디바이스는 PCIe와 같은 주변 상호 연결을 사용하여 호스트 프로세서와 통신합니다.

CL_DEVICE_CPU

호스트 프로세서인 OpenCL 장치. 호스트 프로세서는 OpenCL 구현을 실행하고 단일 또는 다중 코어 CPU입니다.

CL_DEVICE_GPU

GPU인 OpenCL 장치.

CL_DEVICE_DEFAULT

시스템에서의 기본 OpenCL 장치. 기본 장치는 CL_DEVICE_TYPE_CUSTOMM 장치일 수 없습니다.

CL_DEVICE_CUSTOM

OpenCL C로 작성된 프로그램을 지원하지 않는 전용 가속기.

예:

void OnStart()
  {
   int cl_ctx;
//--- OpenCL 컨텍스트 초기화
   if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
     {
      Print("OpenCL을 찾을 수 없습니다");
      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");
//--- free OpenCL 컨텍스트
   CLContextFree(cl_ctx);
  }