CUDA 13.5 cho Vera Rubin: những điểm cần rà soát khi chia sẻ GPU
CUDA 13.5 đưa hỗ trợ NVIDIA Vera Rubin lên GA, mở rộng Windows on Arm tới DGX Station for Windows và bổ sung lựa chọn chia SM, điều phối MPS v3, CUDA Tile cùng CUDA Python cho workload GPU dùng chung.
Một GPU đang phục vụ inference ổn định, trong khi fine-tuning và batch job chỉ cần chạy khi còn tài nguyên. Với CUDA 13.5, câu hỏi không chỉ là “đã hỗ trợ GPU mới chưa?”, mà còn là: GPU sẽ được chia và điều phối giữa các workload ra sao?
CUDA Toolkit 13.5 đưa hỗ trợ kiến trúc NVIDIA Vera Rubin từ early developer access lên general availability (GA). Bản phát hành cũng bổ sung thêm lựa chọn phân vùng SM, điều phối workload qua NVIDIA Multi-Process Service (MPS) v3 và các cập nhật cho CUDA Tile, CUDA Python.
Vera Rubin lên GA, Windows cần rà soát driver mode
Theo NVIDIA, CUDA 13.5 đưa hỗ trợ Vera Rubin lên trạng thái GA, sẵn sàng cho triển khai production. Với các đội chuẩn bị vận hành Vera Rubin, đây là mốc tương thích quan trọng của nền tảng CUDA.
CUDA 13.5 cũng mở rộng hỗ trợ Windows on Arm — vốn đã GA từ CUDA 13.4 — tới NVIDIA DGX Station for Windows.
Trên Windows, thay đổi đáng chú ý là driver mode. Từ kiến trúc NVIDIA Rubin, CUDA hỗ trợ:
WDDM (Windows Driver Display Model).
MCDM (Microsoft Compute Driver Model), driver mode dành cho compute.
Không hỗ trợ TCC (Tesla Compute Cluster) trên Rubin và các GPU đời sau.
Nếu deployment script, runbook hoặc công cụ kiểm tra môi trường đang mặc định TCC, đội vận hành nên rà soát lại trước khi triển khai Rubin. NVIDIA khuyến nghị dùng WDDM hoặc MCDM tùy hệ thống đích.
Chia SM theo locality domain: đồng đều hay tận dụng tối đa?
SM (streaming multiprocessor) là đơn vị thực thi workload trên GPU. CUDA 13.5 mở rộng lựa chọn phân vùng SM theo locality domain.
Theo mặc định, localized green-context partitions nhận cùng số SM được đảm bảo ở mỗi domain. Cách này tạo các partition đồng đều, dễ dự đoán, nhưng có thể để lại SM bổ sung nằm ngoài các partition.
CUDA 13.5 bổ sung cờ:
text
cudaDevSmResourceGroupLocalityDomainSupplementalSms
Cờ này dùng cùng:
text
cudaDevSmResourceGroupLocalityDomainId
để đưa các SM bổ sung vào locality domain được chọn. Đổi lại, các partition có thể không còn bằng nhau về kích thước.
Ứng dụng có thể dùng discovery mode của API sau để lấy số SM trong từng partition:
text
cudaDevSmResourceSplit()
Chọn phương án nào?
Partition SM đồng đều phù hợp khi ứng dụng ưu tiên cấu hình dễ dự đoán giữa các worker hoặc replica.
Ngược lại, đưa SM bổ sung vào partition phù hợp khi mục tiêu là tận dụng tối đa phần cứng và ứng dụng có thể phân phối công việc dựa trên số SM thực tế của từng partition.
Điểm cần lưu ý: nếu dùng supplemental SM, không nên hard-code giả định rằng mọi partition có cùng kích thước. Logic phân phối workload nên đọc kết quả từ cudaDevSmResourceSplit().
MPS v3: thêm chính sách cho GPU dùng chung
NVIDIA MPS cho phép nhiều tiến trình chia sẻ GPU. Trong CUDA 13.5, MPS v3 bổ sung cơ chế điều phối và quản lý partition SM chi tiết hơn.
Weighted timeslicing
Weighted timeslicing cho phép cấp lượt compute dài hơn cho MPS server cần chúng. Người vận hành có thể đặt base timeslice, điều chỉnh theo từng MPS server và tinh chỉnh mức độ GPU chuyển đổi giữa các workload.
Đây là tùy chọn đáng cân nhắc khi nhiều loại workload có nhu cầu khác nhau cùng dùng một GPU, chẳng hạn service và tác vụ nền.
Borrowing và lending cho partition SM
MPS v3 cho phép workload dùng phần năng lực ngoài base partition khi tài nguyên đang rảnh:
Bật khả năng mượn bằng --max-chunks.
Cho phép partition cho mượn SM khi chưa có client gắn vào bằng --shareable=true.
Một partition có thể chỉ mượn, chỉ cho mượn hoặc làm cả hai.
MPS thu hồi tài nguyên đã cho mượn trước khi phân lại. Trong khi đó, ứng dụng vẫn nhìn thấy kích thước base partition ổn định.
Vì vậy, khi thiết kế năng lực cho service quan trọng, nên phân biệt base partition với phần tài nguyên mượn được: phần sau phụ thuộc vào tài nguyên đang sẵn có.
Routing theo cgroup và namespace
MPS v3 hỗ trợ ánh xạ một subtree cgroup v2 vào một MPS namespace. Client kết nối qua socket chính của daemon sẽ được route vào namespace tương ứng.
Bản phát hành cũng cho phép gán SM partition theo namespace trên mỗi thiết bị. Khi đã có gán ở namespace, không cần cấu hình CUDAMPSSMPARTITION riêng cho từng client. Gán ở namespace được ưu tiên; thiết bị chưa có gán vẫn dùng biến môi trường làm phương án dự phòng.
Checklist rà soát trước khi nâng cấp
Phân loại workload dùng chung GPU
Tách các service cần tài nguyên ổn định khỏi batch job hoặc workload có thể tận dụng tài nguyên rảnh.
Kiểm tra giả định về kích thước partition
Nếu ứng dụng giả định số SM ở mọi locality domain là như nhau, hãy xác định rõ có dùng supplemental SM hay không.
Đọc số SM thực tế khi cần
Khi dùng locality domain với supplemental SM, dùng discovery mode của cudaDevSmResourceSplit() để phân phối công việc theo kích thước partition thực tế.
Đưa chính sách MPS về namespace
Với workload được launcher quản lý qua cgroup v2, có thể cân nhắc ánh xạ cgroup subtree sang MPS namespace thay vì để từng client tự cấu hình partition.
Cân nhắc polling-based memory accounting khi cần
MPS có cơ chế dự phòng để đọc trực tiếp usage và limit hiện tại khi cgroup threshold notification thiếu hoặc không đáng tin cậy. Để ép dùng polling trước khi memory accounting bắt đầu:
bash
nvidia-cuda-mps-control memacct set forcepolling=true
Cách này tăng công việc ở mỗi quyết định eviction, nhưng không phụ thuộc vào việc notification được gửi thành công.
Rà soát pipeline CUDA Tile nếu đang dùng
Tile-SIMT interoperability hiện là public preview. Trong C++, NVIDIA yêu cầu bật preview với cờ:
bash
nvcc --tile-preview simt
Đồng thời cần cung cấp tile library (.tilelib) cho tile compiler. Trong CUDA 13.5, preview này chỉ áp dụng cho hàm thư viện; chưa hỗ trợ gọi trực tiếp device function tự viết từ Tile code.
Cập nhật cho CUDA Graph, CUDA Python và CUDA Tile
CUDA 13.5 bổ sung hỗ trợ batched 1D memory copy trong CUDA Graph. Các lời gọi cudaMemcpyBatchAsync hiện có có thể được đưa vào stream capture mà không phải đổi cú pháp. Ứng dụng cũng có thể thêm batched-copy node và cập nhật địa chỉ hoặc kích thước copy tương thích mà không đổi cấu trúc batch.
Với Python, cuda.core 1.2 bổ sung:
Batched memory copies.
Programmatic Dependent Launch (PDL).
Runtime compilation đơn giản hơn.
Cập nhật CUDA Graph linh hoạt hơn mà không cần reinstantiation trong các trường hợp được hỗ trợ.
CUDA Tile cũng có thêm giao tiếp multi-GPU ngay trong kernel:
Unicast pointer truy cập bộ nhớ trên GPU khác qua NVLink.
Multicast pointer và multimem operations phục vụ reduction, store trên NVSwitch fabric có NVIDIA NVLink SHARP.
Ngoài ra, Tile-SIMT interoperability ở dạng public preview cho phép kernel CUDA Tile gọi device function từ một số thư viện SIMT, gồm NVIDIA NVSHMEM, CCCL Coop, NVIDIA Warp và NVIDIA MathDx.
Kết luận
CUDA 13.5 không chỉ là bản toolkit bổ sung hỗ trợ Vera Rubin. Với đội xây API AI, agent worker hoặc hạ tầng huấn luyện, các thay đổi về locality domain và MPS v3 mở rộng cách chia và điều phối GPU giữa nhiều workload.
Trước khi nâng cấp, trọng tâm nên là rà soát các giả định cũ: driver mode trên Windows, kích thước partition SM, cách cấu hình MPS cho từng tiến trình và mức độ sẵn sàng của các tính năng preview trong CUDA Tile.