본문 바로가기
개발관련/OpenCL

OpenCL 기초 공부(2)

by guuuuuuu 2014. 7. 30.

프로그램 분할 방법 

1. 데이터 병렬

2. 테스크 병렬


이 둘의 차이점은 같은 커널을 사용하는가(데이터 병렬) 아니면 다른 커널을 사용하는가(테스크 병렬)이다. 


함수 설명

clEnqueueNDRangeKernel() - 데이터 병렬로 커널을 실행한다. 

clEnqueueTask() - 테스크 병렬로 커널 실행한다. 

clEnqueuReadBuffer() - 병렬로 메모리를 읽는다.

clEnqueuWriteBuffer() - 병렬로 메모리를 쓴다. 


태스크 병렬과 이벤트 오브젝트 

커맨드 큐에 전달한 태스크는 기본적으로 병렬 실행된다. (의존 관계가 있는 태스크끼리는 병렬 실행하면 안된다.)

따라서 OpenCL에서는 이벤트 오브젝트를 사용해 태스크의 실행 순서를 지정한다. 

이벤트 오브젝트 : 커맨드 큐에 전달한 명령의 실행 상태를 나타내는 오브젝트 


순서대로 실행하지 않으면 안 되는 상황 = 병렬처리 불가능

순서를 바꿔 실행해도 괜찮은 상황 = 실행 환경이 병렬처리 가능한 때는 병렬처리됨. 그렇지 않은 때는 병렬처리되지 않음.

'개발관련 > OpenCL' 카테고리의 다른 글

First Kernel  (0) 2014.08.29
이클립스에서 opencl 테스트  (0) 2014.08.13
고속 푸리에 변환  (0) 2014.07.30
CUDA , gpgpu  (0) 2014.07.22
OpenCL 설치 및 개발  (0) 2014.07.22

댓글