繞過CPU:英偉達與IBM致力推動GPU直連SSD以大幅提升性能
通過與幾所大學的合作,英偉達和IBM 打造了一套新架構,致力於為GPU 加速應用程序,提供對大量數據存儲的快速“細粒度訪問”。所謂的“大加速器內存”(Big Accelerator Memory)旨在擴展GPU 顯存容量、有效提升存儲訪問帶寬,同時為GPU 線程提供高級抽象層,以便輕鬆按需、細粒度地訪問擴展內存層次中的海量數據結構。
以CPU 為中心的傳統模型示例
顯然,這項技術將使人工智能、分析和機器學習訓練等領域更加受益。而作為BaM 團隊中的重量級選手,英偉達將為創新項目傾注自身的廣泛資源。
比如允許NVIDIA GPU 直接獲取數據,而無需依賴於CPU 來執行虛擬地址轉換、基於頁面的按需數據加載、以及其它針對內存和外存的大量數據管理工作。
對於普通用戶來說,我們只需看到BaM 的兩大優勢。其一是基於軟件管理的GPU 緩存,數據存儲和顯卡之間的信息傳輸分配工作,都將交給GPU 核心上的線程來管理。
通過使用RDMA、PCI Express 接口、以及自定義的Linux 內核驅動程序,BaM 可允許GPU 直接打通SSD數據讀寫。
BaM 模型示例
其次,通過打通NVMe SSD 的數據通信請求,BaM 只會在特定數據不在軟件管理的緩存區域時,才讓GPU 線程做好參考執行驅動程序命令的準備。
基於此,在圖形處理器上運行繁重工作負載的算法,將能夠通過針對特定數據的訪問例程優化,從而實現針對重要信息的高效訪問。
顯然,以CPU 為中心的策略,會導致過多的CPU-GPU 同步開銷(以及I/O 流量放大),從而拖累了具有細粒度的數據相關訪問模式—— 比如圖形與數據分析、推薦系統和圖形神經網絡等新興應用程序的存儲網絡帶寬效率。
為此,研究人員在BaM 模型的GPU 內存中,提供了一個基於高並發NVMe 的提交/ 完成隊列的用戶級庫,使得未從軟件緩存中丟失的GPU 線程,能夠以高吞吐量的方式來高效訪問存儲。
BaM 設計的邏輯視圖
更棒的是,該方案在每次存儲訪問時的軟件開銷都極低,並且支持高度並發的線程。而在基於BaM 設計+ 標準GPU + NVMe SSD 的Linux 原型測試平台上開展的相關實驗,也交出了相當喜人的成績。
作为当前基于 CPU 统管一切事务的传统解决方案的一个可行替代,研究表明存储访问可同时工作、消除了同步限制,并且 I/O 带宽效率的显著提升,也让应用程序的性能不可同日而语。
此外NVIDIA 首席科學家、曾帶領斯坦福大學計算機科學系的Bill Dally 指出:得益於軟件緩存,BaM 不依賴於虛擬內存地址轉換,因而天生就免疫於TLB 未命中等序列化事件。
最後,三方將開源BaM 設計的新細節,以期更多企業能夠投入到軟硬件的優化、並自行創建類似的設計。有趣的是,將閃存放在GPU 一旁的AMD Radeon 固態顯卡,也運用了類似的功能設計理念。