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

OpenCL Architecture(1)

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

OpenCL Architecture

OpenCL 이란

  • Open Computing Language

  • 이종 플랫폼을 위한 표준 병렬 프로그래밍 모델

    • 다양한 아키텍처의 디바이스를 위해 프로그래밍 가능
      • CPU, GPU, FPGA 등
    • 추상화된 플랫폼 모델 제공
  • 저작권료를 지불하지 않아도 되는 공개 표준


OpenCL의 구성

  • 병렬 프로그래밍을 위한 프레임워크

    • OpenCL C
      • 커널을 작성하기 위한 프로그래밍 언어
    • 컴파일러
    • 호스트 API
    • 라이브러리
    • 런타임 시스템
  • 표준 문서의 구성

    • 기본 표준
      • OpenCL 구현이 지원해야할 필수 사항
    • 임베디드 프로파일
      • 모파일/임베디드 디바이스용
    • 확장 표준
      • 추후 표준에 추가될 수 있는 사항

OpenCL의 특징

  • 기본 특징

    • 데이터/태스크 병렬 프로그래밍 모델 지원
    • ISO C99 기반의 언어 사용
    • IEEE 754에 기반
    • OpenGL 등과의 상호운용 가능
  • 코드 이식성

    • 한 번 작성한 코드는 다양한 디바이스에서 실행 가능
    • 이식성 있고 효율적인 코드를 작성하기를 원하는 전문 프로그래머가 대상
    • 라이브러리 개발자, 미들웨어 벤더, 성능이 중요한 애플리케이션 개발자
    • 애플리케이션 개발을 위해 성능과 관련된 많은 요소를 직접 제어

현재 OpenCL의 한계

  • 성능 이식성의 부재

    • 타깃 디바이스에 따라 프로그래머의 최적화가 필요
    • 하지만 다른 프로그래밍 모델도 성능 이식성이 부재
  • 프로그래밍의 복잡성

    • 프로그래머가 많은 요소를 직접 통제해야 함
    • 디바이스 별 최적화를 위해 많은 시간이 소요
  • 단일 OS내의 디바이스들만 프로그래밍 가능

  • 이종 클러스터에서의 프로그래밍

    • 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

댓글