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.
해결하는 문제
GPU 커널 작성은 전통적으로 오류가 발생하기 쉬우며, 종종 메모리 안전성 문제와 데이터 경합으로 이어집니다. cuTile Rust는 Rust의 엄격한 소유권 및 대여 규칙을 GPU로 확장하여 커널이 설계상 메모리 안전하고 데이터 경합이 없도록 보장하는 시스템을 제공합니다.
작동 방식
가변 출력은 겹치지 않는 조각(타일)으로 분할하고 읽기 전용 입력은 공유하는 타일 기반 접근 방식을 사용합니다. 이 시스템은 #[cutile::module] 매크로를 사용하여 Rust 함수를 GPU 커널로 변환하고 호스트 측 런처를 생성합니다. 이러한 커널은 CUDA Tile IR을 통해 JIT 컴파일되어 동기식 실행, async/await를 통한 실행 또는 CUDA 그래프 리플레이로 실행될 수 있습니다.
대상 사용자
기존의 CUDA C++ 대신 Rust의 안전성 보장을 사용하여 고성능 GPU 커널을 작성하려는 개발자, 그리고 맞춤형 최적화 GPU 작업이 필요한 머신러닝 추론 엔진(Grout 또는 Candle 등)을 구축하는 연구자.
주요 특징
- 메모리 안전성: Rust의 소유권 규칙을 장치 측으로 확장하여 데이터 경합을 방지합니다.
- JIT 컴파일: CUDA Tile IR을 사용하여 커널을 즉석에서 컴파일합니다.
- 유연한 실행: 동기식, 비동기식 및 CUDA 그래프 리플레이 실행 모드를 지원합니다.
- 고성능: GEMM 작업에서 cuBLAS에 근접한 성능을 달성할 수 있으며, LLM 추론을 위한 높은 처리량을 제공합니다.
관련
- Dispatch
- Dispatch
- 프로젝트
- 프로젝트
- Dispatch