NVIDIA($NVDA) công bố hướng dẫn kiểm tra đường truyền thực tế khi đọc dữ liệu tệp từ Python vào bộ nhớ GPU. Trong ví dụ, thao tác đọc 1 GiB được chia thành 256 yêu cầu; công cụ thống kê gds_stats ghi nhận 256 yêu cầu qua đường tăng tốc nvfs và 0 yêu cầu qua đường tương thích posix.
NVIDIA đăng hướng dẫn này trên blog kỹ thuật ngày 22. Tác giả Andrew Hoyle cho biết ông phát triển các tính năng di chuyển dữ liệu và tích hợp thư viện phần mềm trong nhóm GPUDirect Storage của NVIDIA. Cùng ngày, diễn đàn nhà phát triển NVIDIA cũng đăng bài giới thiệu blog.
KvikIO lựa chọn, cuFile quyết định đường truyền
GPUDirect Storage (GDS) là công nghệ giảm số lần sao chép trung gian qua bộ nhớ CPU giữa thiết bị lưu trữ được hỗ trợ và bộ nhớ GPU. Tài liệu tổng quan GDS của NVIDIA cho biết đường truyền trực tiếp có thể không hoạt động tùy thuộc vào phần cứng, hệ thống tệp và cấu hình. Khi đó, chế độ tương thích sử dụng lệnh gọi POSIX.
Hướng dẫn giải thích đường truyền được xác định qua hai bước. Trước tiên, KvikIO, giao diện Python và C++, chọn gọi cuFile hay dùng đường tương thích POSIX riêng. Ngay cả khi gọi cuFile, cấu hình hệ thống, hệ thống tệp được hỗ trợ và thiết lập sẽ quyết định sử dụng đường GDS dựa trên nvidia-fs hay đường tương thích đi qua bộ nhớ CPU. Vì vậy, chỉ định bộ nhớ GPU làm đích và gọi cuFile chưa đủ để kết luận rằng GDS đã tăng tốc thao tác.
Thiết lập mặc định compat_mode của KvikIO là AUTO. Nếu thử cuFile nhưng không thể sử dụng, KvikIO chuyển sang phần phụ trợ POSIX. Trong hệ thống của hướng dẫn, gds_threshold được đặt ở 16 KiB; các thao tác đọc nhỏ hơn ngưỡng này đi thẳng qua đường POSIX của KvikIO.
Thống kê thay đổi theo biến môi trường
Để kiểm tra đường truyền, hướng dẫn đặt CUFILE_STATS_LEVEL=3 rồi dùng gds_stats. NVIDIA đưa ra các kết quả thống kê khác nhau tùy thiết lập.
△ KVIKIO_COMPAT_MODE=off: KvikIO sử dụng cuFile và thống kê được ghi nhận ở nvfs.
△ CUFILE_FORCE_COMPAT_MODE=true: lệnh gọi cuFile vẫn được thực hiện nhưng tác vụ được thống kê ở posix.
△ KVIKIO_COMPAT_MODE=on: KvikIO bỏ qua cuFile và dùng đường POSIX riêng. Tác vụ không xuất hiện trong thống kê cuFile.
gdscheck.py được giới thiệu là công cụ kiểm tra cấu hình cài đặt và khả năng hỗ trợ. Trong khi đó, gds_stats cho biết có bao nhiêu tác vụ trong tiến trình được xử lý qua từng đường nvfs và posix.
Ý nghĩa của 256 yêu cầu
Con số 256 xuất phát từ kích thước tác vụ mặc định 4 MiB của KvikIO. Chia 1 GiB thành các phần 4 MiB sẽ tạo ra 256 yêu cầu cuFile. Nếu đổi KVIKIO_TASK_SIZE thành 1 GiB, KvikIO gửi một yêu cầu lớn tới cuFile; cuFile sau đó chia yêu cầu này thành bốn tác vụ 256 MiB để lên lịch. NVIDIA giải thích đây là kích thước đơn vị lập lịch, khác với kích thước truyền dữ liệu của từng thiết bị lưu trữ.
Hướng dẫn cũng mô tả quy trình sao chép qua bộ đệm trung gian GPU đã đăng ký với cuFile rồi chuyển sang bộ đệm đích, trong trường hợp bộ đệm GPU đích chưa được đăng ký.
Môi trường thử nghiệm gồm máy chủ x86_64, GPU NVIDIA H100, CUDA 13.3, cuFile 1.18 và ổ NVMe cục bộ định dạng ext4. GPU và NVMe được kết nối theo cấu hình PIX, đi qua tối đa một cầu nối PCIe. IOMMU và ACS bị tắt, còn mô-đun nhân nvidia-fs được tải. NVIDIA lưu ý đây chỉ là cấu hình thử nghiệm của hướng dẫn, không phải điều kiện bảo đảm cho mọi hệ thống. Tài liệu khắc phục sự cố của hãng khuyến nghị kiểm tra đồng thời hệ thống tệp được hỗ trợ, phiên bản trình điều khiển và thư viện, cấu hình cuFile cùng kết nối phần cứng trên các hệ thống khác.
KvikIO là một phần của bộ thư viện khoa học dữ liệu NVIDIA CUDA-X. Kho mã chính thức giới thiệu KvikIO là các binding Python và C++ cho cuFile, đồng thời cho biết thư viện có thể đọc và ghi dữ liệu giữa máy chủ và thiết bị ngay cả trong môi trường không hỗ trợ GDS. Trước đó, TokenPost đưa tin NVIDIA cho biết vào tháng 7 hãng đã bổ sung thư viện CUDA-X làm công cụ cho các tác nhân.
Ở khía cạnh lưu trữ, TokenPost trước đó cũng đưa tin Micron cho biết SSD NVMe dành cho trung tâm dữ liệu dựa trên PCIe Gen 6 có thể giảm giới hạn di chuyển dữ liệu giữa tài nguyên lưu trữ và tính toán. Hướng dẫn lần này tập trung vào cách xác minh đường truyền thực tế bằng thiết lập phần mềm và công cụ thống kê, không bàn về thông số phần cứng.
Bài viết của NVIDIA cùng tài liệu chính thức về KvikIO và GDS không đề cập đến ứng dụng trong lĩnh vực tiền mã hóa hay blockchain. NVIDIA cũng không đưa ra tỷ lệ cải thiện hiệu năng hoặc số liệu so sánh thông lượng. Kết quả nvfs=256 chỉ là số yêu cầu được thống kê trong lần chạy đó, không thể hiện mức cải thiện tốc độ.
Bình luận 0