global void VecAdd(float A, float B, float* C)
{
int i = threadIdx.x;
C[i] = A[i] + B[i];
}
int main()
{
...
// Kernel invocation with N threads
VecAdd<<<1, N>>>(A, B, C);
...
}
global -> cpu에서 gpu device를 쓰기 위해 Kernel를 불러와준다.
배열 정보, index는 grid size 와 block size로 정의된다.
grid size는 block 수, shape로 결정
1차원 배열일 때, 스레드 구성 제목 | BlockIndex | ThreadIndex |
---|---|---|
1차원 | blockIdx.y *, gridDim.x +, blockIdx.x | BlockIndex * blockDim.x + threadIdx.x |
2차원 | blockIdx.y *, gridDim.x +, blockIdx.x | BlockIndex blockDim.y blockDim.x + threadIdx.y * blockDim.x + threadIdx.x |
3차원 | blockIdx.y *, gridDim.x +, blockIdx.x | BlockIndex blockDim.z blockDim.y blockDIm.x + threadIdx.z blockDim.y blockDim.z + threadIdx.y blockDim.x + threadIdx.x |