페이지

2015년 1월 2일 금요일

CUDA Modifier (수식어: 함수 / 변수 , Kernel 함수)

- 함수 수식어 -

1. Kernel 함수 : __global__

 - GPU에서 동작하는 명령어 세트의 조합. 수많은 코어에서 동시에 멀티스레드로 동작
 - Host에서 호출. Device에서 실행 됨. (Device에서는 호출 불가)
 - Device 함수 호출 가능
 - 리턴값은 항상 void
 - <<<, >>>를 이용하여 실행시 블록, 스레드 지정
 - 재귀호출 불가
 - 함수 내 static 변수를 가질 수 없다.
 - 가변형 인수를 가질 수 없다.
 - 함수 포인터 이용 가능
 - Device에서 처리가 완료되기 전에 호출 즉시 반환하여 비동기 동작

2. Device 함수 : __device__

 - Device에서 실행
 - Device에서 호출 가능, Host에서 호출 불가
 - 재귀호출 불가
 - Kernel 함수의 Sub함수로 사용됨
 - 함수 내 static 변수를 가질 수 없다.
 - 가변형 인수를 가질 수 없다.
 - 함수 포인터 이용 불가

3. Host 함수 : __host__ 또는 생략

 - Host에서 실행
 - Host에서 호출 가능. Device에서 호출 불가 (단 __device__ 와 동시에 사용하면 Device에서도 호출 가능)

 - 변수 수식어 -

1. __device__ : Global 영역(DRAM)에 할당. 모든 Thread가 Read/Write 가능
2. __constant__ : Contant Memory에 할당. 모든 Thread가 Read만 가능. Constant Cache가 함께 사용됨.
3. __shared__ : Block내의 Shared Memory에 할당. Block 내의 Thread는 Read/Write 가능

댓글 없음:

댓글 쓰기