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레이어를 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트