NVIDIA DOCA 的早期接入版本于今年早些時候在 GTC 上發布。 DOCA 標志著我們專注于尋找加速計算的新方法。 DPU 范式作為 SmartNICs 的發展終于出現了。我們通過加速、卸載并將數據中心基礎架構與 DPU 隔離,使開發人員和應用程序架構師能夠從通用 CPU 中榨取更多價值。
考慮 DOCA 最重要的方式之一是 DPU 啟用平臺。 DOCA 能夠將 DPU 功能快速消耗到新的和現有的數據中心軟件堆棧中。
現代數據中心不僅僅由簡單的網絡基礎設施組成。操作高效且可擴展的數據中心的關鍵是軟件。編排、資源調配、監視和遙測都是軟件組件。甚至網絡基礎設施本身也主要是軟件的功能。網絡節點上使用的網絡操作系統決定了功能集,并圍繞操作工具和監控驅動許多下游決策。
我們稱 DOCA 為一個帶有 SDK 的軟件框架,但它不僅僅是這樣。當考慮什么是 DOCA 以及如何使用它時, SDK 是一個很好的起點。一個常見的混淆源是組件運行的位置。主機上需要哪些 DOCA 組件, DPU 上需要哪些組件?與運行時環境相比,在哪些條件下需要 SDK ? DOCA 庫具體是什么?
概述
對于 DOCA 的新手來說,這篇文章揭開了 DOCA 堆棧和打包的復雜性。首先,我想重溫一些術語并完善它們在 DOCA 上下文中的含義。
SDK
這是一個軟件開發工具包。在上下文中,應用程序開發人員需要能夠使用 DOCA 編寫和編譯軟件。它包含運行時、庫和驅動程序。并不是每個人都需要與 SDK 打包或通常是 SDK 一部分的所有東西。
從嚴格意義上講, SDK 更多的是打包軟件組件,但它也被用來最簡潔(盡管不完全準確)地描述行業應該如何思考 DOCA 是什么以及如何使用它。 DOCA 主要供應用程序開發人員使用。
運行
這是運行或執行 DOCA 應用程序所需的組件集。它包含 DOCA 應用程序必須運行的鏈接庫和驅動程序。就打包而言,它不需要包含頭文件和源文件,就可以編寫和構建(編譯)應用程序。 DOCA 應用程序可以為 x86 或 ARM 編寫和構建,因此每個體系結構都有不同的運行時包。
庫
這里有兩種不同的背景。在更廣泛和更一般的上下文中,庫是應用程序使用的資源的集合。庫資源可能包括各種數據,如配置、文檔或幫助數據;消息模板;預先編寫的代碼;以及子例程、類、值或類型規范。
在 DOCA 的上下文中,庫還提供了更多功能和有用的行為實現的集合。它們提供了定義良好的接口,通過這些接口可以調用該行為。
例如, DOCA DPI 庫提供了一個用于檢查和處理網絡數據包內容的框架。
從頭開始使用 DPU 正則表達式加速器編寫 DPI 應用程序需要大量工作。您必須編寫所有預處理和后處理例程來解析數據包頭和有效負載,然后編寫一個過程來編譯 RegEx 規則,以便在加速器上進行高速查找。
圖 1 DOCA DPI 庫塊。
驅動程序
設備驅動程序為硬件設備提供接口。此位軟件是最低級別的抽象。 DOCA 為 DPU 的特定硬件功能提供了額外的抽象層。這樣,隨著 DPU 硬件的發展,對底層硬件的更改將不需要 DOCA 應用程序也進行更新,以遵循新的或不同的驅動程序接口。
DOCA 與 CUDA 的相似之處
考慮 DOCA 包裝的另一個有用方法是通過其與 CUDA 的相似性。 DOCA 運行時旨在以類似于 NVIDIA 顯示驅動程序包為 CUDA 提供的方式包含所有驅動程序和庫。
必須調用 CUDA 庫進行 GPU 處理的應用程序只需要安裝 NVIDIA 顯示驅動程序包。同樣, DOCA 應用程序只需要特定體系結構的運行時包。在這兩種情況下,您都有一套附加的包和工具,用于將 GPU 或 DPU 功能和加速集成到應用程序中。
圖 2 DOCA 與 CUDA 運行時和開發人員工具包堆棧。
DOCA 平臺要求
另一個復雜的因素可能是在哪個平臺上需要哪些 DOCA 組件。畢竟, DPU 運行自己的操作系統,但也將自己作為主機操作系統的外圍設備。
DOCA 應用程序可以在 x86 主機上運行,也可以在 DPU ARM 內核上運行。 DOCA 應用程序在 x86 主機上運行,旨在通過 DOCA 庫調用使用 DPU 加速功能。就打包而言,不同的 OSs 可能意味著所有這些組件的安裝過程都不同,但幸運的是,這并不像管理員看起來那么混亂。
對于 NVIDIA BlueField DPU ,所有運行時和 SDK 組件都與操作系統映像捆綁在一起。可以在 DPU 上編寫、構建和編譯 DOCA 應用程序,以進行快速測試。所有的 DOCA 組件都在那里,但這并不總是一個理想的開發環境。 DPU 操作系統映像內置并包含 SDK 組件,這對每個人來說都很容易,因為它是包含運行時組件的超集。
對于 x86 主機來說,有更多的單個組件需要考慮。管理員在主機上需要的包同樣主要取決于此主機是開發環境還是構建服務器,以及它的體系結構。或者主機將運行并執行調用 DOCA 庫的應用程序?
對于注定要用作開發環境的 x86 主機,還有一個額外的考慮因素。為了開發將在 x86 CPU 上運行的 DOCA 應用程序,管理員需要主機包的本機 x86 DOCA SDK 。對于從 x86 主機開發 ARM 應用程序, NVIDIA 有一個預構建的 DOCA 開發容器,用于管理所有跨平臺的復雜性。
對于僅使用 DOCA 運行或執行應用程序的 x86 主機來說,最簡單的情況就是 DOCA 主機運行時包能夠滿足這一要求。它包含了使使用 DOCA 庫編寫的應用程序能夠在目標機器上正確執行的最小組件集。圖 3 顯示了跨兩個不同 OS 域的不同組件。
圖 3 DOCA 主機和 BlueField 之間的打包 DPU 。
簡化安裝
既然我已經解釋了所有這些打包是如何在 x86 主機上工作的,那么我應該指出,您可以通過一種簡單的方法將正確的組件安裝到正確的位置。 NVIDIA SDK Manager 減少了管理這種打包復雜性所需的時間和精力。 SDK Manager 不僅可以在主機上安裝或修復 SDK 組件,還可以通過圖形界面檢測操作系統并將其安裝到 BlueField DPU 上。小菜一碟!
圖 4 SDK Manager 圖形界面,用于設置 DPU 和安裝 DOCA 組件。
關于作者
Justin Betz 是 NVIDIA 的技術營銷工程師,專注于推廣 DOCA 和 DPU 加速應用程序。在 NVIDIA 之前,他曾在 Cumulus Networks 的技術營銷團隊工作。 Justin 擁有多個網絡工程認證,包括 Cisco CCIE 和 Cumulus CCONP ,畢業于羅切斯特理工學院,獲得網絡安全和系統管理學士學位。
審核編輯:郭婷
-
NVIDIA
+關注
關注
14文章
5025瀏覽量
103268 -
應用程序
+關注
關注
37文章
3283瀏覽量
57760
發布評論請先 登錄
相關推薦
評論