隨著人工智慧和圖形處理需求的不斷增長,多 GPU 平行計算已成為一種趨勢。對於多 GPU 系統而言,一個關鍵的挑戰是如何實現 GPU 之間的高速資料傳輸和協同工作。然而,傳統的 PCIe 匯流排由於頻寬限制和延遲問題,已無法滿足 GPU 之間通訊的需求。為了解決這個問題,NVIDIA 於 2018 年推出了 NVLINK,以提高 GPU 之間的通訊效率。
NVLINK 是一種專門設計用於連線 NVIDIA GPU 的高速互聯技術。它允許 GPU 之間以對等方式進行通訊,繞過傳統的PCIe匯流排,實現了更高的頻寬和更低的延遲。NVLINK 可用於連線兩個或多個 GPU,以實現高速的資料傳輸和共用,為多 GPU 系統提供更高的效能和效率。
NVLINK 採用序列協定,使用 P2P 連線進行資料傳輸。它支援雙向資料傳輸,每個方向都有高達 32GB/s 的頻寬。這意味著兩個 GPU 之間可以實現總共高達 64GB/s 的頻寬。
此外,NVLINK 支援多通道通訊,允許同時進行多個資料傳輸對談。它還支援 CUDA 核心直接存取視訊記憶體,使得 GPU 可以更高效地處理資料。
NVLINK 的架構包括 NVLINK 橋接器和NVLINK交換機。
NVLINK 橋接器是用於 GPU 與其他裝置(如CPU、記憶體或其他 GPU)之間通訊的元件。它提供了一組 NVLINK 介面,可以將 GPU 連線到其他裝置上。而 NVLINK 交換機是用於 GPU 之間通訊的元件。它提供了一組 NVLINK 連線埠,可以將多個 GPU 相互連線起來。NVLINK 交換機可以位於 GPU 晶片內部或外部,從而形成 NVLINK 通訊網路。
1. 定址和初始化
在使用NVLINK 進行通訊之前,需要對目標 GPU 進行定址和初始化。這通常通過設定 GPU 裝置的地址和埠號來完成。
2. 資料傳輸
一旦定址和初始化完成,就可以開始進行資料傳輸。NVLINK 支援兩種資料傳輸模式:DMA 和 P2P。
DMA 模式:在 DMA 模式下,CPU 可以通過 NVLink 橋接器直接將資料傳輸到目標 GPU 的視訊記憶體中。這個過程不需要目標 GPU 的參與,因此可以有效地提高資料傳輸效率。
P2P 模式:在 P2P 模式下,兩個 GPU 之間可以直接進行資料傳輸。這種模式通常用於在 GPU 之間共用資料或進行平行計算任務。
3. 資料接收和處理
目標 GPU 在接收到資料後,會對其進行處理或儲存。在這個過程中,GPU 可以使用 CUDA 核心直接存取視訊記憶體,以實現高效的資料處理。
按照匯流排介面型別,可以分為 NVLINK 介面以及 PCIe 匯流排兩種。
其中 NVLINK 介面型別的 GPU 典型代表是 NVIDIA A100,採用 SXM4 介面。NVLINK 匯流排介面型別的 GPU 伺服器可以分為兩類,一類是 NVIDIA 公司設計的 DGX 超級計算機,另一類是合作伙伴設計的 NVLINK 介面的伺服器。專門的 HGX 系統板通過 NVLINK 將 8 個 GPU 互連起來,實現了 GPU 之間的高頻寬。
接下來,我們看看 NVLINK 與 PCIe 究竟有什麼區別?
NVLINK 和 PCIe 都是用於裝置間通訊的高速介面,但它們在架構、設計和應用方面具有一些關鍵差異。
NVLINK 主要用於 NVIDIA 的 GPU 之間,以實現高效的平行計算和資料共用。NVLINK 互聯裝置的物理層包括兩個高速資料通道和一個控制通道,提供高達 64GB/s 的頻寬。
PCIe 則是一種通用的高速序列計算機擴充套件匯流排標準,廣泛用於包括 NVIDIA GPU 在內的各種裝置之間的通訊。PCIe訊號線數量和頻寬可以根據具體的應用進行設定,例如在 PCIe 5.0 x16 設定中,訊號線數量為 32 對,頻寬為504GB/s。
在通訊頻寬方面,NVLINK 具有更高的單向和雙向頻寬。NVLINK 3.0 的 x18 設定下,每個方向的資料速率可達 25 Gbit/s,總頻寬達到 7200 Gbit/s。而 PCIe 5.0 x16 的單向頻寬為504 Gbit/s。但如果考慮到雙向頻寬,PCIe 5.0 x16的理論雙向頻寬可達 126 GB/s,這要高於 NVLINK 的7200 Gbit/s。
此外,NVLINK 的特點在於其 8 對差分線組成的一根 sub-link,一對 sub-link 負責一個方向的傳輸,組成一個完整的 link。這種設計使得 NVLINK 在進行大量資料傳輸時能保持較低的延遲。而 PCIe 作為行業標準,具有很好的通用性,可以靈活地與其他裝置進行互聯,並且支援更高的通道數和更低的延遲。
總的來說,NVLINK 和 PCIe 都是高速互聯技術,具有各自的優勢和應用領域。在需要高頻寬、低延遲的平行計算和資料共用場景中,NVLINK 可能會更有優勢。而在需要靈活通用、可延伸性強的應用中,PCIe 可能會更合適。
NVLINK 的應用場景非常廣泛。以下是一些主要的應用領域:
最後我們來簡單總結下,NVLINK 是一種高速互聯技術,用於在多 GPU 之間提供高效的通訊和共同作業。它通過在 GPU 的 PCIe 插槽上新增額外的物理層來實現高速通訊,支援高達 64GB/s 的頻寬和低延遲通訊。NVLINK 的平行計算支援大幅提高了多 GPU 系統的計算能力和效能,使其在高效能運算、人工智慧、深度學習等領域具有廣泛的應用前景。看完這些,相信你對 NVLINK 已經有了一定的瞭解。