0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用 NVIDIA DOCA GPUNetIO 進(jìn)行內(nèi)聯(lián) GPU 數(shù)據(jù)包處理

NVIDIA英偉達(dá) ? 來源:未知 ? 2023-01-13 23:25 ? 次閱讀

越來越多的網(wǎng)絡(luò)應(yīng)用程序需要進(jìn)行 GPU 實時數(shù)據(jù)包處理,以實現(xiàn)高數(shù)據(jù)率解決方案:數(shù)據(jù)過濾、數(shù)據(jù)放置、網(wǎng)絡(luò)分析、傳感器信號處理等。

一個主要動機(jī)是 GPU 可以實現(xiàn)并行處理多個數(shù)據(jù)包的高度并行性,同時提供可擴(kuò)展性和可編程性。

有關(guān)這些技術(shù)的基本概念以及基于 DPDK gpudev 庫的初始解決方案的概述,掃描下方二維碼參見文章《通過 GPU 使用 DPDK 和 GPUdev 增強(qiáng)內(nèi)聯(lián)數(shù)據(jù)包處理 》。

bba7e274-9354-11ed-bfe3-dac502259ad0.png

這篇文章解釋了新的 NVIDIA DOCA GPUNetIO 庫如何克服以前 DPDK 解決方案中的一些限制,向以 GPU 為中心的數(shù)據(jù)包處理應(yīng)用程序邁進(jìn)了一步。

介紹

網(wǎng)絡(luò)數(shù)據(jù)包的實時 GPU 處理是一種適用于幾個不同應(yīng)用領(lǐng)域的技術(shù),包括信號處理、網(wǎng)絡(luò)安全、信息收集和輸入重建。這些應(yīng)用程序的目標(biāo)是實現(xiàn)一個內(nèi)聯(lián)數(shù)據(jù)包處理管線(Pipeline),以在 GPU 內(nèi)存中接收數(shù)據(jù)包(無需通過 CPU 內(nèi)存暫存副本);與一個或多個 CUDA 內(nèi)核并行地處理它們;然后運(yùn)行推斷、評估或通過網(wǎng)絡(luò)發(fā)送計算結(jié)果。

通常,在這個管線中,CPU 是協(xié)調(diào)人,因為它必須使網(wǎng)卡(NIC)接收活動與 GPU 處理同步。一旦 GPU 內(nèi)存中接收到新的數(shù)據(jù)包,這將喚醒 CUDA 內(nèi)核。類似的方法也可以應(yīng)用于管線的發(fā)送側(cè)。

bbb91030-9354-11ed-bfe3-dac502259ad0.png

圖 1 . 以 CPU 為中心的應(yīng)用程序, CPU 協(xié)調(diào) GPU 和網(wǎng)卡工作

數(shù)據(jù)平面開發(fā)套件(DPDK)框架引入了 goudev 庫來為此類應(yīng)用提供解決方案:使用 GPU 內(nèi)存(GPUDirect RDMA 技術(shù))結(jié)合低延遲 CPU 同步進(jìn)行接收或發(fā)送。

GPU 發(fā)起的通信

從圖 1 中可以看出,CPU 是主要瓶頸。它在同步 NIC 和 GPU 任務(wù)以及管理多個網(wǎng)絡(luò)隊列方面承擔(dān)了太多的責(zé)任。例如,考慮一個具有多個接收隊列和 100 Gbps 傳入流量的應(yīng)用程序。以 CPU 為中心的解決方案將具有:

  • CPU 調(diào)用每個接收隊列上的網(wǎng)絡(luò)功能,以使用一個或多個 CPU 核心接收 GPU 存儲器中的數(shù)據(jù)包

  • CPU 收集數(shù)據(jù)包信息(數(shù)據(jù)包地址、編號)

  • CPU 向 GPU 通知新接收的數(shù)據(jù)包

  • GPU 處理數(shù)據(jù)包

這種以 CPU 為中心的方法是:

  • 資源消耗:為了處理高速率網(wǎng)絡(luò)吞吐量(100 Gbps 或更高),應(yīng)用程序可能需要專用整個 CPU 物理核心來接收(和/或發(fā)送)數(shù)據(jù)包

  • 不可擴(kuò)展:為了與不同的隊列并行接收(或發(fā)送),應(yīng)用程序可能需要使用多個 CPU 核心,即使在 CPU 核心的總數(shù)可能被限制在較低數(shù)量(取決于平臺)的系統(tǒng)上也是如此

  • 平臺依賴性:低功耗 CPU 上的同一應(yīng)用程序?qū)⒔档托阅?/p>

GPU 內(nèi)聯(lián)分組處理應(yīng)用程序的下一個自然步驟是從關(guān)鍵路徑中刪除 CPU 。移動到以 GPU 為中心的解決方案,GPU 可以直接與 NIC 交互以接收數(shù)據(jù)包,因此數(shù)據(jù)包一到達(dá) GPU 內(nèi)存,處理就可以開始。同樣的方法也適用于發(fā)送操作。

GPU 從 CUDA 內(nèi)核控制 NIC 活動的能力稱為 GPU 發(fā)起的通信。假設(shè)使用 NVIDIA GPU 和 NVIDIA NIC ,則可以將 NIC 寄存器暴露給 GPU 的直接訪問。這樣,CUDA 內(nèi)核可以直接配置和更新這些寄存器,以協(xié)調(diào)發(fā)送或接收網(wǎng)絡(luò)操作,而無需 CPU 的干預(yù)。

bbccb040-9354-11ed-bfe3-dac502259ad0.png

圖 2 . 以 GPU 為中心的應(yīng)用程序,GPU 控制網(wǎng)卡和數(shù)據(jù)包處理,無需 CPU

根據(jù)定義,DPDK 是 CPU 框架。要啟用 GPU 發(fā)起的通信,需要在 GPU 上移動整個控制路徑,這是不適用的。因此,通過創(chuàng)建新的 NVIDIA DOCA 庫來啟用此功能。

NVIDIA DOCA GPUNetIO 庫

NVIDIA DOCA SDK 是新的 NVIDIA 框架,由驅(qū)動程序、庫、工具、文檔和示例應(yīng)用程序組成。需要這些資源通過利用 NVIDIA 硬件可以在主機(jī)系統(tǒng)和 DPU 上可用的網(wǎng)絡(luò)、安全性和計算功能來支持應(yīng)用程序。

NVIDIA DOCA GPUNetIO 是在 NVIDIA DOCA 1.5 版本的基礎(chǔ)上開發(fā)的一個新庫,用于在 DOCA 生態(tài)系統(tǒng)中引入 GPU 設(shè)備的概念(圖 3)。為了促進(jìn)創(chuàng)建以 DOCA GPU 為中心的實時數(shù)據(jù)包處理應(yīng)用程序,DOCA GPUNetIO 結(jié)合了 GPUDirect RDMA 用于數(shù)據(jù)路徑加速、智能 GPU 內(nèi)存管理、CPU 和 GPU 之間的低延遲消息傳遞技術(shù)(通過 GDRCopy 功能)和 GPU 發(fā)起的通信。

這使 CUDA 內(nèi)核能夠直接控制 NVIDIA ConnectX 網(wǎng)卡。為了最大化性能, DOCA GPUNetIO 庫必須用于 GPUDirect 友好的平臺,其中 GPU 和網(wǎng)卡通過專用 PCIe 網(wǎng)橋直接連接。DPU 融合卡就是一個示例,但同樣的拓?fù)湟部梢栽谥鳈C(jī)系統(tǒng)上實現(xiàn)。

DOCA GPUNetIO 目標(biāo)是 GPU 數(shù)據(jù)包處理網(wǎng)絡(luò)應(yīng)用程序,使用以太網(wǎng)協(xié)議在網(wǎng)絡(luò)中交換數(shù)據(jù)包。對于這些應(yīng)用程序,不需要像基于 RDMA 的應(yīng)用程序那樣,通過 OOB 機(jī)制跨對等端進(jìn)行預(yù)同步階段。也無需假設(shè)其他對等端將使用 DOCA GPUNetIO 進(jìn)行通信,也無需了解拓?fù)?。在未來的版本中,RDMA 選項將被啟用以覆蓋更多的用例。

DOCA 當(dāng)前版本中啟用的 GPUNetIO 功能包括:

  • GPU 發(fā)起的通信: CUDA 內(nèi)核可以調(diào)用 DOCA GPUNetIO 庫中的 CUDA device 函數(shù),以指示網(wǎng)卡發(fā)送或接收數(shù)據(jù)包

  • 精確的發(fā)送調(diào)度:通過 GPU 發(fā)起的通信,可以根據(jù)用戶提供的時間戳來調(diào)度未來的數(shù)據(jù)包傳輸

  • GPU Direct RDMA :以連續(xù)固定大小 GPU 內(nèi)存步幅接收或發(fā)送數(shù)據(jù)包,無需 CPU 內(nèi)存暫存副本

  • 信號量:在 CPU 和 GPU 之間或不同 GPU CUDA 內(nèi)核之間提供標(biāo)準(zhǔn)化的低延遲消息傳遞協(xié)議

  • CPU 對 CUDA 內(nèi)存的直接訪問:CPU 可以在不使用 GPU 內(nèi)存 API 的情況下修改 GPU 內(nèi)存緩沖區(qū)

bbfecd64-9354-11ed-bfe3-dac502259ad0.png

圖 3 . NVIDIA DOCA GPUNetIO 是一個新的 DOCA 庫,需要在同一平臺上安裝 GPU 和 CUDA 驅(qū)動程序和庫

如圖 4 所示,典型的 DOCA GPUNetIO 應(yīng)用程序步驟如下:

CPU 上的初始配置階段:

  • 使用 DOCA 識別和初始化 GPU 設(shè)備和網(wǎng)絡(luò)設(shè)備

  • 使用 DOCA GPUNetIO 創(chuàng)建可從 CUDA 內(nèi)核管理的接收或發(fā)送隊列

  • 使用DOCA Flow確定應(yīng)在每個接收隊列中放置哪種類型的數(shù)據(jù)包(例如,IP 地址的子集、TCP 或 UDP 協(xié)議等)

  • 啟動一個或多個 CUDA 內(nèi)核(執(zhí)行數(shù)據(jù)包處理/過濾/分析)

CUDA 內(nèi)核內(nèi) GPU 上的運(yùn)行時控制和數(shù)據(jù)路徑:

  • 使用 DOCA GPUNetIO CUDA 設(shè)備函數(shù)發(fā)送或接收數(shù)據(jù)包

  • 使用 DOCA GPUNetIO CUDA 設(shè)備函數(shù)與信號量交互,以使工作與其他 CUDA 內(nèi)核或 CPU 同步

bc3047d6-9354-11ed-bfe3-dac502259ad0.png

圖 4 . 由多個構(gòu)建塊組成的通用 GPU 數(shù)據(jù)包處理管線數(shù)據(jù)流

以下各節(jié)概述了結(jié)合 DOCA GPUNetIO 構(gòu)建塊的可能 GPU 數(shù)據(jù)包處理管線應(yīng)用程序布局。

CPU 接收和 GPU 處理

第一個示例以 CPU 為中心,不使用 GPU 發(fā)起的通信功能。它可以被視為以下章節(jié)的基線。CPU 創(chuàng)建可從 CPU 自身管理的接收隊列,以接收 GPU 存儲器中的數(shù)據(jù)包,并為每個隊列分配流量控制規(guī)則。

在運(yùn)行時,CPU 接收 GPU 存儲器中的數(shù)據(jù)包。它通過 DOCA GPUNetIO 信號量向一個或多個 CUDA 內(nèi)核通知每個隊列新一組數(shù)據(jù)包的到達(dá),提供 GPU 內(nèi)存地址和數(shù)據(jù)包數(shù)量等信息。在 GPU 上,CUDA 內(nèi)核輪詢信號量,檢測更新并開始處理數(shù)據(jù)包。

bc5c9e30-9354-11ed-bfe3-dac502259ad0.png

圖 5 . GPU 數(shù)據(jù)包處理管道,CPU 在 GPU 內(nèi)存中接收數(shù)據(jù)包,并使用 NVIDIA DOCA GPUNetIO 信號量通知數(shù)據(jù)包處理 CUDA 內(nèi)核有關(guān)傳入數(shù)據(jù)包

這里,DOCA GPUNetIO 信號量具有類似于 DPDK gpudev communication list 的功能,使得 CPU 接收數(shù)據(jù)包和 GPU 在處理這些數(shù)據(jù)包之前等待接收這些數(shù)據(jù)包之間能夠?qū)崿F(xiàn)低延遲通信機(jī)制。信號量還可用于 GPU 在包處理完成時通知 CPU ,或在兩個 GPU CUDA 內(nèi)核之間共享關(guān)于已處理包的信息。

該方法可作為性能評估的基準(zhǔn)。由于它以 CPU 為中心,因此嚴(yán)重依賴 CPU 型號、功率和內(nèi)核數(shù)量。

GPU 接收和 GPU 處理

上一節(jié)中描述的以 CPU 為中心的管線可以通過以 GPU 為中心的方法進(jìn)行改進(jìn),該方法使用 GPU 發(fā)起的通信,使用 CUDA 內(nèi)核管理接收隊列。以下部分提供了兩個示例:多 CUDA 內(nèi)核和單 CUDA 內(nèi)核。

多 CUDA 內(nèi)核

使用這種方法,至少涉及兩個 CUDA 內(nèi)核,一個專用于接收數(shù)據(jù)包,另一個專用用于數(shù)據(jù)包處理。接收器 CUDA 內(nèi)核可以通過信號量向第二 CUDA 內(nèi)核提供數(shù)據(jù)包信息。

bc8ba144-9354-11ed-bfe3-dac502259ad0.png

圖 6 . GPU 數(shù)據(jù)包處理管線,CPU 在 GPU 內(nèi)存中接收數(shù)據(jù)包,并使用 DOCA GPUNetIO 信號量通知數(shù)據(jù)包處理 CUDA 內(nèi)核有關(guān)傳入數(shù)據(jù)包

這種方法適用于高速網(wǎng)絡(luò)和延遲敏感的應(yīng)用程序,因為兩個接收操作之間的延遲不會被其他任務(wù)延遲。期望將接收器 CUDA 內(nèi)核的每個 CUDA 塊關(guān)聯(lián)到不同的隊列,并行地接收來自所有隊列的所有數(shù)據(jù)包。

單 – CUDA 內(nèi)核

通過使單個 CUDA 內(nèi)核負(fù)責(zé)接收和處理數(shù)據(jù)包,仍然為每個隊列專用一個 CUDA 塊,可以簡化先前的實現(xiàn)。

bcaf2c68-9354-11ed-bfe3-dac502259ad0.png

圖 7 . GPU 數(shù)據(jù)包處理管線,單個 GPU CUDA 內(nèi)核接收 GPU 內(nèi)存中的數(shù)據(jù)包并進(jìn)行數(shù)據(jù)包處理

這種方法的一個缺點是每個 CUDA 塊兩個接收操作之間的延遲。如果數(shù)據(jù)包處理需要很長時間,應(yīng)用程序可能無法跟上在高速網(wǎng)絡(luò)中接收新數(shù)據(jù)包的速度。

GPU 接收、 GPU 處理和 GPU 發(fā)送

到目前為止,大多數(shù)關(guān)注點都集中在管線的“接收和處理”部分。然而,DOCA GPUNetIO 還可以在 GPU 上生成一些數(shù)據(jù),制作數(shù)據(jù)包并從 CUDA 內(nèi)核發(fā)送,而無需 CPU 干預(yù)。圖 8 描述了一個完整的接收、處理和發(fā)送管線的示例。

bce86f0a-9354-11ed-bfe3-dac502259ad0.png

圖 8 . 具有 GPU CUDA 內(nèi)核的 GPU 數(shù)據(jù)包處理管線在 GPU 內(nèi)存中接收數(shù)據(jù)包,進(jìn)行數(shù)據(jù)包處理,最后制作新數(shù)據(jù)包

NVIDIA DOCA GPUNetIO 示例應(yīng)用程序

與任何其他 NVIDIA DOCA 庫一樣,DOCA GPUNetIO 有一個專用應(yīng)用程序,用于 API 使用參考和測試系統(tǒng)配置和性能。該應(yīng)用程序?qū)崿F(xiàn)了前面描述的管線,提供了不同類型的數(shù)據(jù)包處理,如 IP 校驗和、HTTP 數(shù)據(jù)包過濾和流量轉(zhuǎn)發(fā)。

以下部分概述了應(yīng)用程序的不同操作模式。報告了一些性能數(shù)據(jù),將其視為可能在未來版本中更改和改進(jìn)的初步結(jié)果。使用兩個基準(zhǔn)系統(tǒng),一個用于接收數(shù)據(jù)包,另一個用于發(fā)送數(shù)據(jù)包,背靠背連接(圖 9)。

運(yùn)行 DOCA GPUNetIO 應(yīng)用程序的接收器是帶有 NVIDIA BlueField-2X DPU 融合卡的 Dell PowerEdge R750 。該配置為嵌入式 CPU 模式,因此應(yīng)用程序使用 DPU 上的 NVIDIA ConnectX-6 Dx 網(wǎng)卡和 GPU A100X 在主機(jī)系統(tǒng) CPU 上運(yùn)行。軟件配置為 Ubuntu 20.04 、MOFED 5.8 和 CUDA 11.8 。

發(fā)送器是 Gigabyte Intel Xeon Gold 6240R ,其通過 PCIe Gen 3 與 NVIDIA ConnectX-6 Dx 連接。此計算機(jī)不需要任何 GPU ,因為它運(yùn)行 T-Rex DPDK packet generator v2.99 。軟件配置為 Ubuntu 20.04 和 MOFED 5.8 。

bd184a68-9354-11ed-bfe3-dac502259ad0.png

圖 9 . 接收器(Dell R750)和發(fā)送器(Gigabyte)系統(tǒng)背靠背連接到基準(zhǔn) NVIDIA DOCA GPUNetIO 應(yīng)用程序

該應(yīng)用程序也已在 DPU Arm 內(nèi)核上執(zhí)行,導(dǎo)致了相同的性能結(jié)果,并證明了以 GPU 為中心的解決方案與 CPU 無關(guān)。

請注意,DOCA GPUNetIO 最低要求是具有 GPU 和具有直接 PCIe 連接的 NIC 的系統(tǒng)。DPU 并不是嚴(yán)格要求。

IP 校驗和, GPU 僅接收

應(yīng)用程序使用 GPU 發(fā)起的通信來創(chuàng)建一個或多個接收隊列以接收分?jǐn)?shù)據(jù)包??梢允褂脝?CUDA 內(nèi)核或多 CUDA 內(nèi)核模式。

bd30b206-9354-11ed-bfe3-dac502259ad0.png

圖 10 . NVIDIA DOCA GPUNetIO 應(yīng)用程序中的第一個管線模式:GPU 接收、計算 IP 校驗和并向 CPU 報告

每個數(shù)據(jù)包都通過簡單的 IP 校驗和驗證進(jìn)行處理,只有通過此測試的數(shù)據(jù)包才算作“好數(shù)據(jù)包”。通過信號量,好數(shù)據(jù)包的數(shù)量被報告給 CPU ,CPU 可以在控制臺上打印報告。

通過使用 T-Rex 數(shù)據(jù)包生成器以約 100 Gbps(約 11.97 Mpps)的速度發(fā)送 30 億個 1 KB 大小的數(shù)據(jù)包,并在 DOCA GPUNetIO 應(yīng)用程序側(cè)報告相同數(shù)量的數(shù)據(jù)包以及正確的 IP 校驗和,實現(xiàn)了單隊列零數(shù)據(jù)包丟失。相同的配置在 BlueField-2 融合卡上進(jìn)行了測試,結(jié)果相同,證明了 GPU 發(fā)起的通信是一個獨立于平臺的解決方案。

由于數(shù)據(jù)包大小為 512 字節(jié),T-Rex 數(shù)據(jù)包生成器無法發(fā)送超過 86 Gbps(約 20.9 Mpps)的數(shù)據(jù)包。即使每秒數(shù)據(jù)包的數(shù)量幾乎是兩倍,DOCA GPUNetIO 也沒有報告任何數(shù)據(jù)包丟失。

HTTP 過濾, GPU 僅接收

假設(shè)一個更復(fù)雜的場景,數(shù)據(jù)包處理 CUDA 內(nèi)核只過濾具有特定特征的 HTTP 數(shù)據(jù)包。它將“好數(shù)據(jù)包”信息復(fù)制到第二個 GPU 內(nèi)存 HTTP 數(shù)據(jù)包列表中。一旦此 HTTP 數(shù)據(jù)包列表中的下一個項目充滿了數(shù)據(jù)包,通過專用信號量,過濾 CUDA 內(nèi)核就會解除第二個 CUDA 內(nèi)核的阻止,從而對累積的 HTTP 數(shù)據(jù)包進(jìn)行一些推斷。信號量還可用于向 CPU 線程報告統(tǒng)計信息。

bd603b20-9354-11ed-bfe3-dac502259ad0.png

圖 11 . NVIDIA DOCA GPUNetIO 應(yīng)用程序中的第二種管線模式。GPU 只接收、過濾 HTTP 數(shù)據(jù)包,并通過專用信號量解除阻止 CUDA 內(nèi)核對這些數(shù)據(jù)包進(jìn)行分析

該管線配置提供了復(fù)雜流水線的示例,該復(fù)雜管線包括多個數(shù)據(jù)處理和過濾階段以及諸如 AI 管線之類的推理功能。

流量轉(zhuǎn)發(fā)

本節(jié)介紹如何通過 GPU 發(fā)起的通信使用 DOCA GPUNetIO 啟用流量轉(zhuǎn)發(fā)。在每個接收到的數(shù)據(jù)包中,在通過網(wǎng)絡(luò)發(fā)送回數(shù)據(jù)包之前,交換 MAC 和 IP 源地址和目的地址。

bd7e2d56-9354-11ed-bfe3-dac502259ad0.png

圖 12 . NVIDIA DOCA GPUNetIO 應(yīng)用程序中的第三種管線模式。GPU 接收、交換每個數(shù)據(jù)包的 MAC 和 IP 地址,并發(fā)送回修改后的數(shù)據(jù)包。

通過使用 T-Rex 數(shù)據(jù)包生成器以 ~90 Gbps 的速度發(fā)送 30 億個 1KB 大小的數(shù)據(jù)包,實現(xiàn)了只有一個接收隊列和一個發(fā)送隊列的零數(shù)據(jù)包丟失。

用于 5G 的 NVIDIA Aerial SDK

決定采用以 GPU 為中心的解決方案的動機(jī)可能是性能和低延遲要求,但也可能是為了提高系統(tǒng)容量。CPU 在處理連接到接收器應(yīng)用程序的越來越多的對等端時可能成為瓶頸。GPU 提供的高度并行化可以提供可擴(kuò)展的實現(xiàn),以并行處理大量對等端,而不會影響性能。

NVIDIA Aerial 是一個用于構(gòu)建高性能、軟件定義的 5G L1 堆棧的 SDK,該堆棧通過 GPU 上的并行處理進(jìn)行了優(yōu)化。具體而言,NVIDIA Aero SDK 可用于構(gòu)建基帶單元(BBU)軟件,該軟件負(fù)責(zé)通過無線電單元(RU)發(fā)送(下行鏈路)或接收(上行鏈路)無線客戶端數(shù)據(jù)幀,該數(shù)據(jù)幀被拆分為多個以太網(wǎng)數(shù)據(jù)包。

在上行鏈路中,BBU 接收數(shù)據(jù)包,驗證數(shù)據(jù)包,并在觸發(fā)信號處理之前重建每個 RU 的原始數(shù)據(jù)幀。使用 NVIDIA Aerial SDK ,這在 GPU 中發(fā)生:CUDA 內(nèi)核專用于每個時隙的每個 RU ,以重建幀并觸發(fā) GPU 信號處理的 CUDA 內(nèi)核序列。

通過 DPDK gpudev 庫實現(xiàn)了網(wǎng)卡接收數(shù)據(jù)包以及 GPU 重新排序和處理數(shù)據(jù)包的編排(圖 13)。

bda04b5c-9354-11ed-bfe3-dac502259ad0.png

圖 13 .NVIDIA Aerial 5G L1 以 CPU 為中心的架構(gòu),帶有 DPDK gpudev 庫

第一個實現(xiàn)在現(xiàn)代 Intel x86 系統(tǒng)上僅使用一個 CPU 內(nèi)核,就能夠以 25 Gbps 的速度保持 4 個 RU 的工作速度。然而,隨著基站數(shù)量的增加,網(wǎng)卡和 GPU 之間的 CPU 功能成為瓶頸。

CPU 按順序工作。隨著單個 CPU 核心接收和管理越來越多的 RU 流量,同一 RU 的兩次接收之間的時間取決于 RU 的數(shù)量。對于 2 個 CPU 核,每個核在 RU 的子集上工作,相同 RU 的兩次接收之間的時間減半。然而,這種方法對于越來越多的客戶端是不可擴(kuò)展的。此外,PCIe 事務(wù)的數(shù)量從 NIC 增加到 CPU ,然后從 CPU 增加到 GPU (圖 14)。

bdc1386c-9354-11ed-bfe3-dac502259ad0.png

圖 14 . NVIDIA Aerial 5G 應(yīng)用程序以 CPU 為中心的控制流程,連接了多個 RU 。CPU 內(nèi)核順序地接收并通知每個連接的 RU 的 GPU 重建內(nèi)核。這不是一種可擴(kuò)展的方法。

為了克服所有這些問題,NVIDIA Aerial SDK 的以 GPU 為中心的新版本已通過 DOCA GPUNetIO 庫實現(xiàn)。每個 CUDA 內(nèi)核負(fù)責(zé)在每個時隙重建來自特定 RU 的數(shù)據(jù)包,并通過接收能力進(jìn)行了改進(jìn)(圖 15)。

bda04b5c-9354-11ed-bfe3-dac502259ad0.png

圖 15 . 以 GPU 為中心的 NVIDIA Aerial SDK 5G 架構(gòu),采用 NVIDIA DOCA GPUNetIO

此時,關(guān)鍵路徑中不需要 CPU ,因為每個 CUDA 內(nèi)核都是完全獨立的,能夠并行和實時處理越來越多的 RU 。這增加了系統(tǒng)容量,并減少了每個時隙處理數(shù)據(jù)包的延遲和 PCIe 事務(wù)的數(shù)量。CPU 不必與 GPU 通信以提供數(shù)據(jù)包信息。

be65b2d4-9354-11ed-bfe3-dac502259ad0.png

圖 16 . NVIDIA Aerial 5G SDK 以 GPU 為中心的控制流程,連接了多個 RU 。這是一種可擴(kuò)展的方法,它保證了對所有連接的平等和公平服務(wù)。

根據(jù)標(biāo)準(zhǔn),5G 網(wǎng)絡(luò)必須根據(jù)特定模式交換數(shù)據(jù)包。每個時隙(例如 500 微秒),數(shù)據(jù)包應(yīng)該以 14 個所謂的符號發(fā)送。每個符號由若干個數(shù)據(jù)包組成(取決于使用情況),這些數(shù)據(jù)包將在較小的時間窗口(例如,36 微秒)內(nèi)發(fā)送。為了在下行鏈路側(cè)支持這種定時傳輸模式,NVIDIA Aerial SDK 通過 DOCA GPUNetIO API 將 GPU 發(fā)起的通信與精確發(fā)送調(diào)度相結(jié)合。

一旦 GPU 信號處理準(zhǔn)備好要在未來時隙中發(fā)送的數(shù)據(jù),每個 RU 的專用 CUDA 內(nèi)核將該數(shù)據(jù)分割成每個 RU 的以太網(wǎng)數(shù)據(jù)包,并在未來的特定時間調(diào)度它們的未來傳輸。然后,同一 CUDA 內(nèi)核將數(shù)據(jù)包推送到 NIC ,NIC 將負(fù)責(zé)在正確的時間發(fā)送每個數(shù)據(jù)包(圖 17)。

be8675aa-9354-11ed-bfe3-dac502259ad0.png

圖 17 . NVIDIA Aerial 5G SDK 定時傳輸模式使用 GPU 發(fā)起的通信和精確發(fā)送調(diào)度功能,通過 NVIDIA DOCA GPUNetIO 實現(xiàn)

盡早訪問 NVIDIA DOCA GPUNetIO

作為研究項目的一部分,DOCA GPUNetIO 包處于實驗狀態(tài)。它可以早期訪問,是最新 DOCA 版本的擴(kuò)展。它可以安裝在主機(jī)系統(tǒng)或 DPU 融合卡上,包括:

  • 應(yīng)用程序初始設(shè)置階段的一組 CPU 函數(shù),用于準(zhǔn)備環(huán)境并創(chuàng)建隊列和其他對象

  • 您可以在 CUDA 內(nèi)核中調(diào)用一組特定于 GPU 的函數(shù),以發(fā)送或接收數(shù)據(jù)包,并與 DOCA GPUNetIO 信號量交互

  • 您可以構(gòu)建和運(yùn)行應(yīng)用程序源代碼來測試功能,并了解如何使用 DOCA GPUNetIO API

硬件要求是 ConnectX-6 Dx 或更新的網(wǎng)卡和 GPU Volta 或更新的。強(qiáng)烈建議在兩者之間使用專用 PCIe 網(wǎng)橋。軟件要求為 Ubuntu 20.04 或更新版本、CUDA 11.7 或更新版本以及 MOFED 5.8 或更新版本。

如果您有興趣了解更多信息并獲得 NVIDIA DOCA GPUNetIO 的實踐經(jīng)驗,以幫助您開發(fā)下一個關(guān)鍵應(yīng)用程序,請聯(lián)系 NVIDIA 技術(shù)支持獲取早期訪問權(quán)限。請注意,DOCA GPUNetIO 庫目前僅在 NVIDIA 的 NDA 下可用。

想要與更多開發(fā)者交流學(xué)習(xí),請掃描下方二維碼加入我們的論壇。

bebec04a-9354-11ed-bfe3-dac502259ad0.png

查看以下精彩內(nèi)容,了解更多關(guān)于 NVIDIA BlueField DPU 和 DOCA 的信息

NVIDIA BlueField DPU 和 DOCA 連獲三獎,大放光彩

NVIDIA DOCA 推出基于主機(jī)的網(wǎng)絡(luò)(HBN)1.2.0 版本

NVIDIA DOCA 1.5 長期支持版本發(fā)布

免費學(xué) DOCA 軟件開發(fā)入門課程 釋放 DPU 潛力

更多精彩仍在繼續(xù)...敬請關(guān)注


原文標(biāo)題:使用 NVIDIA DOCA GPUNetIO 進(jìn)行內(nèi)聯(lián) GPU 數(shù)據(jù)包處理

文章出處:【微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 英偉達(dá)
    +關(guān)注

    關(guān)注

    22

    文章

    3637

    瀏覽量

    89835

原文標(biāo)題:使用 NVIDIA DOCA GPUNetIO 進(jìn)行內(nèi)聯(lián) GPU 數(shù)據(jù)包處理

文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    IB Verbs和NVIDIA DOCA GPUNetIO性能測試

    NVIDIA DOCA GPUNetIONVIDIA DOCA SDK 中的一個庫,專門為實時在線
    的頭像 發(fā)表于 08-23 17:03 ?262次閱讀
    IB Verbs和<b class='flag-5'>NVIDIA</b> <b class='flag-5'>DOCA</b> <b class='flag-5'>GPUNetIO</b>性能測試

    在AN65974中短數(shù)據(jù)包和零長數(shù)據(jù)包是什么意思?

    在 AN65974 中,短數(shù)據(jù)包和零長數(shù)據(jù)包是什么意思? 非常感謝!
    發(fā)表于 05-30 07:41

    借助NVIDIA DOCA 2.7增強(qiáng)AI 云數(shù)據(jù)中心和NVIDIA Spectrum-X

    NVIDIA DOCA 加速框架為開發(fā)者提供了豐富的庫、驅(qū)動和 API,以便為 NVIDIA BlueField DPU 和 SuperNIC 創(chuàng)建高性能的應(yīng)用程序和服務(wù)。
    的頭像 發(fā)表于 05-29 09:22 ?329次閱讀

    如何在AIROC GUI上獲取良好數(shù)據(jù)包和總數(shù)據(jù)包?

    使用 IQxel-MW LifePoint 作為發(fā)生器并發(fā)送波形BT_1DH5_00001111_Fs80M.iqvsg,但無法在 AIROC 工具中接收數(shù)據(jù)包。 以下是從 IQxel 發(fā)送
    發(fā)表于 05-22 06:39

    請問高端網(wǎng)絡(luò)芯片如何處理數(shù)據(jù)包呢?

    隨著網(wǎng)絡(luò)芯片帶寬的持續(xù)提升,其內(nèi)部數(shù)據(jù)包處理單元的工作負(fù)載也隨之增加。然而,如果處理單元無法與網(wǎng)絡(luò)接口的傳入速率相匹配,將無法及時處理數(shù)據(jù)包
    的頭像 發(fā)表于 04-02 16:36 ?451次閱讀
    請問高端網(wǎng)絡(luò)芯片如何<b class='flag-5'>處理</b><b class='flag-5'>數(shù)據(jù)包</b>呢?

    DPDK在AI驅(qū)動的高效數(shù)據(jù)包處理應(yīng)用

    傳統(tǒng)的數(shù)據(jù)包處理方式是數(shù)據(jù)包先到內(nèi)核最后再到用戶層進(jìn)行處理。這種方式會增加額外的延遲和CPU開銷,嚴(yán)重影響
    的頭像 發(fā)表于 02-25 11:28 ?713次閱讀
    DPDK在AI驅(qū)動的高效<b class='flag-5'>數(shù)據(jù)包</b><b class='flag-5'>處理</b>應(yīng)用

    基于NVIDIA DOCA 2.6實現(xiàn)高性能和安全的AI云設(shè)計

    作為專為 NVIDIA? BlueField? 網(wǎng)絡(luò)平臺而設(shè)計的數(shù)據(jù)中心基礎(chǔ)設(shè)施軟件框架,NVIDIA? DOCA? 使廣大開發(fā)者能夠利用其行業(yè)標(biāo)準(zhǔn) API 在
    的頭像 發(fā)表于 02-23 10:02 ?365次閱讀

    使用P4和Vivado工具簡化數(shù)據(jù)包處理設(shè)計

    電子發(fā)燒友網(wǎng)站提供《使用P4和Vivado工具簡化數(shù)據(jù)包處理設(shè)計.pdf》資料免費下載
    發(fā)表于 01-26 17:49 ?0次下載
    使用P4和Vivado工具簡化<b class='flag-5'>數(shù)據(jù)包</b><b class='flag-5'>處理</b>設(shè)計

    NVIDIA DOCA 2.5 長期支持版本發(fā)布

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

    NVIDIA GPU的核心架構(gòu)及架構(gòu)演進(jìn)

    在探討 NVIDIA GPU 架構(gòu)之前,我們先來了解一些相關(guān)的基本知識。GPU 的概念,是由 NVIDIA 公司在 1999 年發(fā)布 Geforce256 圖形
    發(fā)表于 11-21 09:40 ?1152次閱讀
    <b class='flag-5'>NVIDIA</b> <b class='flag-5'>GPU</b>的核心架構(gòu)及架構(gòu)演進(jìn)

    blue-ethernet高性能FPGA網(wǎng)絡(luò)數(shù)據(jù)包處理項目簡介

    blue-ethernet項目使用Bluespec SystemVerilog(BSV)硬件描述語言實現(xiàn)了一系列在FPGA上加速網(wǎng)絡(luò)數(shù)據(jù)包處理的硬件模塊。
    的頭像 發(fā)表于 11-13 10:44 ?1066次閱讀
    blue-ethernet高性能FPGA網(wǎng)絡(luò)<b class='flag-5'>數(shù)據(jù)包</b><b class='flag-5'>處理</b>項目簡介

    【書籍評測活動NO.23】數(shù)據(jù)處理器:DPU編程入門

    資格! “DPU將是未來計算的三大支柱之一。CPU用于通用計算,GPU用于加速計算,而DPU在數(shù)據(jù)中心移動數(shù)據(jù),進(jìn)行數(shù)據(jù)處理?!? ——NVIDI
    發(fā)表于 10-24 15:21

    NVIDIA 發(fā)布首部 DPU 和 DOCA 編程入門書籍(互動有禮)

    為使用 NVIDIA BlueField 系列 DPU 和 NVIDIA DOCA 開發(fā)環(huán)境的開發(fā)者提供實用指南 NVIDIA 今日宣布,由 NVI
    的頭像 發(fā)表于 10-18 16:05 ?354次閱讀
    <b class='flag-5'>NVIDIA</b> 發(fā)布首部 DPU 和 <b class='flag-5'>DOCA</b> 編程入門書籍(互動有禮)

    NVIDIA 發(fā)布首部 DPU 和 DOCA 編程入門書籍

    NVIDIA 撰寫的《數(shù)據(jù)處理器:? DPU 編程入門》一書正式上市發(fā)行,成為 NVIDIA 的全球首部 DPU 處理器編程入門書籍。該書由機(jī)械工業(yè)出版社出版,將為使用
    發(fā)表于 10-18 11:34 ?298次閱讀
    <b class='flag-5'>NVIDIA</b> 發(fā)布首部 DPU 和 <b class='flag-5'>DOCA</b> 編程入門書籍

    數(shù)據(jù)包的生命周期

    電子發(fā)燒友網(wǎng)站提供《數(shù)據(jù)包的生命周期.pdf》資料免費下載
    發(fā)表于 10-13 14:44 ?0次下載