NVlabs/cutile-rs
cuTile Rust provides a safe, tile-based kernel programming DSL for the Rust programming language. It features a safe host-side API for passing tensors to asynchronously executed kernel functions.
해결하는 문제
cuTile Rust는 관용적인 Rust를 사용하여 메모리 안전하고 데이터 경합이 없는 GPU 커널을 작성하는 방법을 제공합니다. 호스트(CPU)와 디바이스(GPU) 사이의 경계에 Rust의 소유권 및 대여 규칙을 확장함으로써 GPU 프로그래밍의 일반적인 수동 메모리 관리 위험과 동시성 버그를 제거합니다.
작동 원리
이 시스템은 타일 기반 접근 방식을 사용하여 GPU 메모리를 관리합니다. 가변 텐서는 실행 전에 서로 겹치지 않는 조각으로 분할되는 반면, 불변 텐서는 공유됩니다. #[cutile::module] 매크로는 커널의 Rust AST를 캡처하고 CUDA Tile IR을 통해 JIT 컴파일하여 GPU cubin을 생성합니다. 이를 통해 시스템은 소유권 및 액세스 규율(독점적 가변 액세스 또는 공유 읽기 전용 액세스 등)을 디바이스 코드에 직접 유지할 수 있습니다.
대상
전통적인 CUDA C++ 프로그래밍과 관련된 안전성 위험 없이 Rust로 고성능 GPU 커널을 작성하려는 개발자, 특히 compute capability sm_80 이상인 NVIDIA GPU를 대상으로 하는 개발자에게 적합합니다.
주요 특징
- 메모리 안전성: Rust의 소유권 규율을 GPU 커널로 확장하여 데이터 경합을 방지합니다.
- JIT 컴파일: 매크로 기반 시스템을 사용하여 Rust AST를 CUDA Tile IR로 컴파일합니다.
- 고성능: NVIDIA B200에서 GEMM 연산 시 밀집
f16피크 성능의 최대 92%에 도달하여 cuBLAS와 경쟁할 수 있습니다. - 유연한 실행: 동기식 실행, 비동기 파이프라인 및 CUDA 그래프 재생을 지원합니다.
- 통합: Qwen 3 추론 엔진인 Grout의 기반으로 사용됩니다.
관련
- Dispatch
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트