프로그래밍/OpenCL

OpenCL 시작하기

바람냥냥 2017. 7. 11. 21:13

OpenCL이란? Open Computing Language의 줄임말. 

"a framework suited for parallel programming of heterogeneous systems" 라고 정의합니다.


여기서 말하는 framework는 OpenCL의 C 언어 뿐만 아니라 컴파일러 그리고 runtime 환경 ? 라이브러리를 포함합니다.


그리고 heterogeneous systems은 이질 시스템,


적어도 두개 이상의 서로 다른 데이터 베이스 관리로 구축된 데이터 베이스 시스템라고 네이버 선생님이 설명해놓았군요.


여기서는 그런 의미보다는 CPU + GPU 하드웨어를 동시에 활용하는 시스템의 의미도 포함하는 것 같습니다.


OpenCL 프로그래밍은 Host code와 Device code를 각각 작성하여합니다.


- Device는 OpenCL의 C, 즉 *.cl 확장자로 코딩. Kernel로 사용됩니다.

- Host는 일반적인 C/C++ 코딩(*.cpp) 입니다.


1. Kernel 코드

__kernel void hello(__global char * string)


함수 지시자 : __kernel

주소 지시자 : __global


__kernel은 Device에서 실행되고 Host에서 호출


Task Call : clEnqueueTask()

Data-parallel call : clEnqueueNDRangeKernel()


2. Host Code

 : 호스트 프로그래밍 일반적인 순서는 아래와 같습니다.

  1. Get a list of available platforms
  2. Select device
  3. Create Context
  4. Create command queue
  5. Create memory objects
  6. Read kernel file
  7. Create program object
  8. Compile kernel
  9. Create kernel object
  10. Set kernel arguments
  11. Execute kernel (Enqueue task) ← hello() kernel function is called here
  12. Read memory object
  13. Free objects



출저 : https://www.fixstars.com/en/opencl/book/OpenCLProgrammingBook/basic-program-flow/