CUDA

CUDA 2D 블록 내 스레드 인덱싱(Thread Indexing) - 공부하는 도비

DOVISH WISDOM 2025. 1. 21. 15:35  
728x90
반응형

CUDA의 내장 변수를 사용해 스레드가 특정 데이터에 정확히 접근하도록 하는 인덱스 계산 방법을 스레드 인덱싱(thread indexing)이라고 한다. 오늘은 2D 블록 내 스레드 인덱싱에 대해 정리를 하고자 합니다. 

 

* Global Thread ID(전역 번호) : CUDA에서 각 스레드를 전역적으로 고유하게 식별할 수 있도록 정의된 ID를 의미함

 

Global Thread ID는 스레드 ID(threadIdx), 블록 ID(blockIdx), 블록의 크기(blockDim)를 사용해 계산합니다. 

2차원 블록(2D block)은 다음 그림으로 간단하게 정의할 수 있습니다. 

2차원 블록에서 스레드의 전역 번호 계산

 

thread(x, y)의 전역 번호는 아래 두 항목의 합입니다. 

- 자신이 속한 1차원 하위 블록 까지의 스레드 갯수 = blockDim.x * threadIdx.y

- 자신이 속한 1차원 하위 블록 에서 자신의 스레드 번호 = threadIdx.x