NVIDIA/cuda-rust

NVIDIA's CUDA platform for Rust. Host runtime crates plus Tile (cutile-rs) and SIMT (cuda-oxide) kernel programming models in idiomatic Rust.

해결하는 문제

C++나 도메인 특화 언어 (DSLs) 대신 순수 Rust로 GPU 커널을 작성할 수 있게 합니다. 커스텀 컴파일러 백엔드를 제공함으로써 외부 언어 바인딩의 필요성을 없애고, 호스트 코드와 디바이스 코드를 같은 파일에 공존시켜 고성능 CUDA 애플리케이션 개발을 단순화합니다.

작동 원리

이 프로젝트는 Rust 코드를 직접 CUDA PTX로 컴파일하는 커스텀 rustc 백엔드를 구현합니다. 네이티브 Rust 컴파일 파이프라인 (Rust $\rightarrow$ Rust MIR $\rightarrow$ Pliron IR $\rightarrow$ LLVM IR $\rightarrow$ PTX) 을 사용합니다. 메모리 관리 및 커널 실행을 위한 호스트 측 런타임과 타입 안전 인덱싱, 공유 메모리, warp/cluster 작업을 위한 디바이스 측 추상화를 포함합니다.

대상 사용자

GPU 프로그래밍에서 Rust의 안전성과 표현력을 원하는 시스템 프로그래머 및 AI 연구원, 특히 NVIDIA 하드웨어를 타겟으로 하는 개발자.

주요 특징

  • 단일 소스 컴파일: 호스트 코드와 디바이스 코드를 하나의 파일에서 관리하며 단일 명령어 (cargo oxide build) 로 빌드합니다.
  • 순수 Rust 커널: 단형화 (monomorphization) 를 지원하는 제네릭 함수와 캡처가 있는 클로저를 지원합니다.
  • 포괄적인 GPU 지원: 스레드/warp 작업, 공유 메모리, 배리어, TMA, 클러스터를 포함한 CUDA 인트린직에 대한 완전한 액세스를 제공합니다.
  • 고급 상호 운용성: LTOIR을 통한 Rust와 C++/CCCL 간의 디바이스 측 FFI 상호 운용성을 지원합니다.
  • 비동기 런타임: 구성 가능한 비동기 GPU 작업을 위한 cuda-async 레이어를 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트