圖1——多主機拓撲

以圖1所示的系統為例。要符合PCIe的層級,主機1必須在交換網1中有一個專用的下行端口,該端口連接到交換網2中的專用上行端口。它還需要在交換網2中有一個專用的下行端口,該端口連接到交換網3中的專用上行端口,依此類推。主機2和主機3也有類似的要求,如圖2所示。

  圖2——每個主機的層級要求

即使是基于PCIe樹形結構的最基本系統,也需要各交換網之間有三個鏈路專用于每個主機的PCIe拓撲。而且,由于主機之間無法共享這些鏈路,因此系統會很快變得極為低效。

此外,符合PCIe的典型層級只有一個根端口,而且盡管“多根I/O虛擬化和共享”規范中支持多個根,但它會使設計更復雜,并且當前不受主流CPU支持。結果會造成未使用的PCIe設備(即端點)滯留在其分配到的主機中。不難想象,這在采用多個GPU、存儲設備及其控制器以及交換網的大型系統中會變得多么低效。

例如,如果第一個主機(主機1)已經消耗了所有計算資源,而主機2和3未充分利用資源,則顯然希望主機1訪問這些資源。但主機1無法這樣做,因為這些資源在它的層級域之外,因此會發生滯留。非透明橋接(NTB)是這種問題的一個潛在解決方案,但由于每種類型的共享PCIe設備都需要非標準驅動程序和軟件,因此這同樣會使系統變得復雜。更好的方法是使用PCIe結構,這種結構允許標準PCIe拓撲容納多個可訪問每個端點的主機。

實施方法

系統使用一個PCIe結構交換網(本例中為Microchip Switchtec? PAX系列的成員)在兩個獨立但可透明互操作的域中實現:即包含所有端點和結構鏈路的結構域以及每個主機專用的主機域(圖3)。主機通過在嵌入式CPU上運行的PAX交換網固件保留在單獨的虛擬域中,因此,交換網將始終顯示為具有直連端點的標準單層PCIe設備,而與這些端點出現在結構中的位置無關。

  圖3——每個結構的獨立域

來自主機域的事務會在結構域中轉換為ID和地址,反之,結構域中通信的非分層路由也是如此。這樣,系統中的所有主機便可共享連接交換網和端點的結構鏈路。交換網固件會攔截來自主機的所有配置平面通信(包括PCIe枚舉過程),并使用數量可配置的下行端口虛擬化一個符合PCIe規范的簡單交換網。

當所有控制平面通信都路由到交換網固件進行處理時,數據平面通信直接路由到端點。其他主機域中未使用的GPU不再滯留,因為它們可以根據每個主機的需求動態分配。結構內支持點對點通信,這使其能夠適應機器學習應用。當以符合PCIe規范的方式向每個主機提供功能時,可以使用標準驅動程序。

操作方法

為了解這種方法的工作原理,我們以圖4中的系統為例,該系統由兩個主機(主機1采用Windows?系統,主機2采用Linux?系統)、四個PAX PCIe結構交換網、四個Nvidia M40 GPGPU和一個支持SR-IOV的Samsung NVMe SSD組成。在本實驗中,主機運行代表實際機器學習工作負載的通信,包括Nvidia的CUDA點對點通信基準測試實用程序和訓練cifar10圖像分類的TensorFlow模型。嵌入式交換網固件處理交換網的低級配置和管理,系統由Microchip的ChipLink調試和診斷實用程序管理。

  圖4:雙主機PCIe結構引擎

四個GPU最初分配給主機1,PAX結構管理器顯示在結構中發現的所有設備,其中GPU綁定到Windows主機。但是,主機上的結構不再復雜,所有GPU就像直接連接到虛擬交換網一樣。隨后,結構管理器將綁定所有設備,Windows設備管理器將顯示GPU。主機將交換網視為下行端口數量可配置的簡單物理PCIe交換網。

一旦CUDA發現了四個GPU,點對點帶寬測試就會顯示單向傳輸速率為12.8 GBps,雙向傳輸速率為24.9 GBps。這些傳輸直接跨過PCIe結構,而無需通過主機。如果運行用于訓練Cifar10圖像分類算法的TensorFlow模型并使工作負載分布在全部四個GPU上,則可以將兩個GPU釋放回結構池中,將它們與主機解除綁定。這樣可以釋放其余兩個GPU來執行其他工作負載。與Windows主機一樣,Linux主機也將交換網視為簡單的PCIe交換網,無需自定義驅動程序,而CUDA也可以發現GPU,并在Linux主機上運行P2P傳輸。性能類似于使用Windows主機實現的性能,如表1所示。

表1:GPU點對點傳輸帶寬

下一步是將SR-IOV虛擬功能連接到Windows主機,PAX將此類功能以標準物理NVM設備的形式提供,以便主機可以使用標準NVMe驅動程序。此后,虛擬功能將與Linux主機結合,并且新的NVMe設備將出現在模塊設備列表中。本實驗的結果是,兩個主機現在都可以獨立使用其虛擬功能。

務必注意的是,虛擬PCIe交換網和所有動態分配操作都以完全符合PCIe規范的方式呈現給主機,以便主機能夠使用標準驅動程序。嵌入式交換網固件提供了一個簡單的管理接口,這樣便可通過成本低廉的外部處理器來配置和管理PCIe結構。設備點對點事務默認情況下處于使能狀態,不需要外部結構管理器進行額外配置或管理。

總結

PCIe交換網結構是一種能夠充分利用CPU巨大性能的絕佳方法,但PCIe標準本身存在一些障礙。不過,可以通過使用動態分區和多主機單根I/O虛擬化共享技術來解決這些難題,以便可以將GPU和NVMe資源實時動態分配給多主機系統中的任何主機,從而滿足機器學習工作負載不斷變化的需求。

未經允許不得轉載:存儲在線-存儲專業媒體 » 使用PCIe交換網結構在多主機系統中優化資源部署
分享到

zhangnn

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走