淺析GPU通訊技術(上)-GPUDirect P2P
目錄
1. 背景
GPU在高效能運算和深度學習加速中扮演著非常重要的角色, GPU的強大的平行計算能力,大大提升了運算效能。隨著運算資料量的不斷攀升,GPU間需要大量的交換資料,GPU通訊效能成為了非常重要的指標。NVIDIA推出的GPUDirect就是一組提升GPU通訊效能的技術。但GPUDirect受限於PCI Expresss匯流排協議以及拓撲結構的一些限制,無法做到更高的頻寬,為了解決這個問題,NVIDIA提出了NVLink匯流排協議。
這個系列文章會對以上GPU通訊技術做詳細的介紹,旨在幫助開發者更好的利用這些技術對自己的應用做相應的優化。
本篇文章會先介紹一下GPUDirect技術,並著重介紹GPUDirect Peer-to-Peer(P2P)技術。
2. GPUDirect介紹
2.1 簡介
GPUDirect技術有如下幾個關鍵特性:
- 加速與網路和儲存裝置的通訊:
- GPU之間的Peer-to-Peer Transers
- GPU之間的Peer-to-Peer memory access
- RDMA支援
- 針對Video的優化
下面對最主要的幾個技術做分別介紹。
2.2 Shared Memory
2010年6月最先引入的是GPUDirect Shared Memory 技術,支援GPU與第三方PCI Express裝置通過共享的pin住的host memory實現共享記憶體訪問從而加速通訊。
2.3 P2P
2011年,GPUDirect增加了相同PCI Express root complex 下的GPU之間的Peer to Peer(P2P) Direct Access和Direct Transers的支援。
2.4 RDMA
2013年,GPUDirect增加了RDMA支援,使得第三方PCI Express裝置可以bypass CPU host memory直接訪問GPU。
3. GPUDirect P2P
3.1 P2P簡介
GPUDirect Peer-to-Peer(P2P) 技術主要用於單機GPU間的高速通訊,它使得GPU可以通過PCI Express直接訪問目標GPU的視訊記憶體,避免了通過拷貝到CPU host memory作為中轉,大大降低了資料交換的延遲。
以深度學習應用為例,主流的開源深度學習框架如TensorFlow、MXNet都提供了對GPUDirect P2P的支援,NVIDIA開發的NCCL(NVIDIA Collective Communications Library)也提供了針對GPUDirect P2P的特別優化。
通過使用GPUDirect P2P技術可以大大提升深度學習應用單機多卡的擴充套件性,使得深度學習框架可以獲得接近線性的訓練效能加速比。
3.2 P2P虛擬化
隨著雲端計算的普及,越來越多技術遷移到雲上,在雲上使用GPUDirect技術,就要解決GPUDirect虛擬化的問題。
這裡我們著重討論下GPUDirect Peer-to-Peer虛擬化的問題
使用PCI Pass-through虛擬化技術可以將GPU裝置的控制權完全授權給VM,使得虛擬機器裡的GPU driver可以直接控制GPU而不需要Hypervisor參與,效能可以接近物理機。
但是同一個虛擬機器內的應用卻無法使用P2P技術與其它GPU實現通訊。下面分析一下無法使用P2P的原因。
首先我們需要知道一個技術限制,就是不在同一個Intel IOH(IO Hub)晶片組下面PCI-e P2P通訊是不支援的,因為Intel CPU之間是QPI協議通訊,PCI-e P2P通訊是無法跨QPI協議的。所以GPU driver必須要知道GPU的PCI拓資訊,同一個IOH晶片組下面的GPU才能使能GPUDiret P2P。
但是在虛擬化環境下,Hypervisor虛擬的PCI Express拓撲結構是扁平的,GPU driver無法判斷真實的硬體拓撲所以無法開啟GPUDirect P2P。
為了讓GPU driver獲取到真實的GPU拓撲結構,需要在Hypervisor模擬的GPU PCI配置空間裡增加一個PCI Capability,用於標記GPU的P2P親和性。這樣GPU driver就可以根據這個資訊來使能P2P。
另外值得一提的是,在PCI Pass-through時,所有的PCI Express通訊都會被路由到IOMMU,P2P通訊同樣也需要路由到IOMMU,所以Pass-through下的P2P路徑還是會比物理機P2P長一點,延遲大一點。
4. 實測
下面是我們在阿里雲GN5例項(8卡Tesla P100)上對GPUDirect P2P延遲做的實測資料。
GPU P2P矩陣如下:
通訊延遲對比如下:
我們看到:使能GPUDirect P2P後GPU間通訊延遲相比CPU拷貝降低近一半。
下圖是在GN5例項上使用MXNet對經典卷積神經網路的影像分類任務的訓練效能的加速比:
MXNet在支援P2P的GN5例項上有非常好的單機擴充套件性,訓練效能接近線性加速。
相關文章
- 淺析GPU通訊技術(上)-GPUDirectP2PGPU
- GraphQL 技術淺析
- 淺析蜜罐技術
- 爬蟲技術淺析爬蟲
- 淺析寬頻接入技術
- 淺析Java Web框架技術JavaWeb框架
- RPO攻擊技術淺析
- Android技術分享| Context淺析AndroidContext
- TSDB - VictoriaMetrics 技術原理淺析
- 淺析vue中的元件通訊Vue元件
- Linux零複製技術淺析Linux
- 淺談GPU虛擬化技術(四)- GPU分片虛擬化GPU
- 淺談GPU虛擬化技術(四)-GPU分片虛擬化GPU
- 三維模型調色技術淺析模型
- 技術分享 | MySQL : SSL 連線淺析MySql
- [專業術語]淺析當代 LBS 技術
- 淺談GPU虛擬化技術:GPU圖形渲染虛擬化GPU
- 淺析三維模型輕量化技術方法模型
- 深度學習技術發展趨勢淺析深度學習
- P2P技術(一):NAT
- 淺析人臉識別技術應用場景
- 搞懂分散式技術17:淺析分散式事務分散式
- 訊號處理技術:現代通訊技術的基石
- 研發日誌技術篇(上)——如何死磕GPUGPU
- P2P技術(2)——NAT穿透穿透
- LLM大模型向量資料庫技術架構淺析大模型資料庫架構
- Java程式設計技術之淺析JVM記憶體Java程式設計JVM記憶體
- 虛擬化技術淺析第二彈之初識Kubernetes
- 淺析專網通訊領域的前端架構設計前端架構
- 併發技術3:管道通訊
- 網路通訊技術基礎
- Android GPU呈現模式原理及卡頓掉幀淺析AndroidGPU模式
- 淺析檔案上傳漏洞
- 技術淺析:前端沙箱資料安全保護的機制前端
- 淺析基於雲的DNS管理與負載均衡技術DNS負載
- Android應用方法隱藏及反除錯技術淺析Android除錯
- 實時音視訊入門學習:開源工程WebRTC的技術原理和使用淺析Web
- 通訊系統之TDM技術和FDM技術簡介