- 함수 수식어 -
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 가능
댓글 없음:
댓글 쓰기