Search
Duplicate

AI/ GPU Hierarchy - Thread, Memory

GPU Thread Hierarchy

GPU의 Thread 계층 구조는 다음과 같다. Streaming Multiprocessor 상위로 Cluster, Scheduler와 GPU 칩 전체(GPU Die)가 존재하지만 생략.
이름
특징
Thread
- GPU의 가장 작은 실행 단위
Warp
- 여러 thread의 묶음(NVIDIA 기준 32개) - 동일한 warp 내의 thread들은 동기화된 상태로 같은 명령을 동시에 수행한다.
Thread Block
- 여러 Warp의 묶음 - 동일한 block 내의 thread들은 공동으로 shared memory를 사용하며 block 단위로 동기화 될 수 있다.
Streaming Multiprocessor(SM)
- 여러 Thread Block을 관리 - Thread Block을 스케쥴링하고 해당 block 내의 warp와 thread 실행을 관리한다. - 각 SM은 독립적인 제어 장치와 메모리 계층 구조(register, shared memory, L1 cache)를 갖는다.

GPU Memory Hierarchy

GPU의 메모리 계층 구조는 다음과 같다. 계층 구조 상 연산기에 가까울 수록 빠르지만 용량이 작다.
메모리
특징/ 위치/ 접근 가능성
Register
- 각 thread마다 고유하게 할당 되며 연산에 사용됨 - GPU 칩 내부의 Stream Multi-processor(SM) 내에 존재 - 프로그래머가 직접 제어할 수 없지만 변수 선언 등으로 간접적으로 사용 가능
Shared Memory(SRAM)
- 동일한 block 내의 thread 사이에 데이터를 공유하는 메모리 - GPU 칩 내부의 SM 내에 존재 - __shared__ 키워드를 사용하여 프로그래머가 직접 제어 가능
L1 Cache
- SM 내의 모든 thread가 공유하는 캐시 - GPU 칩 내부의 SM 내에 존재 - 프로그래머가 제어할 수 없으며 하드웨어가 자동으로 관리
L2 Cache
- 모든 SM이 공유하는 캐시 - GPU 칩 내부 지만 SM 외부에 존재하여 모든 SM이 공유 - 프로그래머가 제어할 수 없으며 하드웨어가 자동으로 관리
Local Memory(HBM)
- GPU의 모든 thread가 고유하게 사용하는 메모리 - GPU 칩 외부에 존재 - 프로그래머가 직접 접근 가능
Global Memory(HBM)
- GPU의 모든 스레드가 접근할 수 있는 메모리 - GPU 칩 외부에 존재 - 프로그래머가 직접 접근 가능
내부 메모리 (GPU 프로세서 내) ------------------------------------- | 스트림 멀티프로세서 (SM) | | ------------------------------- | | | 레지스터 파일 | | | | (Registers) | | | ------------------------------- | | | 공유 메모리 | | | | (Shared Memory) | | | ------------------------------- | | | L1 캐시 | | | | (L1 Cache) | | | ------------------------------- | ------------------------------------- L2 캐시 (모든 SM이 공유) --------------------------- | L2 캐시 | | (L2 Cache) | --------------------------- 외부 메모리 (GPU 칩 외부) ---------------------------- | 글로벌 메모리 | | (Global Memory, HBM) | | (큰 용량, 느림) | ----------------------------
Plain Text
복사