OpenCL - Open Computing Language

  • 정의

이기종 플랫폼에서 실행되는 프로그램을 작성하기 위한 개방형 범용 병렬 컴퓨팅 프레임워크이다.

이기종 플랫폼이란 CPU, GPU, DSP, FPGA와 다른 프로세서들 또는 HW 가속기 등으로 이루어져 있다.

  • 배경

애플이 최초로 개발하였며 AMD, 인텔, 엔비디아 등과 제안서를 작성하여 

2008년 11월 18일  OpenCL 1.0 명세서(specification)가 완성되어 2008년 12월 8일 공식적으로 발표되었다.

이후 OpenCL는 비영리 기술 컨소시움인 크로노스 그룹(Khronos Group)이 관리하는 개방형 표준이다.

2009년 9월 애플에서 맥 OS X 10.6 스노 레퍼드(SNOW LEOPARD) 버전에 OpenCL이 구현되었다.

MAX OS X 10.6 SNOW LEOPARD


  • 기능

장치를 프로그래밍하는 프로그래밍 언어와 플랫폼을 제어하고 컴퓨팅 장치에서 프로그램을 실행하기 위한 응용프로그래밍 인터페이스(API)를 지정한다.

작업 기반 및 데이터 기반 병렬처리를 사용하는 병렬컴퓨팅을 위한 표준 인터페이스를 제공한다.

작업 기반(task-based) 및 데이터 기반(data-based) 병렬 컴퓨팅을 위한 API를 제공한다.

  • 데이터 기반(data-based) 병렬처리

N 차원 계산 도메인(N=1, 2 또는 3)을 정의하여 SIMD로 처리할 수 있다.


예제) 차원 문제.

1D: 한 배열 내의 1백만 요소

    global_dimension[3] = { 1000000, 1, 1 };

2D: 1920 X 1200 HD 비디오 프레임, 2.3M 픽셀

    global_dimension[3] = { 1920, 1200, 1 };

3D: 256 X 256 X 256 부피. 16,7M 픽셀

    global_dimension[3] = { 256, 256, 256 };

  • OpenGL 실행 모델

Kernel - 실행 가능한 코드의 기본 단위

Program - 커널과 다른 함수들의 집합

Application queue Kernel execution instances - 도착하는 대로 적재 (Queue)되고 도착순 또는 제거순으로 실행.

  • 관련 기술

(1) OpenGL

- 3차원 컴퓨터 그래픽스에 대한 산업계의 개방형 표준이다.

(2) OpenAL

- 컴퓨터 오디오에 대한 산업계의 개방형 표준이다.

(3) GPU (Graphics processing unit)

- 컴퓨터 그래픽과 영상처리에 매우 효과적.

(4) GPGPU (General-Purpose computing on GPU)

- GPU를 전통적인 그래픽 처리뿐만이 아니라 CPU가 수행하는 응용 프로그램의 계산에도 사용하는 기술이다.

(5)스트림 프로세싱 (stream processing)

- 제한된 형태의 병렬처리를 응용프로그램이 쉽게 사용할 수 있도록 하는 SIMD 관련 컴퓨터 프로그래밍 양식.

  • 유사 기술

CUDA

- nVDIA에서 만들었으며 GPU에서 수행하는 (병렬 처리) 알고리즘을 C와 같은 표준 언어로 작성할 수 있도록 하는 GPGPU 기술이다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

+ Recent posts

티스토리 툴바