Мэдээ

C++ монопол нурж эхлэв: NVIDIA албан ёсоор GPU-г Rust хэлээр удирдах "CUDA Rust" экосистемээ танилцууллаа

TOGTOKHTOGTOKH·2026 оны есдүгээр сарын 17·1 үзсэн·
C++ монопол нурж эхлэв: NVIDIA албан ёсоор GPU-г Rust хэлээр удирдах "CUDA Rust" экосистемээ танилцууллаа

Сүүлийн хорин жилийн турш хэрэв та GPU-ийн бүрэн хүчин чадлыг шахаж, өндөр гүйцэтгэлтэй тооцоолол хийх эсвэл хиймэл оюуны шинэ загварын kernel бичихийг хүсвэл ганц л хатуу дүрэмтэй нүүр тулдаг байв: Та C++ хэлээр л бичих ёстой.

NVIDIA-ийн CUDA платформ 2006 онд үүссэн цагаасаа эхлэн C/C++ экосистем дээр бат бөх цогцолсон бөгөөд олон мянган драйвер, номын сан, компиляторууд түүнд нийцүүлэгдсэн байлаа. Гэвч энэ монопол эвдэгдэх түүхэн эргэлтийн цэг ирлээ. NVIDIA Labs албан ёсоор GPU дээр цэвэр Rust хэлээр kernel бичиж, түүнийг нь шууд PTX (NVIDIA GPU-ийн ассемблер түвшний intermediate representation) код руу компилдэг "CUDA Rust" шинэ санаачилгаа зарлалаа.

Энэхүү зарлал нь систем хөгжүүлэгчид болон AI инженерүүдийн дунд маш хүчтэй хэлэлцүүлэг өрнүүлж, Hacker News болон хөгжүүлэгчдийн коммюнитийг сэрээгээд байна.

GPU програмчлалын мөнхийн зовлон: Санах ойн "хар нүх"

GPU тооцоолол нь ердийн CPU дээр ажиллахаас үндсээрээ ялгаатай. CPU цөөн тооны thread дээр нарийн, дараалсан логик боловсруулдаг бол GPU нь SIMT (Single Instruction, Multiple Threads) зарчмаар хэдэн арван мянган жижиг цөм дээр нэгэн зэрэг математик үйлдлүүдийг зэрэгцүүлэн хийдэг.

Ийм их хэмжээний зэрэгцээ ажиллагаа (concurrency) явагдах үед memory safety буюу санах ойн аюулгүй байдал хамгийн чухалд тавигддаг. Гэтэл C++ хэлэнд санах ойн аюулгүй байдлын баталгаа (memory safety guarantees) гэж байхгүй.

CUDA C++ код бичих үед:

  • Pointers болон raw memory хаягуудтай гар аргаар ажилладаг.
  • Олон мянган thread нэгэн зэрэг санах ойн нэг бүс рүү бичих үед data race, үл таних гажиг (undefined behavior) үүсдэг.
  • GPU дээр crash буюу segmentation fault үүсэхэд дэлгэц дээр ойлгомжтой алдааны мэдээлэл (stack trace) бараг гардаггүй бөгөөд хоосон үр дүн эсвэл GPU бүхэлдээ "өлгөгдөх" нь энгийн үзэгдэл байв.

Rust хэл өөрийн ownership, lifetime болон borrow checker системийн тусламжтайгаар зэрэгцээ програмчлалын үеийн өгөгдлийн зөрчлийг компиляцийн шатанд бүрэн зогсоож чаддагаараа алдартай. Харин өнөөдрийг хүртэл Rust-ийг GPU дээр ашиглахын тулд ердөө C++-ээр бичсэн кодын гадуур FFI (Foreign Function Interface) wrapper ороох юм уу, Vulkan/SPIR-V руу хөрвүүлдэг хагас дутуу арга хэрэгслүүдээр аргацаадаг байв.

NVIDIA яг юу танилцуулав? Хоёр тусдаа зам

NVIDIA-ийн гаргасан энэхүү алхам нь зүгээр нэг binding номын сан биш юм. Тэд хөгжүүлэгчдэд зориулан үндсэн хоёр чиглэл бүхий нээлттэй төслийг танилцууллаа:

1. cuda-oxide: Цэвэр Rust-ээс PTX рүү хөрвүүлэх шинэ компилятор

Энэ нь SIMT түвшний kernel-үүдийг ямар нэгэн тусгай DSL (Domain Specific Language) эсвэл гаднын хэлний оролцоогүйгээр шууд idiomatic Rust хэлбэрээр бичих боломжийг олгодог.

  • Пайплайн: Энэхүү компилятор нь Rust кодын завсрын төлөөлөл болох Rust MIR-ээс эхлээд Rust-native MLIR шийдэл болох Pliron IR, цаашлаад LLVM IR дамжин эцэст нь шууд NVIDIA-ийн техник хангамжийн ойлгодог PTX файлыг гаргадаг.
  • Compile-time Data Race хамгаалалт: Төсөлд DisjointSlice зэрэг ухаалаг бүтцүүдийг нэвтрүүлснээр GPU-ийн thread-үүд санах ойн нэг хэсэг рүү давхар хандахыг Rust-ийн компилятор код ажиллахаас ч өмнө шууд компиляцийн алдаа (compile-time error) болгон зарлах боломжтой болжээ.

2. cuTile Rust: Модерн AI-д зориулсан Tile програмчлалын систем

Сүүлийн үеийн AI загварууд (ялангуяа LLM-ийн гол цөм болох матриц үржүүлэх GEMM үйлдлүүд) thread тус бүрээр бус, өгөгдлийг "Tile" буюу 2D/3D хэсэг блок болгон Tensor Core руу дамжуулах байдлаар ажилладаг. NVIDIA-ийн зүгээс Rust-ийн ownership загварыг Tensor Tile санах ойн түвшинд өргөтгөн, OpenAI-ийн Triton-той дүйцэхүйц, гэхдээ системийн түвшний өндөр уян хатан чанартай kernel бичих боломжийг cuTile Rust төслөөр бүрдүүлж байна.

Анхны туршилтуудаар ямар нэгэн нарийн бага түвшний hack ашиглахгүйгээр цэвэр Rust дээр бичсэн GEMM kernel нь NVIDIA-ийн олон жил гар аргаар оновчилсон өөрийн cuBLAS номын сангийн хурдны 58%-д шууд хүрч чадсан бөгөөд оновчлол хийх асар их боломж байгааг туршилтын багууд нотолжээ.

"Pure Rust AI Stack" бодит биелэл болоход ойртлоо

Өнөөгийн хиймэл оюуны дэд бүтэц тун сонин "эрлийз" хэлбэртэй ажилладаг. Хөгжүүлэгчид дээр нь Python (PyTorch) ашигладаг ч доор нь сүлжээ, санах ойг C++ удирдан, GPU-ийн kernel-үүд нь CUDA C++ дээр суудаг.

Энэ олон түвшний зааг нь debug хийхэд хүндрэл учруулж, дата дамжуулалтын хоцрогдол (overhead) үүсгэдэг. Хэрэв GPU kernel-үүд Rust дээр шууд бичигдэж эхэлбэл дараах өөрчлөлтүүд гарна:

  1. Төгсгөлөөс төгсгөл хүртэл бүрэн Rust AI экосистем: Сүлжээний хүсэлт авах, модельд оруулах өгөгдлийг бэлтгэх (pre-processing), GPU дээр бодох kernel, санах ойн менежмент бүгд ганцхан Rust хэл, түүний cargo багц зохицуулагч дор нэгдэх боломж нээгдэнэ.
  2. Мянган GPU-ийн алдаанаас сэргийлэх: Сая сая долларын өртөгтэй суперкомпьютер дээр томоохон LLM сургаж байх үед нэг л kernel дээр гарсан санах ойн нуугдмал алдаанаас болж хэдэн долоо хоногийн тооцоолол нурах эрсдэл эрс буурна.
  3. Хөгжүүлэлтийн таатай орчин (DX): C++-ийн төвөгтэй #ifdef тохиргоо, Make/CMake файлууд болон nvcc-ийн толгой өвтгөсөн хувилбарын зөрчлүүдээс салж, орчин үеийн хөгжүүлэгчийн тав тухыг GPU түвшинд мэдрэх зам тавигдаж байна.

Дүгнэлт: Тоглоомын дүрэм шинэчлэгдэж байна

Мэдээж cuda-oxide одоогоор альфа шатандаа байгаа бөгөөд CUDA C++-ийн 20 жилийн экосистемийг маргааш л бүрэн сольчихгүй. Гэвч Linux кернел, Android үйлдлийн систем, Windows-ийн цөм хэсгүүд аюулгүй байдлын үүднээс Rust руу шилжиж байгаа энэ үед GPU-ийн ертөнц ч санах ойн аюулгүй байдлыг анхдагч стандартоо болгохоор эргэлт буцалтгүй шийдсэнийг энэхүү үйл явдал тод харуулж байна.

GPU түвшний гүн тооцоолол хийдэг, систем болон AI инженерүүдийн хувьд Rust хэлийг сонирхон судлах хамгийн том шалтгаан яг одоо бий боллоо.

Эх сурвалж: NVIDIA Technical Blog, "Introducing CUDA Rust: Two Tracks for Writing GPU Kernels" & NVlabs cuda-oxide Project.

Сэтгэгдэл

Ачаалж байна...