GPUDirect RDMA là gì?

NVIDIA GPUDirect RDMA là gì?

NVIDIA GPUDirect RDMA (Remote Direct Memory Access) là một thành phần của giải pháp công nghệ NVIDIA Magnum IO, cho phép truyền dữ liệu nhanh chóng giữa GPU và các thiết bị khác mà không cần đến khả năng xử lý của CPU hay bộ nhớ chính.

Trong cách thức truyền dữ liệu truyền thống, dữ liệu di chuyển từ GPU đến bộ nhớ chính (system memory), đến NIC và cuối cùng đi đến thiết bị đích. Quá trình này đòi hỏi việc tạo nhiều bản copy của dữ liệu và cần đến CPU, làm tăng độ trễ và giảm hiệu quả chung của hệ thống. Ngược lại, quá trình truyền dữ liệu GPUDirect RDMA được tối ưu hóa để dữ liệu có thể được truyền trực tiếp từ các bộ nhớ của GPU trên NIC hoặc các thiết bị hỗ trợ RDMA khác mà không cần thông qua bộ nhớ hệ thống hay CPU. Đường dẫn trực tiếp này đến bộ nhớ thiết bị vệ tinh làm giảm đáng kể độ trễ và giải phóng CPU cho các tác vụ khác.

Điều này mang lại một số lợi ích cơ bản mà chúng ta sẽ thảo luận chi tiết hơn dưới đây:

  • Độ trễ thấp hơn. Vì không đi qua CPU hoặc bộ nhớ hệ thống nên việc truyền dữ liệu chỉ mất thời gian tối thiểu.
  • Băng thông cao hơn. Bằng cách loại bỏ các bản sao dữ liệu không cần thiết, hệ thống có thể đạt được thông lượng dữ liệu cao hơn.
  • Giảm tải cho CPU. Việc loại trừ CPU ra khỏi việc truyền dữ liệu sẽ giải phóng CPU để xử lý các tác vụ khác — một lợi thế đặc biệt trong môi trường điện toán song song.

GPUDirect RDMA ethernet đặc biệt hữu ích cho các hệ thống điện toán hiệu suất cao (HPC), phân tích dữ liệu và tải xử lý AI chuyên sâu. Nó được thiết kế để chạy trên các dòng GPU data center cao cấp của NVIDIA.

Thiết kế của GPUDirect RDMA

Cần có những gì để NVIDIA GPUDirect RDMA có thể truyền dữ liệu trực tiếp giữa bộ nhớ GPU và các thiết bị hỗ trợ RDMA khác như NIC và các strorage controller?

Sau đây là tổng quan cơ bản về thiết kế, phần cứng và thành phần phần mềm cho NVIDIA GPUDirect RDMA.

Tích hợp cấp phần cứng cho GPUDirect RDMA bao gồm:

  • GPU và NIC. Tích hợp phần cứng chuyên dụng giữa GPU NVIDIA và các NIC có hỗ trợ cho RDMA và PCIe, với bộ nhớ và kết nối peer-to-peer (P2P).
  • Memory Mapping. Bộ nhớ GPU được ánh xạ bằng cách sử dụng memory-mapped I/O (MMIO) và các tính năng PCIe tiên tiến để NIC có thể truy cập trực tiếp mà không cần sự can thiệp của bộ nhớ hệ thống.
  • Truyền dữ liệu nhất quán. Phần cứng đảm bảo dữ liệu được đồng bộ hóa chính xác trên tất cả các thành phần.

Yêu cầu về software stack cho mạng RDMA GPUDirect bao gồm:

  • Driver cho Compute Unified Device Architecture (CUDA). NVIDIA CUDA driver (trình điều khiển thiết bị) cho phép ánh xạ bộ nhớ quan trọng và khả năng truyền dữ liệu trực tiếp và hỗ trợ GPUDirect RDMA.
  • RDMA API. Hệ thống hỗ trợ RDMA, thường có một stack chẳng hạn như OpenFabrics Enterprise Distribution (OFED). RDMA API cho phép các ứng dụng khởi tạo và quản lý việc chuyển giao quyền truy cập bộ nhớ trực tiếp.
  • Hệ điều hành hỗ trợ các trình điều khiển GPU và API cần thiết. Linux thường được sử dụng trong các môi trường tận dụng GPUDirect RDMA do hỗ trợ mạnh mẽ cho tính toán HPC và GPU.

Yêu cầu hệ thống cho GPUDirect RDMA bao gồm:

  • GPU NVIDIA tương thích. Hệ thống phải hỗ trợ GPUDirect RDMA, thường là với các GPU hiệu suất cao được sử dụng trong các trung tâm dữ liệu, chẳng hạn như NVIDIA A100, V100 hoặc các mẫu tương tự.
  • NIC hỗ trợ RDMA. Cần có card giao tiếp mạng (NIC) hỗ trợ RDMA vì NIC phải tương tác trực tiếp với bộ nhớ GPU.
  • Cấu hình PCI express (PCIe). Hệ thống phải hỗ trợ PCIe với khả năng giao tiếp P2P để GPU và NIC có thể giao tiếp trực tiếp. PCIe có liên quan chặt chẽ với GPUDirect RDMA và hỗ trợ tính toán hiệu suất cao, đặc biệt là trong các môi trường sử dụng nhiều GPU, chẳng hạn như trong các trung tâm dữ liệu, tính toán khoa học và đào tạo AI.
  • Bo mạch chủ và CPU tương thích. Hệ thống phải có đủ số lượng lane PCIe và băng thông để xử lý việc truyền dữ liệu tốc độ cao mà không bị tắc nghẽn. Mặc dù không trực tiếp tham gia vào việc truyền dữ liệu, CPU vẫn phải đủ mạnh để quản lý toàn bộ hệ thống một cách hiệu quả.
  • Môi trường phần mềm. Cần có bản phân phối Linux, thường như mô tả ở trên, với kernel hỗ trợ trình điều khiển RDMA và NVIDIA GPUDirect RDMA.
  • Hỗ trợ ứng dụng. Các ứng dụng cần được thiết kế hoặc sửa đổi để tận dụng GPUDirect RDMA. Điều này thường liên quan đến việc sử dụng các thư viện hoặc API cụ thể hỗ trợ RDMA và truy cập bộ nhớ GPU trực tiếp.
  • Card giao tiếp mạng (NIC). GPUDirect RDMA yêu cầu NIC hỗ trợ RDMA như những NIC sử dụng giao thức InfiniBand, RoCE (RDMA over Converged Ethernet) hoặc iWARP.
  • Hệ điều hành (OS). Linux là OS phổ biến nhất được sử dụng cho GPUDirect RDMA, đặc biệt là các bản phân phối như Ubuntu, CentOS hoặc Red Hat. OS phải hỗ trợ RDMA và các trình điều khiển cần thiết.

Quy trình làm việc trong hệ thống RDMA GPUDirect:

  • Đăng ký. Bước đăng ký ban đầu này với NIC RDMA giúp bộ nhớ có thể truy cập để truyền trực tiếp.
  • Khởi tạo. Một ứng dụng hoặc quy trình kích hoạt việc truyền dữ liệu bằng API RDMA.
  • Truyền dữ liệu trực tiếp. NIC trực tiếp đọc hoặc ghi dữ liệu vào bộ nhớ GPU qua bus PCIe, bỏ qua CPU và bộ nhớ hệ thống.
  • Xử lý hoàn tất. Ứng dụng được thông báo về việc hoàn tất chuyển dữ liệu và dữ liệu có thể được GPU hoặc quy trình khác sử dụng.

GPUDirect RDMA CUDA

GPUDirect RDMA CUDA (Compute Unified Device Architecture) tích hợp công nghệ RDMA vào nền tảng điện toán song song và mô hình lập trình NVIDIA, CUDA, để tạo điều kiện thuận lợi cho các tương tác trực tiếp giữa các ứng dụng dựa trên CUDA và các thiết bị hỗ trợ RDMA.

GPUDirect RDMA CUDA hoạt động như thế nào:

Tích hợp CUDA

Các ứng dụng CUDA có thể tận dụng GPUDirect RDMA với các API và thư viện CUDA cụ thể hỗ trợ chức năng này. Điều này cho phép ứng dụng khởi tạo và quản lý các hoạt động RDMA trực tiếp từ GPU, bỏ qua CPU để truyền dữ liệu.

Ví dụ, ứng dụng CUDA có thể sử dụng API RDMA để đăng ký bộ nhớ GPU với NIC hỗ trợ RDMA. Sau khi đăng ký, NIC có thể đọc trực tiếp từ hoặc ghi vào bộ nhớ GPU, cho phép trao đổi dữ liệu hiệu quả giữa GPU và các thiết bị khác hoặc GPU từ xa qua mạng.

Các ứng dụng cho ứng dụng GPUDirect RDMA CUDA:

Các ứng dụng bao gồm thiết lập đào tạo đa nút cho học máy phân tán và mô phỏng khoa học cho môi trường điện toán hiệu suất cao (HPC). Các ứng dụng khác bao gồm các ứng dụng đòi hỏi xử lý dữ liệu thời gian thực, chẳng hạn như hệ thống giao dịch tài chính hoặc phân tích video thời gian thực.

Điểm benchmark GPUDirect RDMA

Có một số điểm benchmark RDMA GPUDirect quan trọng cần hiểu và nhiều yếu tố có thể ảnh hưởng đến kết quả đánh giá chuẩn:

Kết quả chuẩn RDMA GPUDirect điển hình:

  • Độ trễ của GPUDirect RDMA. Đối với các tin nhắn nhỏ, độ trễ có thể thấp tới 2-5 micro giây.
  • Băng thông GPUDirect RDMA. Tốc độ này dao động từ 10 đến 25 GB/giây tùy thuộc vào thế hệ PCIe và cấu hình phần cứng cụ thể.
  • Kích thước tin nhắn so với độ trễ/thông lượng. Tốc độ tin nhắn cao — đặc biệt là đối với tin nhắn nhỏ, điều này là bình thường — cho thấy khả năng xử lý hiệu quả nhiều giao dịch mỗi giây, một kết quả quan trọng đối với tải xử lý phân tán.

Nhiều yếu tố ảnh hưởng đến kết quả benchmark:

  • Thế hệ PCIe. PCIe Gen4 cung cấp băng thông cao hơn so với Gen3, giúp cải thiện hiệu suất.
  • Model GPU và NIC. Các model GPU và NIC cụ thể, cùng với các phiên bản firmware hay driver của chúng, có thể ảnh hưởng đáng kể đến hiệu suất.
  • Cấu hình hệ thống. Thiết lập hệ thống tổng thể, bao gồm số lượng GPU, cấu trúc mạng và kiến ​​trúc CPU, sẽ ảnh hưởng đến kết quả chuẩn.

Các ví dụ về GPUDirect RDMA

NVIDIA GPUDirect RDMA được sử dụng trong nhiều ứng dụng HPC và dữ liệu chuyên sâu mà việc giảm thiểu độ trễ và tối đa hóa thông lượng dữ liệu là rất quan trọng. Sau đây là một số ví dụ về GPUDirect RDMA để bạn cân nhắc:

  • Học sâu phân tán và đào tạo AI. Trong các tác vụ học sâu quy mô lớn, các mô hình thường được đào tạo trên GPU qua các nút trong một cụm phân tán. GPUDirect RDMA chia sẻ hiệu quả các tham số và độ dốc mô hình giữa các GPU trên các nút này để đào tạo deep neural network (DNN) trên các tác vụ như nhận dạng hình ảnh hoặc xử lý ngôn ngữ tự nhiên.
  • Mô phỏng khoa học và HPC. Mô hình hóa khí hậu và động lực học chất lỏng hoặc phân tử thường đòi hỏi sức mạnh xử lý của nhiều GPU. Các mô phỏng này liên quan đến các tập dữ liệu lớn phải được chia sẻ và xử lý song song trên các nút tính toán khác nhau. GPUDirect RDMA có thể truyền dữ liệu hạt trực tiếp giữa các GPU trên các nút khác nhau, do đó các nhà khoa học có thể mô phỏng ngay cả các hệ thống phân tử phức tạp nhanh hơn.
  • Phân tích dữ liệu thời gian thực và dịch vụ tài chính. Các ứng dụng như giao dịch tần suất cao yêu cầu xử lý dữ liệu thị trường có độ trễ cực thấp để đưa ra quyết định trong tích tắc. GPUDirect RDMA có thể truyền dữ liệu trực tiếp từ giao diện mạng để dữ liệu đến có thể được xử lý nhanh chóng và giao dịch có thể được thực hiện nhanh hơn so với đối thủ cạnh tranh.
  • Viễn thông và mạng 5G. Các hệ thống tiên tiến hỗ trợ các ứng dụng băng thông cao như live streaming video, thực tế tăng cường và IoT đòi hỏi phải xử lý dữ liệu mạng nhanh chóng và hiệu quả.
  • Xe tự hành và robot. Chúng sử dụng GPUDirect RDMA để xử lý dữ liệu cảm biến từ camera, LIDAR và RADAR theo thời gian thực để phát hiện vật thể, lập kế hoạch đường đi và ra quyết định.

GPUDirect RDMA so với GPUDirect Storage

Cả GPUDirect Storage và GPUDirect RDMA đều cải thiện hiệu suất mà không gây quá tải cho CPU, nhưng chúng đạt được mục tiêu đó theo những cách khác nhau.

GPUDirect Storage đặc biệt cho phép truyền dữ liệu trực tiếp giữa các thiết bị lưu trữ và bộ nhớ GPU để tối ưu hóa quyền truy cập cho các ứng dụng chạy bằng GPU. Nó hoạt động mà không quan tâm đến vị trí lưu trữ. Ngược lại, GPUDirect RDMA là công nghệ rộng hơn tạo điều kiện cho việc truyền dữ liệu tốc độ cao bằng cách cho phép truy cập bộ nhớ trực tiếp giữa GPU và các thiết bị và hệ thống lưu trữ trên toàn mạng. Nó hoạt động dựa trên thiết bị hoặc vị trí lưu trữ mà nó đang truy cập.

GPUDirect RDMA so với NVLink

Giống như NVIDIA GPUDirect RDMA, NVLink cũng tăng cường truyền dữ liệu và giao tiếp trong các hệ thống sử dụng GPU NVIDIA. Tuy nhiên, nó cũng khác biệt ở một số điểm quan trọng:

  • Trong khi GPUDirect RDMA giao tiếp trực tiếp với các thiết bị khác qua bus PCIe, nó không thể đạt được cùng băng thông; NVLink là một giải pháp thay thế cho PCIe để giao tiếp GPU-GPU hoặc CPU-GPU trong cùng một nút.
  • NVLink được thiết kế dành riêng cho giao tiếp tốc độ cao, độ trễ thấp, tạo ra một “mesh” GPU có thể chia sẻ bộ nhớ và dữ liệu nhanh chóng. Mesh cho phép phân bổ ngang hàng giữa nhiều GPU với băng thông rất cao và độ trễ thấp và giao tiếp ở tốc độ cao hơn nhiều so với PCIe.

Lợi ích của GPUDirect RDMA

Lợi ích của việc truy cập bộ nhớ từ xa trực tiếp bằng GPUDirect bao gồm:

  • Giảm độ trễ. Bỏ qua CPU trong quá trình truyền dữ liệu giúp giảm độ trễ và tăng băng thông từ 2-8 lần, giúp truy cập dữ liệu nhanh hơn, đọc và ghi nhanh hơn và cải thiện hiệu suất.
  • Tăng thông lượng. GPUDirect RDMA tối ưu hóa đường dẫn truyền dữ liệu, cho phép thông lượng cao hơn giữa các thiết bị lưu trữ và bộ nhớ GPU, nâng cao hiệu quả tổng thể của hệ thống.
  • Cải thiện quy mô lưu trữ. GPUDirect RDMA cho phép truy cập dữ liệu hiệu quả trong môi trường điện toán phân tán và đa GPU, hỗ trợ các ứng dụng quy mô lớn.
  • Giảm tải CPU. Truyền dữ liệu trực tiếp giữa bộ nhớ lưu trữ và bộ nhớ GPU giúp giảm chi phí CPU, giải phóng tài nguyên CPU cho các tác vụ khác và cải thiện hiệu quả chung của hệ thống.
____
Bài viết liên quan
Góp ý / Liên hệ tác giả