OpenCL Architecture
OpenCL 이란
Open Computing Language
이종 플랫폼을 위한 표준 병렬 프로그래밍 모델
- 다양한 아키텍처의 디바이스를 위해 프로그래밍 가능
- CPU, GPU, FPGA 등
- 추상화된 플랫폼 모델 제공
- 다양한 아키텍처의 디바이스를 위해 프로그래밍 가능
저작권료를 지불하지 않아도 되는 공개 표준
OpenCL의 구성
병렬 프로그래밍을 위한 프레임워크
- OpenCL C
- 커널을 작성하기 위한 프로그래밍 언어
- 컴파일러
- 호스트 API
- 라이브러리
- 런타임 시스템
- OpenCL C
표준 문서의 구성
- 기본 표준
- OpenCL 구현이 지원해야할 필수 사항
- 임베디드 프로파일
- 모파일/임베디드 디바이스용
- 확장 표준
- 추후 표준에 추가될 수 있는 사항
- 기본 표준
OpenCL의 특징
기본 특징
- 데이터/태스크 병렬 프로그래밍 모델 지원
- ISO C99 기반의 언어 사용
- IEEE 754에 기반
- OpenGL 등과의 상호운용 가능
코드 이식성
- 한 번 작성한 코드는 다양한 디바이스에서 실행 가능
- 이식성 있고 효율적인 코드를 작성하기를 원하는 전문 프로그래머가 대상
- 라이브러리 개발자, 미들웨어 벤더, 성능이 중요한 애플리케이션 개발자
- 애플리케이션 개발을 위해 성능과 관련된 많은 요소를 직접 제어
현재 OpenCL의 한계
성능 이식성의 부재
- 타깃 디바이스에 따라 프로그래머의 최적화가 필요
- 하지만 다른 프로그래밍 모델도 성능 이식성이 부재
프로그래밍의 복잡성
- 프로그래머가 많은 요소를 직접 통제해야 함
- 디바이스 별 최적화를 위해 많은 시간이 소요
단일 OS내의 디바이스들만 프로그래밍 가능
이종 클러스터에서의 프로그래밍
- MPI + OpenCL 또는 MPI + CUDA
- 프로그래밍의 어려움 증가
- 코드 이식성 감소
- 유지 관리의 어려움
- MPI + OpenCL 또는 MPI + CUDA
반응형
'멀티코어 프로그래밍 > OpenCL' 카테고리의 다른 글
OpenCL Architecture(3) (41) | 2022.04.12 |
---|---|
OpenCL Architecture(2) (22) | 2022.04.11 |
OpenCL 프로그래밍(3) (2) | 2015.08.06 |
OpenCL 프로그래밍(2) (0) | 2015.07.25 |
OpenCL 프로그램, 커널, 커맨드 큐 (0) | 2015.07.25 |
댓글