泰坦神器降臨!NVIDIA GTX TITAN測試
原來的一個困難是,GPU始終要優化調度來自多個數據流的工作負載。Fermi 結構支持從單獨數據流的16路并發內核啟動,但最終數據流都復用相同的硬件工作隊列。這允許虛假的數據流內依賴,要求在單獨數據流內的其他內核可以執行之前就完成一個數據流內依靠的內核。雖然在某種程度上這可以通過使用廣度優先啟動順序緩解,但是隨著程序的復雜性的增加,這可以成為越來越難以有效地管理。
Kepler GK110 使用新 Hyper‐Q 特征改進了這一功能。Hyper‐Q 允許 32 個并發,硬件管理的連接( 對比 Fermi 的單一連接),增加了主機和 GPU 中 CUDA Work Distributor (CWD)邏輯之間的連接總數(工作隊列)。Hyper‐Q 是一種靈活的解決方案,允許來自多個 CUDA 流、多個消息傳遞接口(MPI)進程,甚至是進程內多個線程的單獨連接。以前遇到跨任務虛假串行化任務的應用程序,限制了 GPU 的利用率,而現在無需改變任何現有代碼,性能就能得到 32 倍的大幅度提升。
Hyper‐Q 允許CPU和GPU之間更多的并發連接
每個 CUDA 流在其自己硬件工作隊列管理,優化流間的依賴關系,一個流中的運算將不再阻止其他流,使得流能夠同時執行,無需特別定制的啟動順序,消除了可能的虛假依賴。Hyper‐Q 在基于 MPI 的并行計算機系統中使用會有明顯的優勢。通常在多核 CPU 系統上運行時創建傳統基于 MPI‐的算法,分配給每個 MPI 進程的工作量會相應地調整。這可能會導致單個MPI 進程沒有足夠的工作完全占據 GPU。雖然一直以來多個 MPI 進程都可以共享 GPU,但是這些進程可能會成為虛假依賴的瓶頸。Hyper‐Q 避免了這些虛假的依賴,大大提高了 MPI 進程間共享 GPU 的效率。
Hyper‐Q 與 CUDA 流一起工作:左側顯示 Fermi 模式,僅 (C,P) 和 (R,X) 可以同時運行,因為單個硬件工作隊列導致的流內依賴。Kepler Hyper‐Q 模式允許所有流使用單獨的工作隊列同時運行。
關注我們



