한 문장 요약: CUDA Rust는 GPU 커널을 Rust로 작성하는 두 경로를 제시하며, 메모리 소유권과 실행 조건을 어디서 검증할지 구체화한다.
무엇이 발표됐나
NVIDIA는 9월 8일 CUDA Rust의 SIMT 구현 cuda-oxide와 Tile 구현 cutile-rs를 공식 기술 블로그에서 소개했다. 두 프로젝트 모두 초기 단계이며 프로덕션용으로 준비되지 않았다고 명시했다. 이번 글의 기준일은 이 발표일이다. 보조 자료인 cuTile Rust 논문은 6월에 제출됐으므로 새 논문 발표로 다루지 않는다.
스레드와 타일, 서로 다른 검증 경계
cuda-oxide는 커스텀 rustc 백엔드다. 커널 함수를 Rust MIR, Pliron IR, LLVM IR을 거쳐 PTX로 컴파일하고 호스트 코드는 표준 백엔드로 처리한다. 개발자가 스레드 단위 동작을 작성하는 SIMT 방식이다. 공식 저장소의 DisjointSlice는 쓰기 가능한 슬라이스를 스레드별 영역으로 나눈다. 실행 계약을 선언한 커널은 준비 단계에서 실행 구성을 검사하고, 검사 결과를 안전한 호출의 조건으로 사용한다. 계약이 없는 원시 실행에는 호출자가 안전성을 입증할 책임이 남는다.
cutile-rs에서는 개발자가 데이터 타일의 연산을 표현하고 컴파일러가 실제 스레드 배치를 맡는다. 공식 저장소에 따르면 매크로가 커널의 구문 트리를 호스트 바이너리에 담고, 필요할 때 CUDA Tile IR을 통해 GPU 코드로 JIT 컴파일한다. 가변 출력 텐서는 실행 전에 겹치지 않는 조각으로 분할한다. 생성된 실행 함수는 GPU 작업 중에도 소유권 계약을 유지한다. 두 경로의 차이는 문법보다 병렬 쓰기와 실행 배치를 누가 책임지는가에 있다.
추론 인프라 개발자에게 중요한 이유
내 판단으로는 Rust 기반 서빙 팀이 작은 커스텀 연산부터 평가할 만한 변화다. Dynamo의 분산 추론 구조처럼 요청을 조정하는 계층에서 GPU 커널까지 내려갈 때, 버퍼의 읽기·쓰기 권한을 함께 추적할 수 있기 때문이다. 단, 같은 언어를 쓴다고 데이터 이동이나 동기화 비용이 사라지지는 않는다.
Tile은 메모리 배치를 컴파일러에 맡기는 출발점이고, SIMT는 스레드와 공유 메모리를 직접 조정할 때의 선택지다. NVIDIA는 SIMT의 공유 메모리에 아직 unsafe가 필요하다고 설명한다. Muse Glimmer의 로컬 추론처럼 메모리 여유가 작은 환경이라면 언어 선택과 별도로 중간 버퍼 크기와 재사용 시점을 측정해야 한다.
한계와 검증 포인트
도입 실험은 기존 CUDA 커널과 동일한 입력·정밀도·GPU에서 시작하는 편이 좋다. 경계 크기와 빈 입력의 정확성을 먼저 비교하고, 최초 JIT 시간과 캐시가 준비된 뒤의 실행 시간을 분리해 기록한다. 이후 동시 요청에서 버퍼 재사용과 동기화가 총지연에 주는 영향을 확인해야 한다. 컴파일 성공은 수치 정확성이나 성능의 증거가 아니다.
발표 기준 Tile 경로는 Linux, compute capability 8.0 이상 GPU, CUDA 13.3과 stable Rust 1.89 이상을 요구한다. SIMT 경로는 고정된 nightly 도구 모음 등 별도 준비가 필요하다. API 변경 가능성까지 고려하면 작은 연산의 교체 비용부터 확인하는 것이 합리적이다. 이 글은 AI로 공식 자료를 조사·구조화했으며 GPU 예제와 논문의 벤치마크를 직접 실행하지 않았다.
공식 1차 출처