다음은 CUDA를 이용하여 GPU(이하 Device)에서 Hello World 문자를 설정하고 이를 CPU(이하 Host)에서 출력하는 프로그램 예제이다.
#include <stdio.h> /* 1) */ /* 2) */ /* 3) */ /* 4) */ /* 5) */ |
1) 에서 __global__ 수식어구는 이 함수가 Device에서 동작하도록 컴파일되어야 한다는 것을 알려주는 것이다.
2) 는 Device의 메모리를 할당하는 함수이다. 다음과 같이 이용 가능하다.
이때 Host의 Pointer 변수가 Device의 Pointer로 사용되는데 이 Pointer는 Device에서 실행되는 함수에 전달 가능하며 Device에서 실행되는 함수에서 읽기 쓰기가 가능하다. Host에서 실행되는 함수에서는 이 포인터를 이용하여 읽거나 쓰는 것은 불가능하다.
3) Device의 함수를 호출하는 수식어구이다. 의미는 <<<X,Y>>> 에서 X는 병렬 실행할 커널 복사본의 개수이다. Y는 하나의 블록안에 실행할 스레드의 개수이다.
4) 는 memory를 copy하는 함수로 다음과 같이 이용가능하다.
이때 cudaMemcpyKind 값을 넘겨주는데 이 값은 다음과 같이 정의된다.
5) 는 Device에 할당된 메모리를 해제하는 함수이다.