精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用GPUDirect存儲器如何緩解CPU I / O瓶頸

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-04-10 10:59 ? 次閱讀

保持 GPUs 忙碌

隨著 AI 和 HPC 數據集的大小不斷增加,加載給定應用程序的數據所花費的時間開始對整個應用程序的性能造成壓力。在考慮端到端應用程序性能時,快速 GPUs 越來越缺乏慢 I / O 。

I / O ,將數據從存儲器加載到 GPUs 進行處理的過程,歷史上一直由 CPU 控制。隨著計算速度從較慢的 CPU 轉移到更快的 GPUs , I / O 成為整個應用程序性能的瓶頸。

正如 GPU 直接 RDMA (遠程直接存儲器地址)在網絡接口卡( NIC )和 GPU 內存之間直接移動數據時提高了帶寬和延遲,一種稱為 GPU 直接存儲的新技術使本地或遠程存儲(如 NVMe 或 NVMe over Fabric , NVMe oF )和 GPU 內存之間實現了直接數據路徑。 GPU 直接 RDMA 和 GPU 直接存儲器都避免了通過 CPU 內存中的反彈緩沖區的額外拷貝,并使 NIC 或存儲器附近的直接內存訪問( DMA )引擎能夠在直接路徑上將數據移入或移出 GPU 內存—所有這些都不會給 CPU 或 GPU 帶來負擔。如圖 1 所示。對于 GPU 直接存儲,存儲位置無關緊要;它可以在機柜內、機架內或通過網絡連接。在 CPU DGX-2 中,從 NVIDIA 系統內存( SysMem )到 GPUs 的帶寬被限制為 50gb / s ,而來自 SysMem 、許多本地驅動器和許多 NICs 的帶寬可以組合起來,從而在 DGX-2 中達到近 200gb / s 的帶寬上限。

圖 1 : GPU 內存和 NVMe 驅動器之間的標準路徑使用系統內存中掛起的反彈緩沖區 CPU 。通過完全跳過 CPU ,來自存儲器的直接數據路徑獲得了更高的帶寬。

在本博客中,我們將擴展到一個 上一篇文章 演示 GPU 直接存儲:一個概念證明,可以通過 NVMe 從位于給定服務器的本地存儲或機柜外部的存儲器直接訪問內存( DMA )。我們證明了從存儲器到 GPU 的直接內存訪問緩解了 CPU I / O 瓶頸,并提高了 I / O 帶寬和容量。此外,我們根據 RAPIDS 項目的 GPU – 加速 CSV 閱讀器 提供了在圣何塞 GTC19 上展示的初始性能指標。最后,我們將提供一些關鍵應用程序的建議,這些應用程序可以利用更快和更高的帶寬、更低的延遲和更大的存儲與 GPUs 之間的容量。

在以后的文章中,當這個特性接近產品化時,我們將描述如何對它進行編程。一組新的 cuFile API 將被添加到 CUDA 中,以支持這個特性,并將本機集成到 RAPIDS ‘ cuDF 庫中。

直接內存訪問是如何工作的?

PCI Express ( PCIe )接口將高速外圍設備(如網卡、 RAID / NVMe 存儲設備和 GPUs 連接到 CPU s 。用于 Volta GPUs 的系統接口 PCIe Gen3 可提供 16 GB / s 的聚合最大帶寬。一旦將協議頭的低效率和其他開銷考慮在內,最大可達數據速率超過 14gb / s 。

直接內存訪問( DMA )使用復制引擎在 PCIe 上異步移動大數據塊,而不是加載和存儲。它卸載了計算元素,讓它們可以自由地進行其他工作。在 GPUs 和存儲相關設備(如 NVMe 驅動程序和存儲控制器)中有 DMA 引擎,但通常在 CPU 中沒有。在某些情況下, DMA 引擎無法針對給定的目標進行編程;例如, GPU DMA 引擎不能以存儲為目標。沒有 GPU 直接存儲,存儲 DMA 引擎無法通過文件系統以 GPU 內存為目標。

然而, DMA 引擎需要由 CPU 上的驅動程序編程。當 CPU 對 GPU 的 DMA 進行編程時,從 CPU 到 GPU 的命令可能會干擾到 GPU 的其他命令。如果可以使用 NVMe 驅動器或存儲附近其他地方的 DMA 引擎來移動數據,而不是使用 GPU 的 DMA 引擎,那么 CPU 和 GPU 之間的路徑就沒有干擾。與 GPU 的 DMA 引擎相比,我們在本地 NVMe 驅動器上使用 DMA 引擎將 I / O 帶寬提高到 13 。 3 GB / s ,相對于下表 1 所示的 12 。 0 GB / s 的 CPU 到 GPU 內存傳輸速率,性能提高了大約 10% 。

緩解 I / O 瓶頸及相關應用

隨著研究人員將數據分析、人工智能和其他 GPU 加速應用程序應用于越來越大的數據集,其中一些數據集將無法完全放入 CPU 內存甚至本地存儲,因此,緩解存儲和 GPU 內存之間的數據路徑上的 I / O 瓶頸將變得越來越重要。數據分析應用程序對大量數據進行操作,這些數據往往從存儲中流入。在許多情況下,計算與通信的比率(也許用每字節的 flops 表示)非常低,這使得它們受到 IO 限制。例如,為了使深度學習能夠成功地訓練神經網絡,每天要訪問許多組文件,每個文件的大小為 10MB ,并多次讀取。在這種情況下,優化數據傳輸到 GPU 可能會對訓練人工智能模型的總時間產生重大而有益的影響。除了數據攝取優化之外,深度學習培訓還經常涉及檢查點的過程,即在模型訓練過程的各個階段,將訓練好的網絡權重保存到磁盤上。根據定義,檢查點位于關鍵 I / O 路徑上,減少相關開銷可以縮短檢查點周期和加快模型恢復。

除了數據分析和深度學習之外,研究網絡交互的圖形分析還有很高的 I / O 需求。當遍歷一個圖來尋找有影響的節點或從這里到那里的最短路徑時,計算只占總求解時間的一小部分。從當前節點開始,確定下一步要去哪里,可能涉及來自一個 PB 大小的數據湖的 1 到數百個文件的 I / O 查詢。雖然本地緩存有助于跟蹤可直接操作的數據,但圖形遍歷對延遲和帶寬都很敏感。隨著 NVIDIA 通過 cuGraph 庫 RAPIDS 擴展了 GPU 圖形分析加速功能,消除文件 I / O 開銷對于繼續提供光速解決方案至關重要。

將存儲和帶寬選項擴展到 GPUs

數據分析和人工智能之間的一個共同主題是,用于獲取見解的數據集通常是海量的。 NVIDIA DGX-2 由 16 個 Tesla V100 組成,包含 30TB NVMe SSD 內存( 8x 3 。 84TB )和 1 。 5TB 系統內存的庫存配置。啟用驅動器的 DMA 操作允許快速訪問內存,同時增加帶寬、降低延遲和潛在的無限存儲容量。

圖 2 :從存儲模塊外部獲得更多帶寬和更多存儲空間。遠離 PCI 交換機的 NIC 支持 NVMe-oF 的遠程存儲擴展,而 RAID 卡支持附近的存儲。所示的 RAID 卡僅為原型,并不表示當前或未來的 DGX-2 產品。

DGX-2 機柜包含兩個 CPU ,每個 CPU 都有兩個 PCIe 子樹實例,如圖 2 所示。從存儲器或 SysMem 到 GPUs 的多條 PCIe 路徑由兩個級別的 PCIe 交換機支持,這使得 DGX-2 成為 GPU 直接存儲原型化的良好測試工具。表 1 的左列列出了向 GPU 傳輸數據的各種來源,第二列列出了從該源測得的帶寬,第三列標識了此類路徑的數量,最后一列是中間兩列的乘積,顯示了該類源可用的總帶寬。對于 4 個 PCIe 樹( 12-12 。 5 GB / s )中的每一個,從 CPU 的系統內存( SysMem )有一條路徑,另一條路徑來自每個 PCIe 樹上掛起的?個驅動器的另一條路徑,速度為 13 。 3 GB / s 。 DGX-2s 每對 GPUs 都有一個 PCIe 插槽。該插槽可以由一個 NIC 占用,該 NIC 的測量速度為 10 。 5 GB / s ,或者,在本博客中使用的原型中,可以使用 RAID 卡,其測量速度為 14 GB / s 。 NVMe of ( over fabric )是一種通用協議,它使用 NIC 訪問遠程存儲,例如通過 Infiniband 網絡。如果在 8 個 PCIe 插槽中使用 RAID 卡(圖 2 中每個 PCIe 子樹 2 個),則在所有源上添加的 PCIe 帶寬的右側列總和為 215 GB / s ;如果在這些插槽中使用 NIC ,則總和會更低。

表 1 : DGX-2 到 GPUs 的帶寬選項。機柜內有 4 個 PCIe 子樹和 8 個 NIC 或 RAID 卡。

GPU 直接存儲的一個主要優點是,無論是存儲在存儲模塊內部還是外部、系統內存或 NVMe 驅動器上的快速數據訪問都是跨各種源的累加。使用內部 NVMe 和系統內存并不排除使用 NVMe 或 RAID 存儲。最后,這些帶寬是雙向的,支持復雜的編排,其中數據可以從分布式存儲中引入,緩存在本地磁盤中,并且可以通過在 CPU 系統內存***享的數據結構與 CPU 協作,總帶寬超過 GPU 峰值 IO 的 90% 。對這三個源中的每一個的讀寫操作可能同時發生。圖 3 對各種來源進行顏色編碼,并將相加組合顯示為堆疊條形圖。在下面的列標簽中,源實例的數量在括號中,例如 16 個 NVMe 驅動器或 8 個執行 NVMe 操作的 NIC 。每個選項可用的粗略容量顯示在列標簽的最后。

圖 3 :來自不同來源的帶寬限制是累加的

GPU CSV 閱讀器加速案例研究

NVIDIA 支持的 RAPIDS 開源軟件 專注于端到端 GPU ——加速數據科學。其中一個庫 cuDF 提供了類似 pandas 的體驗,允許用戶在 GPU 上加載、過濾、連接、排序和瀏覽數據集。 NVIDIA 工程師能夠利用 GPU 直接存儲到 GPU 上,使吞吐量比原始的 cuDF CSV 閱讀器提高了 8 。 8 倍,比 cuDF 庫更新后使用的當前最大努力實現速度提高了 1 。 5 倍。這些改進如圖 4 所示。

圖 4 :最初的( 0 。 7 ) cuDF csv 峎 u 讀卡器實現,在底部以綠色顯示,它沒有按 GPU 并發進行伸縮,因為它導致從 SysMem 到 GPU 的錯誤,從存儲到 SysMem 的錯誤,以及通過 CPU 緩沖區取消固定的數據移動。現在隨 RAPIDS 一起發布的改進的 bounce buffer 實現使用了最好的可用內存管理,顯式的數據移動以黃色顯示。從預熱頁緩存讀取數據顯示為紅色虛線,藍色的 GPU 直接存儲優于所有這些,僅受 NVMe 驅動器速度的限制。這些測量碰巧只使用了 8 個 GPUs 和 8 個 NVMe 驅動器。

此外,直接數據路徑將 80 GB 數據的端到端延遲降低了 3 。 8 倍。在另一個對 16 GPUs 的 cuDF CSV 閱讀器研究中,如圖 5 所示,使用藍色的直接、非錯誤數據路徑,讀取帶寬更平滑、更可預測、延遲更低,而改進的直接 cuDF 行為仍然使用紅色的反彈緩沖區,或黃色的原始行為。

圖 5 : cuDF read _ csv 的延遲比較。當 CPU 反彈緩沖區在帶有錯誤(黃色)的原始 cuDF 版本中使用時,作為 GPUs 函數的延遲是不穩定和不穩定的。 cuDF 已經過優化,以消除直接傳輸( red )的故障,從而提高了性能和穩定性。 GPU 直接存儲(藍色),在處理擴展到額外的 GPUs 時提供平滑和可預測的延遲。

帶寬和 CPU 負載研究

圖 6 突出顯示了不同傳輸方法可實現的相對帶寬。可以使用緩沖 I / O 將數據從存儲器傳輸到 CPU 內存,并使用文件系統的頁緩存(黃線)進行保留。使用頁緩存有一些開銷,比如在 CPU 內存中增加一個副本,但是相對于 DMA 從存儲器中取出數據并使用一個緩沖區(紅線)直到傳輸大小足夠大,足以分攤 DMA 編程時,這是一個勝利。因為使用 GPUDirect 存儲(藍線)的存儲器和 GPU 之間的帶寬比 CPU 和 GPU 之間的帶寬要高得多,所以它可以在任何傳輸大小下獲勝。

圖 6 : GPU 直接存儲( GDS )的帶寬明顯優于使用緩沖區( CPU GPU )或使用緩沖 IO 啟用文件系統的頁緩存。 16 個 NVMe 驅動器與 16 個 GPUs 一起使用。

獲得更高的帶寬是一回事,但有些應用程序對 CPU 負載很敏感。如果我們檢查這三種方法的帶寬除以 CPU 利用率,結果會更加引人注目,如圖 7 所示。

圖 7 :帶寬除以 CPU 核心的部分利用率。16個 NVMe 驅動器與16個 GPU 一起使用

TPC-H 案例研究

TPC-H 是一個決策支持基準。對于這個基準測試有很多查詢,我們主要關注 QueryFour ( Q4 ),它傳輸大量數據,并對這些數據的 GPU 進行一些處理。數據的大小由比例因子( SF )決定。比例因子 1K 意味著數據集的大小接近 1TB ( 82 。 4GB 的二進制數據); 10K 意味著 10 倍的大小,這不能完全放入 CPU 內存中。在非 GPU 直接存儲的情況下, CPU 內存中的空間必須被分配,從磁盤中填充,然后釋放,如果數據可以在消耗時按需直接傳輸到 GPU 內存中,那么所有這些都需要時間,而這些時間最終都是無關緊要的。圖 8 顯示了與不使用 GPU 直接存儲相比, GPU 直接存儲具有較大的性能提升: SF 1K 為 6 。 7 倍, SF 10K 為 32 。 8 倍。

圖 8 : TPC-H 查詢 4 ,有和沒有 GPU 直接存儲( GDS )。使用了 1K (~ 1TB )和 10K (~ 10TB )的比例因子( SF ),加速分別為 4 。 9x 和 19 。 6x 。 CPU 內存中的重復分配、將數據加載到內存中以及釋放 CPU 側的內存是 GPU 直接存儲中避免的大瓶頸。

數據***案例研究

從存儲器到 GPU 的直接路徑也適用于不完全適合 GPU 幀緩沖區的數據集。在一個實驗中, NVIDIA 使用了 1TB 的輸入數據集和 DGX-2 的 512GB 聚合 GPU 內存,用 GPU 直接存儲來證明,即使在內存超額訂閱的情況下, 16 GPUs 的數據 I / O 速度也比主機內存快。直接讀取和寫入數據的速度提高了 2 倍,但分塊、使用更小的批處理和其他優化進一步提高了速度。總的來說, GPU 直接存儲將數據操作速度提高了 4 。 3 倍。

GPU 直接存儲的值

GPU 直接存儲器提供的關鍵功能是,它使 DMA 能夠通過這個文件系統從存儲器到 GPU 存儲器。它以多種方式提供價值:

2-8 倍的帶寬,直接在存儲器和 GPU 之間傳輸數據。

顯式的數據傳輸既不出錯也不經過跳出緩沖區,也具有較低的延遲;我們演示了低 3 。 8 倍的端到端延遲的示例。

避免顯式和直接傳輸的錯誤可以使延遲在 GPU 并發性增加時保持穩定和平坦。

在存儲器附近使用 DMA 引擎對 CPU 負載的影響較小,并且不會干擾 GPU 負載。使用更大尺寸的 GPU 直接存儲,帶寬與部分 CPU 利用率之比要高得多。我們觀察到(但沒有在本博客中以圖形方式顯示)當其他 DMA 引擎將數據推入或拉入 GPU 內存時, GPU 利用率仍然接近于零。

GPU 不僅成為帶寬最高的計算引擎,而且成為 IO 帶寬最高的計算單元,例如 215 GB / s ,而 CPU 的 50 GB / s 。

無論數據存儲在何處,所有這些好處都是可以實現的——實現對 PB 級遠程存儲的快速訪問,甚至比 CPU 內存中的頁緩存都要快。

從 CPU 存儲器、本地存儲器和遠程存儲器進入 GPU 存儲器的帶寬可以相加地組合起來,使進入和流出 GPUs 的帶寬幾乎飽和。這變得越來越重要,來自大型分布式數據集的數據被緩存在本地存儲器中,工作表可以緩存在 CPU 系統內存中,并與 CPU 協同使用。

除了使用 GPUs 而不是 CPU 加快計算的好處外,一旦整個數據處理管道轉移到 GPU 執行,直接存儲就起到了一個力倍增器的作用。這一點變得尤為重要,因為數據集大小不再適合系統內存,而且 GPUs 的數據 I / O 增長成為處理時間的瓶頸。當人工智能和數據科學繼續重新定義可能的藝術時,啟用直接路徑可以減少甚至完全緩解這個瓶頸。

關于作者

Adam Thompson 是 NVIDIA 的高級解決方案架構師。他有信號處理方面的背景,他的職業生涯一直在參與和領導一些項目,這些項目專注于射頻分類、數據壓縮、高性能計算、統計信號處理以及管理和設計針對大數據框架的應用程序。他擁有喬治亞理工大學電子與計算機工程碩士學位和克萊姆森大學學士學位。

CJ Newburn 是 NVIDIA 計算軟件組的首席架構師,他領導 HPC 戰略和軟件產品路線圖,特別關注系統和規模編程模型。 CJ 是 Magnum IO 的架構師和 GPU Direct Storage 的聯合架構師,與能源部領導 Summit Dev 系列產品,并領導 HPC 容器咨詢委員會。在過去的 20 年里, CJ 為硬件和軟件技術做出了貢獻,擁有 100 多項專利。他是一個社區建設者,熱衷于將硬件和軟件平臺的核心功能從 HPC 擴展到 AI 、數據科學和可視化。在卡內基梅隆大學獲得博士學位之前, CJ 曾在幾家初創公司工作過,致力于語音識別器和 VLIW 超級計算機。他很高興能為他媽媽使用的批量產品工作。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4940

    瀏覽量

    102820
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4702

    瀏覽量

    128710
  • 計算機
    +關注

    關注

    19

    文章

    7425

    瀏覽量

    87722
收藏 人收藏

    評論

    相關推薦

    什么是ROM存儲器的定義

    一、ROM存儲器的定義 ROM存儲器是一種在計算機和電子設備中用于存儲固定數據的存儲器。與RAM(隨機存取存儲器)不同,ROM
    的頭像 發表于 11-04 09:59 ?216次閱讀

    存儲器主要用來存儲什么

    存儲器(內部存儲器)是計算機硬件的重要組成部分,它直接與中央處理CPU)相連,用于存儲正在運行的程序和當前處理的數據。內
    的頭像 發表于 10-14 09:55 ?443次閱讀

    存儲器分為隨機存儲器和什么

    ,Read-Only Memory)。 一、隨機存儲器(RAM) 隨機存儲器的定義和特點 隨機存儲器(RAM)是一種可讀寫的存儲器,其特點是可以隨機訪問
    的頭像 發表于 10-14 09:54 ?632次閱讀

    高速緩沖存儲器有什么作用

    )技術實現,而不是像系統主存那樣使用動態隨機存儲器(DRAM)技術。SRAM具有訪問速度快但成本較高的特點,這使得高速緩沖存儲器能夠在計算機系統中提供接近CPU速度的數據訪問能力。
    的頭像 發表于 09-10 14:09 ?905次閱讀

    緩解ADC存儲器串擾的方法

    電子發燒友網站提供《緩解ADC存儲器串擾的方法.pdf》資料免費下載
    發表于 09-06 10:15 ?0次下載
    <b class='flag-5'>緩解</b>ADC<b class='flag-5'>存儲器</b>串擾的方法

    PLC主要使用的存儲器類型

    PLC(可編程邏輯控制)中的存儲器是其重要組成部分,用于存儲程序、數據和系統信息。PLC的存儲器主要分為兩大類:系統存儲器和用戶
    的頭像 發表于 09-05 10:45 ?1402次閱讀

    內部存儲器有哪些

    內部存儲器,也稱為內存(Memory),是計算機系統中用于暫時存儲程序和數據的重要組件。它直接與CPU相連,是CPU處理數據的主要來源。內部存儲器
    的頭像 發表于 09-05 10:42 ?1307次閱讀

    ram存儲器和rom存儲器的區別是什么

    定義: RAM(Random Access Memory):隨機存取存儲器,是一種易失性存儲器,主要用于計算機和其他設備的臨時存儲。 ROM(Read-Only Memory):只讀存儲器
    的頭像 發表于 08-06 09:17 ?576次閱讀

    虛擬存儲器的概念和特征

    隨著計算機技術的飛速發展,存儲器的容量和速度成為了影響計算機性能的關鍵因素。在解決內存容量不足和速度瓶頸的過程中,虛擬存儲器(Virtual Memory)技術應運而生。虛擬存儲器技術
    的頭像 發表于 05-24 17:23 ?1536次閱讀

    存儲器與外存儲器的主要區別

    在計算機系統中,存儲器是不可或缺的核心部件,它負責存儲和處理各種數據和信息。根據存儲位置和功能的不同,存儲器可大致分為內存儲器(簡稱內存)和
    的頭像 發表于 05-22 18:16 ?4927次閱讀

    存儲器和寄存的區別

    在計算機系統中,存儲器和寄存是兩個至關重要的組成部分,它們各自承擔著不同的功能和角色。存儲器用于存放程序和數據,是計算機系統的記憶設備;而寄存則是
    的頭像 發表于 05-12 16:55 ?1863次閱讀

    什么存儲器速度最快

    在計算機系統中,寄存(Register)通常是速度最快的存儲器。寄存是位于中央處理CPU)內部的小型、高速
    發表于 02-05 09:43 ?3785次閱讀

    全面解析存儲器層次結構原理

    靠近 CPU 的小、快速的高速緩存存儲器(cache memory)做為一部分存儲在相對慢速的主存儲器(main memory)中數據和指令的緩沖區域。
    發表于 12-25 09:21 ?1175次閱讀
    全面解析<b class='flag-5'>存儲器</b>層次結構原理

    I/O接口防靜電保護方案設計及ESD二極管選型

    I/O(Input/Output),即輸入/輸出,通常指數據在內部存儲器和外部存儲器或其他周邊設備之間的輸入和輸出。
    的頭像 發表于 12-15 17:40 ?1452次閱讀
    <b class='flag-5'>I</b>/<b class='flag-5'>O</b>接口防靜電保護方案設計及ESD二極管選型

    隨機訪問存儲器(RAM)和只讀存儲器(ROM)的區別

    在數字電子設備中,存儲器是至關重要的部分。它負責存儲和檢索數據,以支持各種計算和數據處理任務。在存儲器市場中,有兩種主要的類型:隨機訪問存儲器 ( RAM ) 和只讀
    的頭像 發表于 12-05 15:46 ?2307次閱讀
    隨機訪問<b class='flag-5'>存儲器</b>(RAM)和只讀<b class='flag-5'>存儲器</b>(ROM)的區別