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

OpenCL Architecture(2)

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

OpenCL Architecture

  • 플랫폼 모델

  • 실행 모델

  • 메모리 모델

  • 프로그래밍 모델

  • OpenCL 프레임워크


플랫폼 모델(Platform Model)

  • 호스트(host) + 하나 이상의 계산 디바이스
    • 계산 디바이스(compute device)
      • OpenCL 디바이스
      • 하나 이상의 계산 유닛으로 구성
    • 계산 유닛(compute unit, CU)
      • 하나 이상의 Processing Element로 구성
    • Processing Element (PE) (Core와 비슷)
      • 디바이스 내에서 실제 계산을 수행
      • 가상 스칼라 프로세서

OpenCL 애플리케이션

  • 호스트 프로그램 + OpenCL 프로그램
    • 호스트 프로그램(host program)
      • 호스트 프로세서에서 실행
      • OpenCL 프로그램의 실행을 조정
      • 일반 프로그래밍 언어로 작성
        • C, C++ 등
      • 디바이스의 실행을 관리
        • 커맨드 단위
        • 메모리, 계산, 동기화 등
    • OpenCL 프로그램
      • OpenCL 커널의 집합
      • OpenCL 디바이스에서 실행
      • 디바이스 : CPU, GPU 등
  • 커널(kernel)
    • OpenCL C로 작성
    • 디바이스에서 실행되는 코드의 기본 단위
    • 많은 인스턴스가 디바이스에서 실행됨
    • 데이터 병렬성 이용
  • 호스트와 디바이스의 병렬 실행
    • 호스트 프로그램과 커널은 병렬로 실행 가능
    • 여러 디바이스를 동시에 사용 가능

OpenCL C

  • 커널 작성을 위한 프로그래밍 언어
  • 별도의 #include 사용 X
  • 제약
    • 표준 C99 헤더파일 지원 X
    • 함수 포티인터, 재귀함수, 가변길이 배열(ex : int a[N]), 비트 필드 지원 X
  • 확장
    • 벡터 타입
      • ex) char2, int4, float8
    • 이미지 타입
      • ex) image2d_t
    • 주소 공간 한정자
      • ex) __global, __constant, __local
    • 동기화
    • 많은 빌트인 함수
반응형

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

OpenCL Architecture(4)  (42) 2022.04.13
OpenCL Architecture(3)  (41) 2022.04.12
OpenCL Architecture(1)  (11) 2022.04.10
OpenCL 프로그래밍(3)  (2) 2015.08.06
OpenCL 프로그래밍(2)  (0) 2015.07.25

댓글