精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

IB Verbs和NVIDIA DOCA GPUNetIO性能測試

NVIDIA英偉達企業解決方案 ? 來源:NVIDIA英偉達企業解決方案 ? 2024-08-23 17:03 ? 次閱讀

NVIDIA DOCA GPUNetIO NVIDIA DOCA SDK 中的一個庫,專門為實時在線 GPU 數據包處理而設計。它結合了 GPUDirect RDMA GPUDirect Async 等技術,能夠創建以 GPU 為中心的應用程序,其中 CUDA 內核可以直接與網卡(NIC通信,從而繞過 CPU 發送和接收數據包,并將 CPU 排除在關鍵路徑之外。

此前,DOCA GPUNetIO 與 DOCA Ethernet DOCA Flow 僅限于處理以太網傳輸層上的數據包傳輸。隨著 DOCA 2.7 的推出,現在有一組擴展的 API 使 DOCA GPUNetIO 能夠從 GPU CUDA 內核使用 RoCE 或 InfiniBand 傳輸層來直接支持 RDMA 通信。

本文探討了由支持 DOCA GPUNetIO 的 GPU CUDA 內核控制的全新遠程直接內存訪問(RDMA)功能,并與性能測試(perftest)微基準測試進行了性能比較。

請注意,RDMA 縮寫描述的協議允許從一臺計算機的內存到另一臺計算機的內存進行遠程直接內存訪問,而無需任何一臺計算機的操作系統介入。操作示例包括 RDMA 寫入和 RDMA 讀取。它不能將與 GPUDirect RDMA 混淆,后者與 RDMA 協議無關。GPUDirect RDMA 是 NVIDIA 在 GPUDirect 技術系列中啟用的技術之一,使網卡能夠繞過 CPU 內存副本和操作系統例程,直接訪問 GPU 內存發送或接收數據。任何使用以太網、InfiniBand 或 RoCE 的網絡框架都可以啟用 GPUDirect RDMA。

具有 GPUNetIO 的 RDMA GPU 數據路徑

RDMA 可以在兩臺主機的主內存之間提供直接訪問,而無需操作系統、緩存或存儲的介入。這可實現高吞吐量、低延遲和低 CPU 利用率的數據傳輸。這是通過向遠程主機(或對等主機)注冊并共享本地內存區域來實現的,以便遠程主機知道如何訪問它。

兩個對等主機需要通過 RDMA 交換數據的應用程序通常遵循三個基本步驟:

步驟 1–本地配置:每個對等主機在本地創建 RDMA 隊列和內存緩沖區,以便與其他對等主機共享。

步驟 2–交換信息使用帶外(OOB)機制(例如,Linux 套接字),對等主機交換有關要遠程訪問的 RDMA 隊列和內存緩沖區的信息。

步驟 3–數據路徑:兩個對等主機執行 RDMA 讀取、寫入、發送和接收,以使用遠程內存地址來交換數據。

DOCA RDMA 庫支持按照上面列出的三個步驟通過 InfiniBand 或 RoCE 實現 RDMA 通信,所有這些步驟均由 CPU 執行。通過引入全新的 GPUNetIO RDMA 功能,應用程序可以使用在 GPU 上的 CUDA 內核執行這 3 個步驟從而代替 CPU 來管理 RDMA 應用程序的數據路徑,而步驟 1 和 2 保持不變,因為它們與 GPU 數據路徑無關。

將 RDMA 數據路徑移到 GPU 上的好處與以太網用例中的好處相同。在數據處理發生在 GPU 上的網絡應用程序中,將網絡通信從 CPU 卸載到 GPU,使其能夠成為應用程序的主控制器,消除與 CPU 交互所需的額外延遲,以及了解數據何時準備就緒及數據位于何處,這也釋放了 CPU 資源。此外,GPU 可以同時并行管理多個 RDMA 隊列,例如,每個 CUDA 塊都可以在不同的 RDMA 隊列上發布 RDMA 操作。

IB Verbs 和 DOCA GPUNetIO 性能測試

在 DOCA 2.7 中,引入了一個新的 DOCA GPUNetIO RDMA 客戶端——服務器代碼示例,以展示新 API 的使用并評估其正確性。本文分析了 GPUNetIO RDMA 功能與 IB Verbs RDMA 功能之間的性能比較,重現了眾所周知的 perftest 套件中的一個微基準測試。

簡而言之,perftest 是一組微基準測試,用于使用基本的 RDMA 操作測量兩個對等主機(服務器和客戶端)之間的 RDMA 帶寬(BW)和延遲。盡管網絡控制部分發生在 CPU 中,但可以通過使用 --use_cuda 標志啟用 GPUDirect RDMA 來指定數據是否駐留在 GPU 內存中。

一般來說,RDMA 寫入單向帶寬基準測試(即 ib_write_bw)在每個 RDMA 隊列上發布一系列相同大小消息的寫入請求,用于固定迭代次數,并命令網卡執行已發布的寫入,這就是所謂的“按門鈴”程序。為了確保所有寫入都已發出,在進入下一次迭代之前,它會輪詢完成隊列,等待確認每個寫入都已正確執行。然后,對于每個消息大小,都可以檢索發布和輪詢所花費的總時間,并以 MB/s 為單位計算帶寬。

圖 1 顯示了 IB Verbs ib_write_bw perftest 主循環。在每次迭代中,CPU 都會發布一個 RDMA 寫入請求列表,命令網卡執行這些請求(按門鈴),然后等待完成后再進行下一次迭代。啟用 CUDA 標志后,要寫入的數據包將從 GPU 內存本地獲取,而不是從 CPU 內存。

wKgaombIUG6AWlOKAAH2SzSPRP8059.png

圖 1:IB Verbs ib_write_bw perftest 主循環

實驗是使用 DOCA 庫重現 ib_write_bw 微基準測試,使用 DOCA RDMA 作為 CPU 上的控制路徑以建立客戶端-服務器連接,并使用 DOCA GPUNetIO RDMA 作為數據路徑,在 CUDA 內核中發布寫入。這種比較不是同類比較,因為 perftest 使用 GPUDirect RDMA 來傳輸數據,但網絡通信由 CPU 控制,而 DOCA GPUNetIO 同時使用 GPUDirect RDMA 和 GPUDirect Async 來控制網絡通信和來自 GPU 的數據傳輸。目標是證明 DOCA GPUNetIO RDMA 性能與被視為基準的 IB Verbs perftest 相當。

為了重現 ib_write_bw 數據路徑并測量發布每種消息大小的 RDMA 寫入操作所需的時間,CPU 會記錄一個 CUDA 事件,啟動 rdma_write_bw CUDA 內核,然后記錄第二個 CUDA 事件。這應該可以很好地近似 CUDA 內核使用 DOCA GPUNetIO 功能發布 RDMA 寫入所需的時間(以毫秒為單位),如下面的代碼段 1 所示。

Int msg_sizes[MAX_MSG] = {....};
for (int msg_idx = 0; msg_idx < MAX_MSG; msg_idx++) {
 ? ? ? ? do_warmup();
 ? ? ? ? cuEventRecord(start_event, stream);
 ? ? ? ? rdma_write_bw<<>>(msg_sizes[msg_idx], …);
     cuEventRecord(end_event, stream);
     cuEventSynchronize(end_event);
     cuEventElapsedTime(&total_ms, start_event, end_event);
     calculate_result(total_ms, msg_sizes[msg_idx], …)
}

在下面的代碼段 2 中,對于給定的迭代次數,CUDA 內核 rdma_write_bw 使用按照弱模式的 DOCA GPUNetIO 設備功能并行發布一系列 RDMA 寫入,CUDA 塊中的每個 CUDA 線程都會發布一個寫操作。

__global__ void rdma_write_bw(struct doca_gpu_dev_rdma *rdma_gpu,
        const int num_iter, const size_t msg_size,
        const struct doca_gpu_buf_arr *server_local_buf_arr,
        const struct doca_gpu_buf_arr *server_remote_buf_arr)
{
  struct doca_gpu_buf *remote_buf;
  struct doca_gpu_buf *local_buf;
  uint32_t curr_position;
  uint32_t mask_max_position;
 
  doca_gpu_dev_buf_get_buf(server_local_buf_arr, threadIdx.x, &local_buf);
  doca_gpu_dev_buf_get_buf(server_remote_buf_arr, threadIdx.x, &remote_buf);
 
  for (int iter_idx = 0; iter_idx < num_iter; iter_idx++) {
 ? ? ? doca_gpu_dev_rdma_get_info(rdma_gpu, &curr_position, &mask_max_position);
 ? ? ? doca_gpu_dev_rdma_write_weak(rdma_gpu,
 ? ? ? ? ? ? ? ? ? remote_buf, 0,
 ? ? ? ? ? ? ? ? ? local_buf, 0,
 ? ? ? ? ? ? ? ? ? msg_size, 0,
 ? ? ? ? ? ? ? ? ? DOCA_GPU_RDMA_WRITE_FLAG_NONE,
 ? ? ? ? ? ? ? ? ? (curr_position + threadIdx.x) & mask_max_position);
 ? ? ? /* Wait all CUDA threads to post their RDMA Write */
 ? ? ? __syncthreads();
 
 ? ? ? if (threadIdx.x == 0) {
 ? ? ? ? ? /* Only 1 CUDA thread can commit the writes in the queue to execute them */
 ? ? ? ? ? doca_gpu_dev_rdma_commit_weak(rdma_gpu, blockDim.x);
 ? ? ? ? ? ? ? ?/* Only 1 CUDA thread can flush the RDMA queue waiting for the actual execution of the writes */
 ? ? ? doca_gpu_dev_rdma_flush(rdma_gpu);
 ? ? ? }
 ? ? ? __syncthreads();
 ? }
 
 ? return;
}

圖 2 描述了代碼段 2。在每次迭代時,GPU CUDA 內核都會并行發布一系列 RDMA 寫入請求,CUDA 塊中的每個 CUDA 線程一個。在同步所有 CUDA 線程后,只有線程 0 命令網卡執行寫入并等待完成,然后刷新隊列,最后再進行下一次迭代。

wKgaombIUHuAAJiuAAEihPWGy8I944.png

圖 2:DOCA GPUNetIO RDMA 寫入性能測試主循環

為了比較性能,為 IB Verbs perftest 和 DOCA GPUNetIO perftest 設置了相同的參數:1 個 RDMA 隊列,2048 次迭代,每次迭代執行 512 次 RDMA 寫入,測試消息大小從 64 字節到 4096 字節。

RoCE 基準測試已在具有不同 PCIe 拓撲的兩個系統上執行:

系統 1:HPE ProLiant DL380 Gen11 系統,配備 NVIDIA GPU L40S 和運行在 NIC 模式的 BlueField-3 卡、Intel Xeon Silver 4410Y CPU。GPU 和網卡連接到同一 NUMA 節點上的兩個不同 PCIe 插槽(無專用 PCIe 交換機)。

系統 2:Dell R750 系統,配備 NVIDIA H100 GPU 和 ConnectX-7 網卡、Intel Xeon Silver 4314 CPU。GPU 和網卡連接到不同 NUMA 節點上的兩個不同 PCIe 插槽(GPUDirect 應用程序的最壞情況)。

如下圖所示,兩種 perftest 在兩個系統上實現了完全可比較的峰值帶寬(圖 3 和圖 4),報告以 MB/s 為單位。

具體來說,在圖 3 中,DOCA GPUNetIO perftest 帶寬優于圖 4 中報告的 DOCA GPUNetIO perftest 帶寬,因為系統上的拓撲不同,這不僅影響從 GPU 內存到網絡的數據移動(GPUDirect RDMA),而且影響 GPU 和網卡之間的內部通信控制 RDMA 通信(GPUDirect Async)。

由于代碼中不同邏輯的性質,時間和帶寬采用不同的方法來測量,IB Verbs perftest 使用系統時鐘,而 DOCA GPUNetIO perftest 則依賴于 CUDA 事件,后者可能具有不同的內部時間測量開銷。

wKgZombIUIeAcO95AACiRXUbF2s125.png

圖 3:Perftest 對系統 1 上 1 個隊列的峰值帶寬(MB/s)進行 IB Verbs 與 DOCA GPUNetIO 的比較

wKgZombIUJOAVZdbAACQMjS5dsA027.png

圖 4:Perftest 對系統 2 上 1 個隊列的峰值帶寬(MB/s)進行 IB Verbs 與 DOCA GPUNetIO 的比較

請注意,像 perftest 這樣的應用程序并不是展示 GPU 利用率優勢的最佳工具,因為可實現的并行化程度非常低。DOCA GPUNetIO perftest 進行 RDMA 寫入是以并行方式發布在隊列中的(512 次寫入,每次寫入由不同的 CUDA 線程執行),但發布所需的時間非常短(約 4 微秒)。大部分 perftest 時間都花在網卡實際執行 RDMA 寫入、通過網絡發送數據和返回上。

這項實驗可以被認為是成功的,因為它證明了使用 DOCA GPUNetIO RDMA API 與使用常規 IB Verbs 相比不會引入任何相關開銷,并且在運行相同類型的工作負載和工作流程時可以滿足性能目標。ISV 開發者和最終用戶可以使用 DOCA GPUNetIO RDMA,獲得 GPUDirect 異步技術的優勢,將通信控制卸載到 GPU。

這種架構選擇提供了以下優勢:

更具可擴展性的應用程序,能夠同時并行管理多個 RDMA 隊列(通常每個 CUDA 塊一個隊列)。

能夠利用 GPU 提供的高度并行性,使多個 CUDA 線程并行處理不同的數據,并以盡可能低的延遲在同一隊列上發布 RDMA 操作。

更低的 CPU 利用率,使解決方案獨立于平臺(不同的 CPU 架構不會導致顯著的性能差異)。

更少的內部總線事務(例如 PCIe),因為不需要將 GPU 上的工作與 CPU 活動同步。CPU 不再負責發送或接收 GPU 必須處理的數據。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 以太網
    +關注

    關注

    40

    文章

    5385

    瀏覽量

    171160
  • NVIDIA
    +關注

    關注

    14

    文章

    4949

    瀏覽量

    102825
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4703

    瀏覽量

    128723
  • 內存
    +關注

    關注

    8

    文章

    3004

    瀏覽量

    73900
  • RDMA
    +關注

    關注

    0

    文章

    76

    瀏覽量

    8929

原文標題:使用 NVIDIA DOCA GPUNetIO 解鎖 GPU 加速的 RDMA

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    NVIDIA DOCA 1.5長期支持版本發布

    近日,NVIDIA 發布了 NVIDIA DOCA 1.5 長期支持(LTS)版本。
    的頭像 發表于 11-10 10:06 ?743次閱讀

    使用 NVIDIA DOCA GPUNetIO 進行內聯 GPU 數據包處理

    數據包處理 》。 這篇文章解釋了新的 NVIDIA DOCA GPUNetIO 庫如何克服以前 DPDK 解決方
    的頭像 發表于 01-13 23:25 ?914次閱讀

    NVIDIA DOCA 應用代碼分享活動開啟注冊!

    驅動的數據中心、高性能計算及云計算基礎設施帶來前所未有的創新! NVIDIA DOCA 軟件框架為 NVIDIA DPU 注入靈魂。 作為專為
    的頭像 發表于 04-11 09:10 ?437次閱讀

    利用 NVIDIA DOCA 2.0 改變 IPsec 的部署

    共同加速了應用程序的開發,通過一個全面、開放的開發平臺實現突破性的網絡、安全和存儲性能NVIDIA DOCA 2.0 新增了對 BlueField-3 數據路徑加速器(DPA)子系統的支持,并增強
    的頭像 發表于 05-15 23:35 ?448次閱讀
    利用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>DOCA</b> 2.0 改變 IPsec 的部署

    《揭秘 NVIDIA DPU &amp; DOCA》 開講啦!

    DOCA 快速創建 NVIDIA DPU 加速的、高性能數據中心基礎設施應用程序和服務。 本期看點:DPU 的技術發展背景 本期節目,NVIDIA 技術專家將為您
    的頭像 發表于 06-08 20:55 ?535次閱讀
    《揭秘 <b class='flag-5'>NVIDIA</b> DPU &amp; <b class='flag-5'>DOCA</b>》 開講啦!

    《揭秘 NVIDIA DPU &amp; DOCA》 第二講上線!

    DOCA 快速創建 NVIDIA DPU 加速的、高性能數據中心基礎設施應用程序和服務。 本期看點:NVIDIA BlueField DPU 概述 上一期我們探討了 DPU 的技術發
    的頭像 發表于 06-16 11:45 ?505次閱讀
    《揭秘 <b class='flag-5'>NVIDIA</b> DPU &amp; <b class='flag-5'>DOCA</b>》 第二講上線!

    《揭秘 NVIDIA DPU &amp; DOCA》 第三講上線!

    開發人員利用 DOCA 快速創建 NVIDIA BlueField DPU 加速的、高性能數據中心基礎設施應用程序和服務。 本期看點: NVIDIA
    的頭像 發表于 06-29 21:35 ?366次閱讀
    《揭秘 <b class='flag-5'>NVIDIA</b> DPU &amp; <b class='flag-5'>DOCA</b>》 第三講上線!

    《揭秘 NVIDIA DPU &amp; DOCA》 第五講上線!

    開發人員利用 DOCA 快速創建 NVIDIA BlueField DPU 加速的、高性能數據中心基礎設施應用程序和服務。 本期看點: NVIDIA
    的頭像 發表于 07-12 19:10 ?459次閱讀
    《揭秘 <b class='flag-5'>NVIDIA</b> DPU &amp; <b class='flag-5'>DOCA</b>》 第五講上線!

    《揭秘 NVIDIA DPU &amp; DOCA》 第六講上線!

    開發人員利用 DOCA 快速創建 NVIDIA BlueField DPU 加速的、高性能數據中心基礎設施應用程序和服務。 本期看點: NVIDIA BlueField DPU 提升數
    的頭像 發表于 07-20 18:15 ?479次閱讀
    《揭秘 <b class='flag-5'>NVIDIA</b> DPU &amp; <b class='flag-5'>DOCA</b>》 第六講上線!

    《揭秘 NVIDIA DPU &amp; DOCA》 第七講上線!

    開發人員利用 DOCA 快速創建 NVIDIA BlueField DPU 加速的、高性能數據中心基礎設施應用程序和服務。 本期看點: NVIDIA BlueField DPU 和
    的頭像 發表于 07-27 18:10 ?423次閱讀
    《揭秘 <b class='flag-5'>NVIDIA</b> DPU &amp; <b class='flag-5'>DOCA</b>》 第七講上線!

    《揭秘 NVIDIA DPU &amp; DOCA》 第八講上線!

    開發人員利用 DOCA 快速創建 NVIDIA BlueField DPU 加速的、高性能數據中心基礎設施應用程序和服務。 本期看點: 基于 NVIDIA
    的頭像 發表于 08-03 19:20 ?522次閱讀
    《揭秘 <b class='flag-5'>NVIDIA</b> DPU &amp; <b class='flag-5'>DOCA</b>》 第八講上線!

    使用 NVIDIA DOCA GPUNetIO 實現實時網絡處理功能

    DOCA GPUNetIO以降低延遲并最大限度地提高性能NVIDIA DOCA GPUNetIO
    的頭像 發表于 08-16 20:05 ?582次閱讀
    使用 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>DOCA</b> <b class='flag-5'>GPUNetIO</b> 實現實時網絡處理功能

    NVIDIA DOCA 2.5 長期支持版本發布

    正值 NVIDIA DOCA 面世三周年之際,NVIDIA 于近日發布了適用于 NVIDIA BlueField-3 網絡平臺的 NVIDIA
    的頭像 發表于 12-26 18:25 ?390次閱讀
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>DOCA</b> 2.5 長期支持版本發布

    基于NVIDIA DOCA 2.6實現高性能和安全的AI云設計

    作為專為 NVIDIA? BlueField? 網絡平臺而設計的數據中心基礎設施軟件框架,NVIDIA? DOCA? 使廣大開發者能夠利用其行業標準 API 在 NVIDIA Blue
    的頭像 發表于 02-23 10:02 ?433次閱讀

    NVIDIA DOCA-OFED的主要特性

    NVIDIA DOCA 軟件平臺釋放了 NVIDIA BlueField 網絡平臺的潛力,并為NVIDIA BlueField和ConnectX設備提供了所需的所有主機驅動程序。
    的頭像 發表于 11-09 13:50 ?188次閱讀