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