OpenCL Architecture
OpenCL에서 사용되는 개념은 아래와 같다.
Host 즉 CPU에서 Command와 Data를 Device로 보낸다.
이는 Command Queue로 저장된다.
Code의 실행은 순차적으로 진행되다가 Parallel하게 진행되는 방식으로 이루어진다.
Host에서 Serial하게 진행하고 parallel code는 Device에서 실행하게 된다.
Work Item은 N Dimension Work Item으로 만들어진다.
Global Domain으로 1024 x 1024로 만들어진다.
이 Global Domain에서 32x32로 Local Dimension으로 나누어서 한번에 실행된다.
Work Item : OpenCL Device상에서 계산이 이루어지는 기본 유닛
Kernel : Work Item을 구동시키는 code
Program : Work Item 을 구동시키는 Kernel과 기타 함수들의 모음
Context :
Command Queue : Host에서 Device로 보내지는 work의 pipeline
메모리 모델은 아래와 같다.
Private Memory는 각 Work Item별로 할당된 메모리이다.
Local Memory는 Work Group별로 할당된 메모리를 의미한다.
Global / Constant memory는 모든 Work Group에서 보여지는 메모리를 의미한다.
Host Memory는 당연히 Host용 메모리를 의미함.
Host -> Global -> Local -> Private 순으로 메모리의 데이터를 옮길 수 있다.