GPU 구조 2 - SM
Categories:tech
GPU 구조 2 - SM
GPU 구조 시리즈
발생
오늘은 GPU의 구조 중 SM 에 대해 알아보겠다. NVDIA GPU 기준임을 명심하길 바란다.
SM(Streaming Multiprocessor)
SM 은 GPU 내부의 병렬 연산을 수행하는 기본 단위 블록을 뜻한다. 각 SM은 수십-수백개의 CUDA Core/ALU 를 포함한다. CPU가 소수의 코어로 직렬 연산을 수행하는 반면 GPU는 수십-수백개의 SM을 이용해 병렬 연산을 수행한다.
SM 구성 요소
하나의 SM은 다음과 같은 구성을 이룬다.
- CUDA Core
- 부동소수점 연산을 수행하는 기본 연산 장치
- Tensor Core
- 행렬 곱셈에 특화된 유닛
- Warp Scheduler
- 여러 스레드 그룹(=Warp)을 관리하고 실행 순서를 조정하는 장치
- 하나의 SM에는 여러 Warp Schedular가 있을 수 있다.
- Shared Memory (L1 Cache)
- 스레드 블록 간 데이터를 빠르게 공유하는 고속 메모리
- Load / Store Unit (LD / ST)
- 메모리 접근 담당 유닛
- SFU (Special Function Unit)
- 삼각함수, 제곱근 등 복잡한 수학 연산 처리 유닛
SM의 동작
GPU에서 실행되는 코드는 스레드 단위로 수행되며 이 스레드들이 SM 내부에서 병렬로 처리된다. 이때 스레드들이 처리되는 과정은 아래와 같다.
- 스레드 그룹화 : Thread -> Warp -> Block -> Grid
- FP32 ALU 기준으로 32개의 스레드가 하나의 Warp로 묶인다.
- 여러 Warp가 하나의 Block을 구성
- 여러 Block이 GPU 전체의 Grid를 구성한다.
- 스케줄링
- SM은 Warp Schedular를 이용해 여러 Warp를 CUDA Core로 실행하도록 동작
- Warp를 처리 중 메모리 접근 지연(latency)이 발생하면 다른 Warp로 전환하는 동작을 통해 효율을 유지한다.
- 병렬 연산
- 각 SM의 CUDA Core들이 동시에 여러 Warp의 연산을 수행한다.
간단히 정리하면 아래와 같다.
스레드 그룹화 -> Warp Scheduling (Warp 선택) -> 병렬 연산 (CUDA, Tensor Core 이용) -> Global Memory 통신 -> 결과 저장 -> Warp Scheduling (다음 Warp 선택) -> 반복
용어 정리
FP32 ALU 란? FP32 ALU = Floating Point 32-bit ALU 즉 32비트 부동소수점(실수) 연산을 수행하는 ALU 를 뜻 한다.
Warp 란? Thread의 그룹을 뜻 한다. FP32 기준으로 32개의 Thread = 1 Warp이다.
Grid 란? GPU의 커널이 실행될 때 생성되는 모든 Block 들의 집합을 뜻 한다.
CUDA 란? Compute Unified Device Architecture NVIDIA가 개발한 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델을 뜻 한다. GPU를 그래픽뿐만 아니라 범용 계산에서도 사용 할 수 있게 만든 컴퓨팅 아키텍쳐이다.
결론
SM은 GPU의 성능을 결정짓는 핵심이다.
- 많은 SM 수 -> 더 많은 병렬 연산을 가능
- 강력한 SM 구조 -> 연산 효율 향상
이런 SM을 이용해서 GPU의 연산 성능인 FLOPS도 알 수 있다.
$SM의\space수 \space \times SM당 \space 코어 \space수 \space \times 클럭 \space속도 \space = FLOPS$
오늘은 GPU의 핵심인 SM에 대해 간단히 알아보았다.
GPU에 대해 점점 이해가 되고 있다.
Day-38