NVlabs/cuda-oxide
cuda-oxide is an experimental Rust-to-CUDA compiler that lets you write (SIMT) GPU kernels in safe(ish), idiomatic Rust. It compiles standard Rust code directly to PTX — no DSLs, no foreign language bindings, just Rust.
해결하는 문제
cuda-oxide는 CUDA C++ 또는 도메인 전용 언어(DSL)에 의존하지 않고 순수한 Rust로 GPU 커널을 작성할 수 있게 해줍니다. 외부 언어 바인딩이 필요 없으며, 호스트 코드와 디바이스 코드가 동일한 파일에 존재하고 단일 명령어로 빌드 가능한 단일 소스 컴파일을 제공하는 커스텀 컴파일러 백엔드를 제공합니다.
작동 방식
이 프로젝트는 커스텀 rustc 코드 생성 백엔드를 구현합니다. Rust 소스 코드는 다단계 파이프라인을 통해 변환됩니다: Rust 소스 → Rust MIR → Pliron IR(MLIR 유사 중간 표현) → LLVM IR → CUDA PTX. 디바이스 측에서는 타입 안전한 인덱싱, 공유 메모리, 워프/클러스터 연산을 위한 추상화를 제공하며, 메모리 관리 및 커널 실행을 위한 호스트 측 런타임(cuda-core 및 cuda-async)도 함께 제공합니다.
대상 사용자
순수한 Rust의 안정성과 표현력을 활용해 고성능 GPU 커널을 개발하고자 하는 Rust 개발자, NVIDIA 하드웨어(Hopper 및 Blackwell 아키텍처 포함)를 사용하는 연구자 및 엔지니어에게 적합합니다. CUDA C++의 복잡성을 피하고 싶은 분들께 추천합니다.
주요 특징
- 단일 소스 컴파일: 호스트 코드와 디바이스 코드를 하나의 파일에서 관리하고
cargo oxide build로 빌드 가능. - 순수한 Rust 커널: 몰리모르피즘을 지원하는 제네릭 함수, 캡처를 가진 클로저, enum 및 패턴 매칭과 같은 표준 Rust 기능을 모두 지원.
- 포괄적인 GPU 지원: TMA, 클러스터, 바리어, 원자 연산 등 GPU 인트린직스에 완전히 접근 가능.
- 비동기 실행: 조합 가능한 비동기 GPU 작업을 위한 전용
cuda-async레이어. - 디바이스 상호운용성: LTOIR를 통한 Rust 및 C++/CCCL 상호운용을 지원하는 디바이스 FFI.
- 고급 하드웨어 지원: Blackwell 텐서 코어 및 GEMM 구현을 위한 특화 예제 포함.
관련
- Dispatch
- 프로젝트
- 프로젝트
- Dispatch
- Dispatch