GPU는 스케줄링을 어떻게 할까?

Novelike·2025년 4월 24일
1

Tech

목록 보기
3/8

Generic block diagram of a GPU

GPU는 대형 GCA에 많은 코어를 탑재하고, SM마다 워프(32스레드) 단위로 쓰레드를 스케줄링한다. 하드웨어 워프 스케줄러는 매 사이클 준비된 워프를 선택해 실행하며, 한 워프가 메모리 지연 시 0 오버헤드로 즉시 다른 워프로 전환한다 (cuda - Measure the overhead of context switching in GPU - Stack Overflow) (What is a Warp Scheduler? | GPU Glossary). 많은 스레드가 병렬로 실행되기 때문에 GPU는 높은 처리량을 달성한다.

CPU 스케줄링과 GPU 비교

CPU 스케줄러는 소수 스레드에 공정한 CPU 시간을 분배하도록 설계되었다. 문맥전환 시 레지스터/캐시를 저장·복원해야 해 오버헤드가 크다(수백 사이클) (What is a Warp Scheduler? | GPU Glossary). 반면 GPU는 워프 전환에 저장 단계가 없어 0 오버헤드로 즉시 다른 워프를 실행한다 (cuda - Measure the overhead of context switching in GPU - Stack Overflow) (What is a Warp Scheduler? | GPU Glossary). GPU는 대역폭/병렬성을, CPU는 응답성/공정성을 중시한다.

GPU 기술: 프리엠션과 다중 커널

최신 GPU는 제한적 커널 프리엠션을 지원한다. NVIDIA Pascal부터 컴퓨팅 프리엠션이 도입되어 긴 커널도 명령어 단위로 중단할 수 있다 (1. Pascal Tuning Guide — Pascal Tuning Guide 12.8 documentation). 긴 연산 도중에도 GUI 반응성이 개선되고 디버깅이 수월해진다. Hyper-Q나 CUDA 멀티스트림으로 여러 커널이 병렬 실행될 수 있다.

스케줄링 방식장점단점
GPU 워프문맥전환 0, 처리량↑ (cuda - Measure the overhead of context switching in GPU - Stack Overflow)공정성↓
GPU 메모리대역폭↑ (Anatomy of GPU Memory System for Multi-Application Execution)공정성↓, 일부 요청 대기
CPU 스케줄링공정 분배, 우선순위 지원문맥전환 오버헤드↑, 캐시↓ (What is a Warp Scheduler? | GPU Glossary)
GPU 프리엠션인터랙티브 반응↑, 디버깅 용이 (1. Pascal Tuning Guide — Pascal Tuning Guide 12.8 documentation)상태 스왑 비용↑

GPU 스케줄링 구조와 특징

GPU는 수백~수천개의 코어로 구성되어 대용량 데이터를 병렬 처리한다. 커널은 CTA(블록)로 분할되어 각 SM에 할당되며, 각 SM의 워프 스케줄러는 지연된 워프 대신 준비된 워프를 실행해 대기시간을 숨기고 처리량을 극대화한다 (Anatomy of GPU Memory System for Multi-Application Execution) (The Role of Warps in Parallel Processing: Optimizing GPU Performance for High-Speed Computing | DigitalOcean). 메모리 컨트롤러는 FR-FCFS 스케줄러로 DRAM 행 히트를 우선 처리해 메모리 처리량을 개선한다 (Anatomy of GPU Memory System for Multi-Application Execution).

CPU vs GPU 스케줄링

워프/웨이브프론트 스케줄링

GPU는 32(AMD는 64)개 스레드를 가진 워프(웨이브프론트)를 실행 단위로 사용한다. 각 SM은 여러 워프를 대기시키고, 워프 스케줄러가 실행 가능한 워프에게 명령을 발행하여 병목을 줄인다 (The Role of Warps in Parallel Processing: Optimizing GPU Performance for High-Speed Computing | DigitalOcean).

메모리 액세스 스케줄링

GPU 메모리 컨트롤러는 FR-FCFS 방식을 사용해 DRAM 행 히트를 우선 처리한다 (Anatomy of GPU Memory System for Multi-Application Execution).

드라이버-하드웨어 협업

드라이버/OS는 큰 단위의 커널 작업 제출을 관리한다. 리눅스 DRM 스케줄러는 프로세스별 큐를 생성하여 FIFO로 작업을 순서대로 처리한다 (DRM Memory Management — The Linux Kernel documentation). 제출된 커널은 GPU 하드웨어가 워프 단위로 실행한다. 최신 GPU는 커널 단위 프리엠션을 지원하지만, 맥락 전환 비용이 커 지나친 프리엠션은 성능 저하를 초래할 수 있다.

요약

GPU는 워프 병렬성과 하드웨어 스케줄러로 메모리 지연을 숨기며 처리량 극대화에 최적화되어 있다. 반면 CPU는 소수 스레드를 선점 방식으로 스케줄링해 응답성공정성을 중시한다.
GPU 스케줄링은 워프 병렬 실행과 FR-FCFS 기반 메모리 스케줄링으로 처리량을 극대화한다 (The Role of Warps in Parallel Processing: Optimizing GPU Performance for High-Speed Computing | DigitalOcean)
(Anatomy of GPU Memory System for Multi-Application Execution).
반면 CPU는 CFS/RR로 타임슬라이스를 분배해 공평히 처리한다 (CFS Scheduler — The Linux Kernel documentation).

profile
주니어 개발자

0개의 댓글