NVIDIA, Rust 네이티브 GPU 프로그래밍 지원 발표

2 weeks ago 27

CUDA Rust는 다른 언어로 작성한 커널을 호출하는 래퍼를 넘어, GPU 커널 자체를 Rust로 작성하고 네이티브 PTX로 컴파일하는 두 가지 개발 경로를 제공함 cuda-oxide는 스레드와 메모리를 직접 제어하는 SIMT 방식이며, cutile-rs는 데이터 타일 단위로 계산을 작성하고 실제 스레드 배치를 컴파일러에 맡기는 방식임 NVIDIA는 Tile을 먼저 선택하고, 아키텍처별 제어나 직접적인 메모리 및 스레드 관리가 필요할 때 SIMT를 사용할 것을 권장함 두 경로 모두 Rust의 빌림과 소유권으로 입력과 출력 버퍼가 같은 메모리를 잘못 참조하는 상황을 컴파일 시점에 차단함. 다만 SIMT의 공유 메모리 사용에는 현재 unsafe가 필요함 두 프로젝트 모두 프로덕션용으로 준비되지 않은 초기 단계임. cuda-oxide는 초기 알파이며, cutile-rs는 외부 프로젝트에서 사용 중이지만 기능이 불완전하고 API도 변경될 예정임 Rust에서 커널까지 작성하는 CUDA 추론 엔진, 서빙 인프라, 드라이버, 에이전트 런타임 등 AI 시스템 계층에서 Rust 사용이 늘고 있음. 성능을 포기하지 않으면서 여러 종류의 버그를 컴파일 시점에 잡을 수 있기 때문임 NVIDIA도 Nova Linux 드라이버를 Rust로 작성하고, NVIDIA Dynamo를 Rust 코어 위에 구축했으며, NVTX에 Rust 바인딩을 제공함 기존에는 Rust에서 GPU 커널을 실행하더라도 커널 자체는 다른 언어로 작성해야 하는 경우가 많았음. CUDA Rust는 커널 자체를 Rust로 작성하고 PTX로 네이티브 컴파일하는 경로를 제공함 NVIDIA는 2026년 9월 Rust 네이티브 GPU 프로그래밍에 대한 투자를 발표했으며, 2027년 이후에도 CUDA Rust를 발전시킬 계획임 CUDA C++와 CUDA Python은 이미 성숙한 엔터프라이즈급 도구 체인이지만, CUDA Rust는 아직 성숙도를 높여가는 단계임 SIMT와 Tile의 선택 기준 SIMT에서는 스레드 하나가 수행할 작업을 작성한 뒤 수천 개의 스레드를 실행함. CUDA C++와 numba-cuda에서 사용하는 모델임 Tile에서는 데이터 타일 하나에 대한 계산을 작성하고, Tile IR 컴파일러가 나머지를 처리함 C++와 Python에서도 사용할 수 있는 모델임 우선 Tile을 선택하면 컴파일러가 아키텍처별 타일 배치를 결정하므로 소스에 아키텍처별 선택을 직접 담지...

Read Entire Article