- 함수 한정자 [ Function qualifier]
Qualifier |
Description. |
__global__ |
1. 리턴값은 항상 void 2. <<< >>> 를 이용해서 블록,쓰레드,공유메모리크기, Stream 객체 정보를 설정할 수 있다. 3. 재귀호출 X 4. static 변수 X 5. __host__ 와 같이 사용X 6. 가변인수를 가질 수 없다. 7. 디바이스에서 처리되기 전에 반환되는 비동기 동작을 함. 8. 256 바이트 까지 인수를 사용 가능. |
__device__ |
1. 디바이스에서만 호출된다. 2. 재귀호출 X 3. 가변인수 X 4. __device__ 함수 포인터 X |
__host__ |
1. qualifier 가 명시가 안될 때, 기본값. 2. __global__과 함께 사용못한다. 3. __device__ 와 함께 선언하여, 디비이스, 호스트에서 호출할 수 있다. |
|
|
- 변수 한정자 [Variable qualifier]
Qualifier |
Description |
__device__ |
1. 글로벌 메모리에 할당 2. 프로그램이 종료될 때까지 유효. 3. 모든 쓰레드가 접근 가능. 4. 호스트에서 API를 통해 접근 가능. |
__constant__ |
1. 상수메모리 영역에 할당됨. 2. 프로그램이 종료될 때까지 유효. 3. 모든쓰레드가 읽기만 가능. 4. 호스트에서 cudaMemcpyToSymbol() 를 통해 값을 쓸 수 있다. |
__shared__ |
1. 블록내 공유메모리에 할당됨. 2. 블록내 모든 쓰레드상에서 유효하다. 3. 읽고/쓰기가 빠름. |