피드로 돌아가기
What happens when you run a CUDA kernel?
Hacker NewsHacker News
Infrastructure

CUDA 커널의 PTX-SASS 컴파일 파이프라인과 런타임 실행 메커니즘 분석

What happens when you run a CUDA kernel?

2026년 6월 29일36advanced

Context

CUDA 프로그램이 GPU 하드웨어에서 실행되기까지의 복잡한 컴파일 및 런타임 변환 과정을 분석함. 단순 소스 코드 실행 뒤에 숨겨진 수천만 개의 CPU 명령어와 수백 개의 ioctl 호출로 인한 오버헤드 및 추상화 계층의 작동 원리를 파악함.

Technical Solution

  • nvcc 드라이버를 통한 호스트 코드와 디바이스 코드의 분리 컴파일 및 결합 구조 설계
  • Device Agnostic한 가상 ISA인 PTX를 거쳐 특정 아키텍처(sm_89)에 최적화된 SASS로 변환하는 2단계 컴파일 전략 채택
  • Generic Pointer를 Global Address로 명시적으로 변환하는 cvta.to.global 과정을 통해 메모리 접근 효율성 확보
  • S2R(Special Register to Register) 명령어를 통한 하드웨어 전용 레지스터의 일반 레지스터 복사로 연산 유연성 증대
  • 21-bit Control Field를 활용한 Scoreboard Barrier 및 Stall Cycle 제어로 하드웨어 수준의 동기화와 실행 흐름 최적화
  • attribute((constructor)) 기반의 호스트 콜백을 통해 main 함수 실행 전 디바이스 바이너리를 런타임에 자동 등록하는 매핑 구조 구현

- GPU 커널 최적화 시 PTX 수준의 가상 레지스터 할당보다 SASS 수준의 실제 레지스터 사용량과 Stall Cycle 분석을 우선할 것 - 메모리 접근 성능 향상을 위해 Generic Pointer의 변환 과정이 SASS에서 어떻게 최적화되는지 확인 필요 - 런타임 커널 런칭 오버헤드를 줄이기 위해 커널 등록 및 매핑 과정의 메커니즘을 이해하고 최소화 전략 검토

원문 읽기