Vector Sum for a Large Vector
하나의 Block에는 1024개의 threads를 사용할 수 있습니다.
그래서 1024보다 큰 수를 계산할때는 Block을 여러개 생성해서 진행해주면 됩니다.
여기에서 thread의 위치를 찾기 위해서는
위와 같이 위치를 찾을 수 있습니다.
blockDim.x: Block 하나안에 있는 thread의 수
blockIdx.x: 몇번째 Block인지 나타내는 수
threadIdx.x: Block안의 몇번째 thread인지 나타내는 수
Thread 위치 찾기 연습
- 1D block: threadIdx.x
- 2D block: blockDim.x * threadIdx.y + threadIdx.x
- 3D block: blockDim.x * blockDim.y * threadIdx.z + blockDim.x * threadIdx.y + threadIdx.x
- Grid내 global thread ID: blockIdx.x * blockDim.x * blockDim.y * blockDim.z + TID_IN_BLOCK
- 2D grid: blockIdx.y * (gridDim.x * NUM_THREAD_IN_BLOCK) + 1D_grid_TID
- 3D grid: blockIdx.z * (gridDim.y * gridDim.x * NUM_THREAD_IN_BLOCK) + 2D_grid_TID
※ NUM_THREAD_IN_BLOCK: block.x * blockDim.y * blockDim.z
출처:
https://www.youtube.com/watch?v=KLPHCovPnfg&list=PLBrGAFAIyf5pp3QNigbh2hRU5EUD0crgI&index=18
'Cuda' 카테고리의 다른 글
08_Memory_Architecture_CUDA (0) | 2021.08.30 |
---|---|
07_GPU_HardWare_CUDA (0) | 2021.08.30 |
05_How_Kernel_Works_CUDA (0) | 2021.08.30 |
04_Vector_Sum_CUDA (0) | 2021.08.27 |
03_Hello_CUDA_(Colab에서 CUDA 설정하기) (0) | 2021.08.26 |