본문 바로가기
멀티코어 프로그래밍/OpenCL

OpenCL 플랫폼

by 기리의 개발로그 2022. 4. 20.

openCL 플랫폼

  • 플랫폼
    • openCL 구현
    • 시스템에 여러 벤더의 opencl 구현이 설치되어 있다면 플랫폼이 여러 개가 존재한다는 의미
    • ex) AMD opencl, intel opencl

플랫폼(Platform)

cl_int clGetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms) 
  • OpenCL 플랫폼의 ID를 가져옴
  • num_entires
    • 요청하고자 하는 플랫폼의 수
  • platforms
    • 존재하는 플랫폼들에 대한 포인터
  • num_platforms
    • 존재하는 플랫폼의 수
  • 리턴 값
    • cl_int 에러 정보(음수 값)
    • CL_SUCCESS(0)
  • 사용 예
    • err = clGetPlatformIDs(0, NULL, &num_platforms) // 실제 존재하는 platform 수를 얻음
    • err = clGetPlatformIDs(num_platforms, &platform, NULL)
  • Function-Allocation-Function
    • 일반적으로는 플랫폼의 개수를 모름
    • 다음 3단계 절차를 이용
      • 플랫폼 개수 알아오기
      • 메모리 할당
      • 플랫폼 얻어오기
    • 코드 패턴
      • cl_platform_id *platforms;
      • cl_uint num_platforms;
      • cl_GetPlatformIDs(1, NULL, &num_platforms);
      • platforms = (cl_platform_id *)malloc(sizeof(cl_platform_id) * num_platforms);
      • cl_GetPlatformIDs(num_platforms, platforms, NULL);

cl_int clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name, size_t param_value_size, void *param_value, size_t *param_value_size_ret) 
  • OpenCL 플랫폼의 정보를 얻어옴
  • patform
    • clGetPlatformIDs()로 얻어온 플랫폼 ID
  • param_name
    • 얻고자 하는 정보 이름
  • param_value_size
    • param_value가 가리키는 메모리의 크기, param_value 가 NULL이면 무시됨
  • param_value
    • 플랫폼 정보가 저장될 메모리의 포인터
  • param_value_size_ret
    • param_value의 실제 크기
  • 리턴 값
    • cl_int 에러 정보(음수 값)
    • CL_SUCCESS(0)
  • 사용 예
    • char pform_vendor[40];
    • cl_GetPlatformInfo(platforms[0], CL_PLATFORM_VENDOR, sizeof(pform_vendor), pform_vendor, NULL);
반응형

'멀티코어 프로그래밍 > OpenCL' 카테고리의 다른 글

OpenCL 컨텍스트  (13) 2022.04.22
OpenCL 디바이스  (9) 2022.04.21
커널, 커맨드큐  (9) 2022.04.19
OpenCL 프로그램  (7) 2022.04.18
OpenCL Architecture(6)  (18) 2022.04.15

댓글