Nvidia ประกาศเปิดทางให้ Rust เขียนโค้ดรันบน GPU ได้โดยตรง เป็นตัวเลือกใหม่ที่อยู่ข้าง CUDA C++ และ CUDA Python ที่ใช้กันมานาน โดยบริษัทระบุว่าจะพัฒนา CUDA Rust ต่อเนื่องไปจนถึงปี 2027 และหลังจากนั้น
สิ่งที่ต่างจากข่าวลือทั่วไปคือ Nvidia ไม่ได้ปล่อยเครื่องมือตัวเดียว แต่แบ่งออกเป็นสองเส้นทางที่เป้าหมายการใช้งานต่างกันชัดเจน
สองเส้นทางที่ Nvidia เปิดให้ Rust เข้าถึง GPU
เส้นทางแรกชื่อ cuda-oxide เจาะกลุ่มที่อยากควบคุมฮาร์ดแวร์ใกล้ชิดแบบเดียวกับเขียน CUDA C++ ส่วนเส้นทางที่สองชื่อ cutile-rs เน้นให้เขียนง่ายขึ้นด้วยการทำงานระดับสูงกว่า ทั้งสองแบบไม่ได้แข่งกันเอง แต่ตอบโจทย์คนละกลุ่มนักพัฒนา

cuda-oxide: คอมไพล์ตรงลง PTX แบบเดียวกับ CUDA C++
cuda-oxide เป็น backend คอมไพเลอร์ของ rustc ที่แปลงโค้ด kernel ไปเป็น PTX โดยตรง ต้องใช้ Rust nightly เวอร์ชันที่ pin ไว้คู่กับ LLVM และมีระบบ DisjointSlice กับ launch contracts ช่วยตรวจการเข้าถึงหน่วยความจำตั้งแต่ตอนคอมไพล์
ตอนนี้ cuda-oxide ยังอยู่ในสถานะ early alpha เหมาะกับทีมที่อยากทดลองแนวทางนี้ก่อน มากกว่าจะเอาไปใช้ในระบบ production ทันที
cutile-rs: เขียนง่ายกว่าและมีคนใช้งานจริงแล้ว
cutile-rs ให้เขียนโค้ดในระดับ tile operation แทนที่จะสั่งงาน thread ทีละตัว แล้วให้ระบบ JIT-compile ผ่าน CUDA Tile IR ให้เอง จุดต่างสำคัญคือ cutile-rs รันบน Rust เสถียร (stable) ตั้งแต่เวอร์ชัน 1.89 ขึ้นไป ไม่ต้องพึ่ง nightly เหมือน cuda-oxide
cutile-rs เผยแพร่บน crates.io แล้ว และมีการใช้งานจริงนอก Nvidia อย่าง Grout ซึ่งเป็น inference engine ของ HuggingFace และโปรเจกต์ mistral.rs
สเปกที่ต้องมีก่อนเริ่มใช้งานจริง
ทั้งสองเส้นทางต้องการ GPU ที่มี compute capability ตั้งแต่ 8.0 ขึ้นไป และรันบน Linux เท่านั้นในตอนนี้ ฝั่ง cuda-oxide ต้องใช้ CUDA toolkit 12.x ขึ้นไป ส่วน cutile-rs ต้องการ CUDA toolkit 13.3 ขึ้นไป
เงื่อนไขเหล่านี้หมายความว่าทีมที่ใช้ GPU รุ่นเก่ากว่านี้หรือทำงานบน Windows โดยตรง ยังต้องรอหรือหาทางอ้อมก่อนจะทดลองใช้งานได้
| Factor | CUDA C++ | cuda-oxide (SIMT) | cutile-rs (Tile) |
|---|---|---|---|
| ระดับการควบคุมฮาร์ดแวร์ | ควบคุมละเอียดถึงระดับ thread | ควบคุมละเอียดใกล้เคียงกัน | ทำงานระดับ tile ที่สูงกว่า |
| ความปลอดภัยของหน่วยความจำ | ต้องจัดการเองทั้งหมด | มี DisjointSlice ช่วยตรวจตอนคอมไพล์ | ออกแบบให้เขียนผิดพลาดยากขึ้น |
| Rust toolchain ที่ต้องใช้ | ไม่เกี่ยวข้อง | nightly ที่ pin เวอร์ชันไว้ | stable ตั้งแต่ 1.89 ขึ้นไป |
| ความพร้อมใช้งานจริง | ใช้งานหลักในอุตสาหกรรมมานาน | early alpha | เผยแพร่บน crates.io แล้ว มีใช้จริง |
ตารางนี้แสดงให้เห็นว่า cuda-oxide เหมาะกับทีมที่อยากได้การควบคุมระดับต่ำแบบ CUDA C++ แต่ต้องยอมรับความไม่นิ่งของ early alpha ส่วน cutile-rs เหมาะกับงานที่อยากเริ่มใช้จริงได้เร็วกว่า โดยแลกกับการควบคุมระดับ thread ที่ละเอียดน้อยลง

เทียบกับ AMD ROCm และ Intel oneAPI
CUDA Rust ยังผูกกับฮาร์ดแวร์ Nvidia เท่านั้น ต่างจาก AMD และ Intel ที่มีเส้นทางของตัวเองสำหรับดึงภาษาระดับสูงมาเขียน GPU
| Factor | CUDA Rust (Nvidia) | AMD ROCm/HIP | Intel oneAPI/SYCL |
|---|---|---|---|
| การรองรับฮาร์ดแวร์ | เฉพาะ Nvidia GPU ที่ compute capability 8.0 ขึ้นไป | เน้น AMD GPU | เน้นฮาร์ดแวร์ Intel |
| ความพร้อมของเครื่องมือ | เพิ่งเริ่มต้น มีสองเส้นทางคู่ขนาน | พร้อมใช้ในงาน AMD มาระยะหนึ่ง | พร้อมใช้ในงาน Intel และรองรับหลายแพลตฟอร์ม |
| ภาษาเรือธง | Rust ควบคู่กับ CUDA C++ และ CUDA Python | C++ ผ่าน HIP | C++ ผ่าน SYCL |
ใครเอาไปใช้งานจริงแล้วบ้าง
จุดที่ทำให้ cutile-rs น่าเชื่อถือกว่าโปรเจกต์ทดลองทั่วไปคือมีผู้ใช้งานจริงนอก Nvidia แล้ว ทั้ง Grout ซึ่งเป็น inference engine ของ HuggingFace และ mistral.rs ซึ่งเป็นโปรเจกต์รัน inference โมเดลภาษาด้วย Rust
การมีผู้ใช้งานระดับ production ตั้งแต่ช่วงแรกของการเปิดตัว เป็นสัญญาณว่า cutile-rs ผ่านการทดสอบมาในระดับหนึ่งแล้ว ไม่ใช่แค่ demo สำหรับงานประกาศข่าว

ต้นทุนที่ทีมต้องเตรียมใจก่อนย้ายจาก CUDA C++
การย้ายมาใช้ CUDA Rust ไม่ได้จบแค่เขียน kernel ใหม่ ทีมต้องเรียนรู้ทั้งภาษา Rust และแนวคิดของแต่ละเส้นทาง พร้อมทำ binding เชื่อมกับไลบรารี CUDA เดิมที่มีอยู่แล้ว โดยเฉพาะโค้ดที่ผูกกับระบบเก่าแน่นๆ
อีกส่วนคือการทดสอบ performance ใหม่ทุกจุด เพราะยังไม่มีตัวเลข benchmark อย่างเป็นทางการจาก Nvidia ที่เทียบ CUDA Rust กับ CUDA C++ โดยตรง ทีมจึงต้องวัดผลเองกับงานจริงของตัวเอง และเผื่อเวลาไว้สำหรับ toolchain ที่ยังเปลี่ยนเร็วในช่วงเริ่มต้นนี้
จุดแข็งและข้อจำกัดที่ต้องชั่งน้ำหนัก
ข้อดี
- +มีสองเส้นทางให้เลือกตามความคุ้นเคย ทั้งควบคุมละเอียดและเขียนง่าย
- +cutile-rs ใช้งานจริงแล้วใน HuggingFace Grout และ mistral.rs
ข้อเสีย
- −cuda-oxide ยังเป็น early alpha และต้องพึ่ง Rust nightly ที่ pin เวอร์ชัน
- −รองรับเฉพาะ GPU compute capability 8.0 ขึ้นไป และต้องใช้ Linux เท่านั้น
จะกลายเป็นมาตรฐานใหม่ หรือยังต้องรอดูอีกพัก
Nvidia บอกทิศทางระยะยาวไว้ชัดว่าจะทำให้ CUDA Rust, CUDA C++ และ CUDA Python ทำงานร่วมกันได้ (interoperability) เพื่อไม่ให้ทีมที่เลือกภาษาใดภาษาหนึ่งต้องติดอยู่กับทางเลือกนั้นตลอดไป
คำถามที่ยังไม่มีคำตอบคือ cuda-oxide จะออกจากสถานะ alpha เร็วแค่ไหน และเมื่อ toolchain นิ่งขึ้น ทีมที่มีโค้ด CUDA C++ อยู่แล้วจะเห็นเหตุผลมากพอให้เริ่มย้ายมาใช้ Rust หรือไม่