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 |
댓글