피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
CUDA 커널을 실행하면 내부에서 벌어지는 일
RTX 4090 기반 CUDA 커널의 CPU-GPU 통신 및 실행 메커니즘 분석
AI 요약
Context
단순한 벡터 덧셈 작업이라도 GPU 실행을 위해 복잡한 컴파일 파이프라인과 드라이버 호출 과정이 수반됨. 특히 CPU와 GPU 간의 비동기 명령 전달 체계와 메모리 대역폭 제한으로 인한 성능 병목 현상이 주요 분석 대상으로 설정됨.
Technical Solution
- NVCC를 통한 PTX 가상 ISA 생성 및 ptxas를 이용한 아키텍처별 SASS 기계어 변환 구조 설계
- Host Launch Stub 및 CUDA Runtime을 통해 인자를 Argument Buffer에 정렬하고 Driver API로 전달하는 인터페이스 구현
- Pushbuffer와 GPFIFO 기반의 Command Stream 구축 및 Doorbell MMIO 쓰기를 통한 GPU Host Engine의 즉각적인 작업 인지 체계 운용
- QMD(Queue Meta Data)를 통해 Grid/Block 크기, Register 요구량, Constant Bank 주소 등 실행 메타데이터를 GPU에 일괄 전달
- SM 내 Sub-partition 기반의 Warp Scheduler가 Resident Warp 중 Eligible 상태인 워프를 선택하여 Lane에 명령을 Dispatch하는 스케줄링 전략 적용
- Independent Thread Scheduling 모델을 통한 스레드별 Program Counter 및 Call Stack 유지로 실행 유연성 확보
실천 포인트
- 커널 설계 시 Thread당 Register 사용량을 최적화하여 SM당 Block Residency를 극대화했는지 검토 - Memory Bound 작업의 경우 산술 집약도를 높이기 위한 데이터 재사용 전략 수립 - Nsight Compute를 활용해 DRAM 피크 수치와 Warp Issue 비율을 분석하여 병목 지점 식별 - Driver API를 활용한 커널 핫 리로드(Hot Reload) 환경 구축으로 개발 사이클 단축 검토