Sản phẩm
NVIDIA ra mắt CUDA Rust: Viết GPU kernel an toàn tuyệt đối với cuda-oxide và cutile-rs
(giờ Việt Nam)
Tóm tắt AI
NVIDIA giới thiệu CUDA Rust, cho phép lập trình viên viết GPU kernel bằng Rust với khả năng kiểm soát lỗi bộ nhớ ngay từ lúc biên dịch, nhờ tận dụng cơ chế quản lý quyền sở hữu của ngôn ngữ này.
Bản dịch AI

NVIDIA vừa công bố CUDA Rust, một nỗ lực nhằm đưa Rust trở thành ngôn ngữ hạng nhất để viết các GPU kernel. Trước đây, mã Rust đã có thể khởi chạy các CUDA kernel, nhưng phần thân kernel thường phải được viết bằng ngôn ngữ khác. CUDA Rust xóa bỏ khoảng cách đó với hai dự án mã nguồn mở từ NVlabs: cuda-oxide cho mô hình SIMT và cutile-rs cho mô hình Tile mới hơn. Cả hai đều biên dịch các kernel Rust một cách nguyên bản (natively) và sử dụng các quy tắc sở hữu (ownership rules) của Rust để loại bỏ các lỗi chồng lấn bộ nhớ (aliasing bugs) ngay tại thời điểm biên dịch.
Liệu nó đã sẵn sàng để triển khai? Một phần. cutile-rs đã được xuất bản trên crates.io, chạy trên bản Rust ổn định 1.89+ và hiện đang được sử dụng trong công cụ suy luận Grout của Hugging Face cũng như trong mistral.rs. cuda-oxide vẫn đang ở giai đoạn alpha sớm. Cả hai dự án đều đang trong giai đoạn alpha và chưa được xác nhận cho môi trường sản xuất.
Tại sao lại chọn Rust cho GPU Kernel?
Lớp hệ thống của AI, từ các công cụ suy luận đến trình điều khiển (driver) và môi trường thực thi tác nhân (agent runtimes), ngày càng được viết bằng Rust. Trình điều khiển Nova Linux của NVIDIA được viết bằng Rust, NVIDIA Dynamo có lõi Rust và NVTX có các liên kết (bindings) cho Rust. GPU kernel chính là ngoại lệ cuối cùng.
Hai hướng đi này phản ánh hai mô hình lập trình mà CUDA hiện đang cung cấp. SIMT là mô hình được sử dụng trong CUDA C++ và numba-cuda: bạn mô tả những gì một luồng (thread) thực hiện và khởi chạy hàng nghìn luồng như vậy. Tile là mô hình mới hơn, cũng có sẵn trong C++ và Python: bạn mô tả những gì một khối dữ liệu (tile) thực hiện, và trình biên dịch Tile IR sẽ xử lý việc ánh xạ luồng và bố cục bộ nhớ. NVIDIA khuyến nghị sử dụng Tile trước, còn SIMT dành cho việc kiểm soát luồng và bộ nhớ một cách tường minh. Khả năng tương tác giữa các ngôn ngữ trong kế hoạch có nghĩa là việc chọn Rust sẽ không khiến các nhà phát triển bị giới hạn khỏi C++ hoặc Python.
Hướng SIMT: cuda-oxide
cuda-oxide là một backend tạo mã (codegen) tùy chỉnh cho rustc. Nó điều hướng các hàm #[kernel] thông qua Rust MIR, khung làm việc Pliron IR của cộng đồng và LLVM IR xuống PTX, sau đó chuyển mọi thứ còn lại cho backend tiêu chuẩn. NVIDIA đã viết các phương ngữ (dialects) GPU dựa trên Pliron.
Yêu cầu: Linux, GPU có khả năng tính toán (compute capability) từ 8.0 trở lên, CUDA 12.x trở lên, clang với libclang và một toolchain nightly cố định (nightly-2026-04-03). Lệnh cargo oxide doctor kiểm tra thiết lập và cargo oxide new tạo khung cho một chương trình cộng vector, với mã nguồn host và device nằm trong cùng một tệp.
Lập luận về tính an toàn nằm ở chữ ký của kernel. Các đầu vào a và b là các lát cắt (slices) chia sẻ thông thường. Đầu ra c là một DisjointSlice<f32>, một kiểu dữ liệu cung cấp cho mỗi luồng quyền truy cập độc quyền vào phần tử của riêng nó. Một &mut [f32] thông thường sẽ yêu cầu mọi luồng phải giữ cùng một quyền mượn có thể thay đổi (mutable borrow), điều mà Rust từ chối. c.get_mut(idx) trả về một Option, vì vậy việc truy cập ngoài phạm vi trở thành một nhánh được xử lý. Thuộc tính #[launch_contract] khai báo hình dạng khối, và phương thức prepare_vecadd được tạo ra sẽ xác thực cấu hình khởi chạy trước khi quá trình khởi chạy an toàn diễn ra.
Hướng Tile: cutile-rs
cutile-rs hoạt động ở cấp độ cao hơn một bậc. Mỗi khối tile chạy phần thân kernel một lần như một luồng logic duy nhất trên một sub-tensor, và trình biên dịch sẽ quyết định bao nhiêu luồng GPU thực tế sẽ hỗ trợ nó. Macro #[cutile::module] nhúng AST của kernel vào tệp nhị phân host và biên dịch JIT thông qua CUDA Tile IR khi kernel được khởi chạy lần đầu.
Các yêu cầu nhẹ nhàng hơn: khả năng tính toán 8.0 trở lên, CUDA 13.3, Rust ổn định 1.89 trở lên và Linux, không cần nightly và không cần LLVM tùy chỉnh. Thiết lập bắt đầu bằng cargo new, sau đó là cargo add cutile.
Lệnh.partition([128]) ở phía host thực hiện 3 công việc. Nó cấp cho mỗi tile quyền sở hữu độc quyền đối với khối 128 phần tử của nó, cố định lưới ở mức 1.024 / 128 = 8 tile và cung cấp chiều rộng tile hằng số B. Các tensor đầu vào sử dụng -1 làm chiều động được giải quyết tại thời điểm khởi chạy. Trình khởi chạy được tạo ra sẽ chiếm quyền sở hữu tất cả các tensor và trả lại chúng khi GPU hoàn tất. Không có gì được thực thi cho đến khi gọi.sync_on(&stream); mọi thứ trước đó chỉ là một mô tả lười (lazy description) được ghi lại trong một chuỗi.
Những gì trình biên dịch phát hiện được
Việc truyền bộ đệm đầu ra của kernel SIMT làm một trong những đầu vào của chính nó sẽ thất bại với lỗi error[E0502]: không thể mượn c_dev dưới dạng có thể thay đổi vì nó cũng đang được mượn dưới dạng không thể thay đổi. Sự chồng lấn tương tự ở phía Tile sẽ thất bại với lỗi error[E0382]: sử dụng giá trị đã được di chuyển (moved): z. cuda-oxide kiểm tra từng lệnh gọi khởi chạy; quyền sở hữu của cutile-rs theo dõi các tensor qua ranh giới khởi chạy, điều mà NVIDIA gọi là sự đảm bảo mạnh mẽ hơn.
Tile không để lộ bộ nhớ chia sẻ hoặc chỉ mục luồng để bị lạm dụng. SIMT vẫn giữ quyền kiểm soát đó, nhưng bộ nhớ chia sẻ trong cuda-oxide hiện tại vẫn yêu cầu sử dụng unsafe.
Những điểm chính cần lưu ý
Xem chi tiết kỹ thuật tại đây. Ngoài ra, hãy theo dõi chúng tôi trên Twitter và đừng quên tham gia SubReddit ML 150k+ thành viên của chúng tôi và đăng ký nhận bản tin. Khoan đã! Bạn có dùng Telegram không? Bây giờ bạn cũng có thể tham gia cùng chúng tôi trên Telegram.
Bạn cần hợp tác với chúng tôi để quảng bá GitHub Repo, trang Hugging Face, sản phẩm mới hoặc hội thảo trực tuyến, v.v.? Hãy kết nối với chúng tôi.

Asif Razzaq là CEO của Marktechpost Media Inc.. Là một doanh nhân và kỹ sư có tầm nhìn, Asif cam kết khai thác tiềm năng của Trí tuệ nhân tạo vì lợi ích xã hội. Nỗ lực gần đây nhất của ông là ra mắt nền tảng truyền thông về Trí tuệ nhân tạo, Marktechpost, nổi bật với việc đưa tin chuyên sâu về học máy và học sâu, vừa đảm bảo tính kỹ thuật vừa dễ hiểu đối với đông đảo độc giả. Nền tảng này tự hào với hơn 2 triệu lượt xem mỗi tháng, minh chứng cho sự phổ biến của nó đối với công chúng.
Bài viết được AI dịch và tổng hợp tự động từ MarkTechPost. Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.