# NVIDIA, GPU 커널까지 Rust로 쓰게 합니다

> NVIDIA가 Rust로 GPU 커널을 직접 작성하는 CUDA Rust의 두 방식, cuda-oxide와 cutile-rs를 공개했습니다. 컴파일러가 막는 실수와 아직 초기인 단계를 함께 살핍니다.

- 출처 사이트: AI피셜 (https://aifficial.net/posts/nvidia-cuda-rust-gpu-kernels/)
- 발행: 2026-09-17
- 카테고리: AI 인프라 · 태그: NVIDIA, CUDA, Rust, GPU, 오픈소스

## 핵심 답변

NVIDIA는 2026년 9월 8일 기술 블로그에서 GPU에서 실행되는 함수인 GPU 커널(GPU kernel)을 Rust로 직접 작성하는 CUDA Rust를 소개했습니다. 스레드 하나의 동작을 쓰는 cuda-oxide와 데이터 덩어리(tile) 하나의 계산을 쓰는 cutile-rs 두 방식이 있으며, 두 방식 모두 여러 스레드가 같은 메모리에 동시에 쓰는 실수를 컴파일 단계에서 막는 예를 보여 줍니다. NVIDIA는 두 프로젝트 모두 아직 초기 단계이며 실제 서비스 환경에 쓸 준비가 되지 않았다고 밝혔습니다.

## 한 장 요약(만화)

![AI피셜 마스코트 AI가 Rust로 옮겨 가는 AI 시스템, GPU 커널이라는 빈칸, cuda-oxide의 스레드 방식, cutile-rs의 타일 방식, 컴파일러가 막는 메모리 충돌, 아직 초기 단계라는 한계를 차례로 설명하는 학습만화](https://aifficial.net/images/posts/nvidia-cuda-rust-gpu-kernels/learning-comic_v1.0.0.webp)

## 요약

- NVIDIA는 AI 추론 엔진과 드라이버처럼 Rust로 쓰는 시스템이 늘었지만, GPU에서 도는 커널만은 다른 언어로 써야 했다고 설명합니다. CUDA Rust는 그 커널을 Rust로 쓰고 GPU용 코드인 PTX로 바로 컴파일합니다.
- cuda-oxide는 스레드 하나가 할 일을 쓰고 수천 개를 띄우는 SIMT 방식이고, cutile-rs는 데이터 조각 하나의 계산을 쓰면 컴파일러가 실제 GPU 스레드 배치를 정하는 Tile 방식입니다. NVIDIA는 Tile을 먼저 쓰라고 권합니다.
- 두 방식 모두 출력 버퍼를 입력으로 함께 넘기는 코드를 컴파일 오류로 막습니다. 스레드 순서에 따라 결과가 달라지는 버그를 실행 전에 잡는다는 뜻입니다.
- cuda-oxide는 초기 알파, cutile-rs는 crates.io에 공개돼 Hugging Face의 Grout 추론 엔진과 mistral.rs에서 쓰이고 있다고 NVIDIA는 밝혔습니다. Hacker News에서는 공개 일주일 뒤인 9월 16일 글이 올라와 17일 오전 699점을 받았습니다.

## 핵심 사실

| 항목 | 값 |
|---|---|
| 발표 | 2026-09-08 (NVIDIA 기술 블로그 “Introducing CUDA Rust: Two Tracks for Writing GPU Kernels”의 게시일입니다.) |
| SIMT 방식 | cuda-oxide (rustc 코드 생성 백엔드입니다. 초기 알파이며 고정된 nightly 도구 모음이 필요합니다.) |
| Tile 방식 | cutile-rs (CUDA 13.3과 안정판 Rust 1.89 이상에서 동작하며 crates.io에 공개됐습니다.) |
| 공통 요구 사항 | Linux · 연산 능력 8.0 이상 GPU (블로그가 밝힌 두 방식의 최소 조건입니다.) |
| HN 반응 | 699점 · 275댓글 (2026-09-17 10:14 UTC 관측값이며 계속 바뀝니다.) |


GPU로 계산을 돌리는 프로그램은 두 부분으로 나뉩니다. CPU에서 데이터를 준비하는 코드와, GPU 안에서 수천 개 스레드로 동시에 실행되는 함수인 GPU 커널(GPU kernel)입니다. NVIDIA는 9월 8일 기술 블로그에서 이 커널까지 Rust로 직접 쓰는 CUDA Rust를 소개했습니다. 

NVIDIA는 이유를 이렇게 설명합니다. 추론 엔진, 서빙 인프라, 드라이버처럼 AI 시스템을 받치는 코드는 점점 Rust로 쓰이고, NVIDIA의 Nova Linux 드라이버와 Dynamo도 Rust를 씁니다. 그런데 GPU 커널만은 Rust에서 실행을 지시할 수 있을 뿐, 커널 자체는 다른 언어로 써야 했습니다. CUDA Rust는 Rust로 쓴 커널을 NVIDIA GPU용 어셈블리 형식인 PTX(Parallel Thread eXecution)로 바로 컴파일합니다. 



## 두 갈래: 스레드를 쓰느냐, 데이터 조각을 쓰느냐

CUDA Rust에는 두 방식이 있습니다. 첫째는 cuda-oxide가 맡는 단일 명령·다중 스레드(single instruction, multiple threads, SIMT) 방식입니다. 개발자가 스레드 하나가 할 일을 쓰면 GPU가 같은 일을 수천 개 스레드로 실행합니다. 기존 CUDA C++와 같은 사고방식입니다. 

둘째는 cutile-rs가 맡는 Tile 방식입니다. 개발자는 데이터를 나눈 조각(tile) 하나에 어떤 계산을 할지만 쓰고, 그 조각을 실제 GPU 스레드 몇 개로 처리할지는 컴파일러가 정합니다. NVIDIA는 코드에 특정 GPU 구조에 맞춘 선택이 남지 않는다는 이유로 Tile을 먼저 쓰고, 스레드와 메모리를 직접 다뤄야 할 때 SIMT로 내려가라고 권합니다. 



두 방식은 요구 조건도 다릅니다. 블로그에 따르면 cuda-oxide는 Linux, 연산 능력(compute capability) 8.0 이상의 GPU, CUDA 툴킷 12.x 이상, clang, 날짜가 고정된 nightly Rust가 필요합니다. cutile-rs는 CUDA 13.3과 안정판 Rust 1.89 이상이면 되고 별도 LLVM 설치가 필요 없습니다. 

## 컴파일러가 먼저 막는 실수

GPU에서는 수천 개 스레드가 정해진 순서 없이 같은 메모리에 접근합니다. 두 스레드가 같은 주소에 동시에 닿고 그중 하나가 값을 쓰면, 실행 순서에 따라 결과가 달라집니다. 이런 버그는 테스트를 통과했다가 실제 서비스에서 드러나는 경우가 많습니다.

NVIDIA 블로그는 출력 버퍼를 같은 커널의 입력으로도 넘기는 코드를 예로 듭니다. cuda-oxide에서는 이 코드가 E0502 오류로, cutile-rs에서는 E0382 오류로 컴파일되지 않습니다. cuda-oxide는 커널을 실행하는 호출마다 이를 검사하고, cutile-rs는 텐서의 소유권 자체가 실행 경계를 따라 이동하기 때문에 더 강한 보장이라고 블로그는 설명합니다. 



## 아직은 초기 단계입니다

NVIDIA는 두 프로젝트 모두 초기 단계이며 실제 서비스 환경에 쓸 준비가 되지 않았다고 분명히 밝혔습니다. cuda-oxide는 초기 알파이고, cutile-rs는 crates.io에 공개돼 Hugging Face의 Grout 추론 엔진과 mistral.rs에서 쓰이고 있습니다. 지원 범위가 불완전하고 API도 바뀔 수 있으며, SIMT 방식에서 공유 메모리를 쓰려면 아직 unsafe 코드가 필요합니다. 

| 구분 | cuda-oxide | cutile-rs |
|---|---|---|
| 방식 | SIMT: 스레드 하나의 동작을 작성 | Tile: 데이터 조각 하나의 계산을 작성 |
| Rust 도구 | 날짜가 고정된 nightly | 안정판 1.89 이상 |
| 상태 | 초기 알파 | crates.io 공개, 외부 프로젝트 사용 |
| 라이선스 | Apache License 2.0 | Apache License 2.0 |

이 글은 공개 일주일 뒤인 9월 16일 11시 15분(UTC) Hacker News에 올라왔고, 17일 10시 14분(UTC) 관측 기준 699점과 댓글 275개로 최근 24시간 점수 1위였습니다. 같은 날 GeekNews에도 소개됐습니다. 


AI 인프라 경쟁이라고 하면 보통 더 빠른 칩을 떠올리지만, 이번 발표는 그 칩을 다루는 코드를 얼마나 덜 틀리게 쓰게 하느냐의 문제를 보여 주는 것 같습니다. 스레드 순서에 따라 가끔만 틀리는 버그를 실행 전에 막을 수 있다면, GPU 코드를 처음 쓰는 개발자에게는 속도보다 더 큰 변화가 아닐까 싶습니다. 다만 공유 메모리처럼 성능이 걸린 부분은 아직 unsafe로 남아 있습니다. 여러분의 팀이라면 안전한 Tile 방식과 세밀한 SIMT 방식 중 어느 쪽부터 시험해 보시겠습니까? 



## 자주 묻는 질문

**Q. 이제 CUDA C++ 대신 Rust를 써야 합니까?**

아닙니다. NVIDIA는 CUDA C++와 CUDA Python을 성숙한 도구로 두고, 이미 쓰는 기술 스택에 맞는 언어를 고르라고 권합니다. 두 Rust 프로젝트는 아직 실제 서비스 환경에 쓸 준비가 되지 않았다고 밝혔습니다.

**Q. Rust로 GPU를 다루는 방법은 전에도 있지 않았습니까?**

있었습니다. NVIDIA는 Rust-GPU, rust-cuda, CubeCL 같은 선행 프로젝트를 언급하고 rust-cuda 관리자들과 협업하고 있다고 적었습니다. 새로운 점은 CUDA를 만드는 회사가 직접 커널 작성 도구를 내고 개발 인력을 투입한다는 것입니다.

**Q. cuda-oxide와 cutile-rs 중 무엇부터 시험해 보면 됩니까?**

NVIDIA는 Tile 방식인 cutile-rs를 먼저 쓰고, 스레드와 메모리를 직접 제어해야 할 때 SIMT 방식인 cuda-oxide로 내려가라고 권합니다. cutile-rs는 안정판 Rust에서 동작해 설치 조건도 더 가볍습니다.

**Q. 컴파일러가 GPU의 모든 동시성 버그를 막아 줍니까?**

그렇지 않습니다. 블로그의 예는 출력 버퍼를 입력으로 함께 넘기는 대표적인 실수를 막는 수준입니다. SIMT 방식에서 공유 메모리를 쓰려면 아직 unsafe 코드가 필요하다고 NVIDIA는 밝혔습니다.

## 출처

1. [NVIDIA Technical Blog: Introducing CUDA Rust: Two Tracks for Writing GPU Kernels](https://developer.nvidia.com/blog/introducing-cuda-rust-two-tracks-for-writing-gpu-kernels/) (official)
2. [NVlabs/cuda-oxide GitHub 저장소](https://github.com/NVlabs/cuda-oxide) (official)
3. [NVlabs/cutile-rs GitHub 저장소](https://github.com/NVlabs/cutile-rs) (official)
4. [Hacker News 토론: Nvidia announces native GPU programming in Rust](https://news.ycombinator.com/item?id=49724881) (report)

_이 문서는 AI피셜 편집부가 작성했습니다. 인용 시 출처를 표기해 주세요._