GPU에서의 두려움 없는 병행성 (Fearless Concurrency)
요약
Rust의 소유권 모델을 GPU 커널 작성으로 확장한 타일 기반 시스템인 cuTile Rust를 소개합니다. 이 시스템은 안전하고 관용적인 GPU 프로그래밍을 지원하며, NVIDIA B200 등 하이엔드 GPU에서 높은 성능을 유지합니다.
핵심 포인트
- Rust의 소유권 규율을 타일 기반 GPU 커널로 확장
- 가변 출력을 겹치지 않는 조각으로 분할하여 안전성 보장
- NVIDIA B200에서 GEMM 연산 시 cuBLAS의 96% 성능 달성
- 추론 엔진 Grout를 통해 Qwen3 모델에서 경쟁력 있는 성능 입증
Rust는 CPU에서 안전한 시스템 프로그래밍 (systems programming)을 실용적으로 만들어 왔지만, Rust로 커스텀 GPU 커널 (GPU kernels)을 작성하는 것은 여전히 프로그래머를 해당 언어의 소유권 보장 (ownership guarantees) 범위 밖으로 몰아냅니다. 우리는 Rust에서 안전하고 관용적인 (idiomatic) GPU 커널 작성을 위한 타일 기반 (tile-based) 시스템인 cuTile Rust를 선보입니다. cuTile Rust는 Rust의 소유권 규율 (ownership discipline)을 타일 기반 GPU 커널로 확장합니다. 즉, 가변 출력 (mutable outputs)은 서로 겹치지 않는 조각들로 분할되며, 커널 실행 (kernel launches)은 호스트 측의 소유권 계약 (ownership contract)을 유지하고, 프로그래머는 더 낮은 수준의 제어가 필요할 때 로컬에서 이를 선택적으로 제외 (opt out)할 수 있습니다. 또한 이 시스템은 동기식 실행 (synchronous launches), 비동기 파이프라인 (asynchronous pipelines), 그리고 CUDA 그래프 재생 (CUDA graph replay)을 아우르는 조합 가능한 호스트 실행 모델을 제공합니다. 우리의 평가 결과, 이러한 추상화 (abstractions)가 하이엔드 GPU에서 성능을 유지할 수 있음을 보여줍니다. NVIDIA B200 GPU에서 cuTile Rust는 요소별 연산 (element-wise operations)에 대해 7 TB/s를, GEMM에 대해 2 PFlop/s (cuBLAS의 96%)를 달성하며, 측정 오차 범위 내에서 cuTile Python과 일치하는 성능을 보입니다. cuTile-Rust 기반의 추론 엔진인 Grout는 엔드 투 엔드 (end-to-end) Qwen3 추론 경로 전반에 걸쳐 cuTile Rust를 활용합니다. 배치-1 디코드 (batch-1 decode)에서 Grout는 NVIDIA GeForce RTX 5090에서 Qwen3-4B에 대해 초당 171개의 생성 토큰을, B200에서 Qwen3-32B에 대해 초당 82개의 생성 토큰을 달성하며, 이는 vLLM 및 SGLang과 경쟁할 만한 수준이며 HBM 루프라인 (HBM roofline) 검증 결과와도 일치합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기