英偉達,、IBM 和大學(xué)合作者開發(fā)了一種架構(gòu),他們稱該架構(gòu)將為 GPU 加速的應(yīng)用程序(例如分析和機器學(xué)習(xí)訓(xùn)練)提供對大量數(shù)據(jù)存儲的快速細粒度訪問,。
這種技術(shù)被稱為大加速器內(nèi)存(Big accelerator Memory),又名 BaM,,這是一個有趣的嘗試,,旨在減少 Nvidia 圖形處理器和類似硬件加速器在訪問存儲時對通用芯片的依賴,這可以提高容量和性能,。
我們知道,,現(xiàn)代圖形處理單元不僅僅用于圖形;它們還用于各種重型工作負載,,例如分析,、人工智能、機器學(xué)習(xí)和高性能計算 (HPC),。為了高效地處理大型數(shù)據(jù)集,,GPU 要么需要大量昂貴的本地專用內(nèi)存(例如 HBM2、GDDR6 等),,要么需要高效地訪問固態(tài)存儲?,F(xiàn)代計算 GPU 已經(jīng)搭載 80GB–128GB 的 HBM2E 內(nèi)存,下一代計算 GPU 將擴展本地內(nèi)存容量,。但數(shù)據(jù)集大小也在迅速增加,,因此優(yōu)化 GPU 和存儲之間的互操作性很重要,。
換而言之,,我們必須改進 GPU 和 SSD 之間的互操作性有幾個關(guān)鍵原因:首先,NVMe 調(diào)用和數(shù)據(jù)傳輸給 CPU 帶來了很大的負載,,從整體性能和效率的角度來看,,這是低效的,。其次,CPU-GPU 同步開銷和/或 I/O 流量放大顯著限制了具有大量數(shù)據(jù)集的應(yīng)用程序所需的有效存儲帶寬,。
“BaM 的目標是擴展 GPU 內(nèi)存容量并提高有效的存儲訪問帶寬,,同時為 GPU 線程提供高級抽象,以便輕松按需,、細粒度地訪問擴展內(nèi)存層次結(jié)構(gòu)中的海量數(shù)據(jù)結(jié)構(gòu)”,,該團隊在其撰寫的論文中說。
BaM 是 Nvidia 將傳統(tǒng)的以 CPU 為中心的任務(wù)轉(zhuǎn)移到 GPU 內(nèi)核的一步,。BaM 不依賴于虛擬地址轉(zhuǎn)換,、基于頁面錯誤的按需加載數(shù)據(jù)以及其他以 CPU 為中心的傳統(tǒng)機制來處理大量信息,而是提供了允許 Nvidia GPU 獲取的軟件和硬件架構(gòu)直接從內(nèi)存和存儲中獲取數(shù)據(jù)并對其進行處理,,而無需 CPU 內(nèi)核對其進行編排,。
BaM 有兩個主要部分:GPU 內(nèi)存的軟件管理緩存;以及用于 GPU 線程的軟件庫,,通過直接與驅(qū)動器對話,,直接從 NVMe SSD 請求數(shù)據(jù)。在存儲和 GPU 之間移動信息的工作由 GPU 內(nèi)核上的線程處理,,使用 RDMA,、PCIe 接口和允許 SSD 在需要時直接讀取和寫入 GPU 內(nèi)存的自定義 Linux 內(nèi)核驅(qū)動程序。如果請求的數(shù)據(jù)不在軟件管理的緩存中,,驅(qū)動器的命令將由 GPU 線程排隊,。
這意味著在 GPU 上運行以執(zhí)行密集型工作負載的算法可以快速獲取所需的信息,并且——至關(guān)重要的是——以針對其數(shù)據(jù)訪問模式進行優(yōu)化的方式,。
論文中的圖表比較了傳統(tǒng)的以 CPU 為中心的存儲訪問方法 (a) 與 GPU 主導(dǎo)的 BaM 方法 (b) 以及所述 GPU 將如何物理連接到存儲設(shè)備 (c),。
研究人員使用現(xiàn)成的 GPU 和 NVMe SSD 測試了一個由 Linux 驅(qū)動的原型 BaM 系統(tǒng),以證明它是當(dāng)今讓主機處理器指揮一切的方法的可行替代方案,。我們被告知,,可以并行化存儲訪問,消除同步障礙,,更有效地使用 I/O 帶寬來提高應(yīng)用程序性能,。
“以 CPU 為中心的策略會導(dǎo)致過多的 CPU-GPU 同步開銷和/或 I/O 流量放大,從而減少具有細粒度數(shù)據(jù)相關(guān)訪問模式(如圖形和數(shù)據(jù)分析,、推薦系統(tǒng)和圖形)的新興應(yīng)用程序的有效存儲帶寬神經(jīng)網(wǎng)絡(luò),,”研究人員在論文中說。
借助軟件緩存,,BaM 不依賴于虛擬內(nèi)存地址轉(zhuǎn)換,,因此不會遭受諸如 TLB 未命中之類的序列化事件的影響,”包括 Nvidia 首席科學(xué)家,、曾領(lǐng)導(dǎo)斯坦福大學(xué)計算機科學(xué)系的 Bill Dally 在內(nèi)的作者指出,。
“BaM 在 GPU 內(nèi)存中提供了一個高并發(fā) NVMe 提交/完成隊列的用戶級庫,,使按需訪問未從軟件緩存中丟失的 GPU 線程能夠以高吞吐量方式進行存儲訪問,”他們繼續(xù)說道,?!斑@種用戶級方法對每次存儲訪問產(chǎn)生的軟件開銷很小,并且支持高度的線程級并行性,?!?/p>
該團隊計劃將他們的硬件和軟件優(yōu)化的細節(jié)開源給其他人來構(gòu)建這樣的系統(tǒng)。我們想起了 AMD 的 Radeon Solid State Graphics (SSG) 卡,,它將閃存放置在 GPU 旁邊,。