엔비디아(NVIDIA)가 러스트(Rust) 언어로 GPU 프로그래밍을 할 수 있는 'CUDA 러스트'를 공식 발표했습니다. 이는 단순히 다른 언어로 작성된 커널을 호출하는 래퍼(wrapper)를 넘어, GPU에서 직접 실행될 커널 코드 자체를 러스트로 작성하고 엔비디아의 병렬 스레드 실행(PTX) 코드로 컴파일하는 두 가지 개발 경로를 제공합니다. 러스트는 성능과 안전성을 동시에 제공하는 언어로, AI 시스템 계층에서 그 활용도가 점차 증가하고 있습니다.
CUDA 러스트는 크게 두 가지 개발 경로를 제시합니다. 첫 번째는 'cuda-oxide'로, 스레드와 메모리를 직접 제어하는 SIMT(Single Instruction, Multiple Threads) 방식입니다. 이는 CUDA C++에서 주로 사용되는 모델과 유사하며, 개발자가 세밀한 제어를 할 수 있도록 돕습니다. 두 번째는 'cutile-rs'로, 데이터를 타일(tile) 단위로 묶어 계산을 작성하고 실제 스레드 배치는 컴파일러에 맡기는 방식입니다. 엔비디아는 일반적으로 cutile-rs를 먼저 고려하고, 아키텍처별 제어나 직접적인 메모리/스레드 관리가 필요할 때 cuda-oxide를 사용할 것을 권장합니다. 두 방식 모두 러스트의 '빌림(borrowing)'과 '소유권(ownership)' 개념을 활용해 입력 및 출력 버퍼가 같은 메모리를 잘못 참조하는 흔한 오류를 컴파일 시점에 방지합니다.
이러한 지원은 아직 초기 단계로, cuda-oxide는 알파 버전이며 cutile-rs는 외부 프로젝트에서 사용 중이지만 기능이 불완전하고 API 변경 가능성이 있습니다. 그럼에도 불구하고, 러스트의 강점인 메모리 안전성과 고성능은 AI 추론 엔진, 서빙 인프라, 드라이버 등 AI 시스템 전반에서 러스트 사용을 늘리는 주요 원인입니다. 엔비디아 역시 Nova 리눅스 드라이버를 러스트로 작성하고, Dynamo를 러스트 코어 위에 구축하는 등 내부적으로 러스트 활용을 확대하고 있습니다. CUDA 러스트는 개발자들이 GPU 가속 애플리케이션을 더 안전하고 효율적으로 구축할 수 있는 새로운 길을 열어줄 것으로 기대됩니다.