摘要:在高性能計算環(huán)境中,MPI應用多個計算節(jié)點同時訪問底層存儲系統(tǒng)文件時,其I/O開銷受到訪問模式和外存設備性能的影響。針對MPI應用訪問文件的特征,利用非易失內(nèi)存高帶寬、低時延、可字節(jié)尋址、數(shù)據(jù)可持久化等優(yōu)勢,提出面向非易失內(nèi)存的MPI-IO接口優(yōu)化方案;對文件數(shù)據(jù)建立分布式的緩存并維護持久性的元數(shù)據(jù)、對進程間數(shù)據(jù)傳輸策略進行優(yōu)化,使應用可以有效管理、利用非易失內(nèi)存設備,保持緩存數(shù)據(jù)一致有效。
為了實現(xiàn) 對非易失內(nèi)存的管理與利用、對文件數(shù)據(jù)緩存的管理與訪問,本文設計并實現(xiàn)了面向非易失內(nèi)存的MPI-IO接口優(yōu)化(NVMPI-IO)。本文的工作主要包括:
● 修改MPI-IO接口,截取應用對底層共享文件系統(tǒng)的訪問,并將其轉(zhuǎn)化為對計算節(jié)點內(nèi)或計算節(jié)點之間的非易失緩存的訪問;
● 在非易失內(nèi)存中建立并維護緩存數(shù)據(jù),使計算節(jié)點之間的緩存一致且有效,使應用失效重啟后可以快速地從非易失內(nèi)存中恢復有效數(shù)據(jù);
● 通過多種優(yōu)化,降低維護、訪問緩存的開銷;
● 最后給出一個原型系統(tǒng),并對其進行實驗,實驗表明,此系統(tǒng)可以有效地管理、應用非易失內(nèi)存,并使MPI應用獲得性能提升。
使用NVMPI-IO,MPI應用無須進行修改,即可通過MPI-IO中間件將非易失內(nèi)存作為數(shù)據(jù)緩存,實現(xiàn)對文件緩存的分布式訪問,從而減少I/O開銷,并減輕共享文件系統(tǒng)的負載;同時,在非易失內(nèi)存中維護元數(shù)據(jù),使程序在崩潰重啟后可以快速恢復數(shù)據(jù),并繼續(xù)運行。
MPI應用的文件訪問模式
MPI是基于消息傳遞的并行編程模型,可使多個節(jié)點中的多個進程合作完成同一個計算任務,達到并行加速的目的。
MPI被廣泛地應用在科學研究與工程仿真中,常見的MPI實現(xiàn)包括Intel MPI、OpenMPI、MPICH等。使用MPI的應用在訪問文件時顯示出以下訪問特征。
● 多個進程同時訪問同一文件的不同部分。研究物理模型或工程結(jié)構(gòu)的MPI應用在進行計算前,首先需要準備模型文件,多個進程將同時利用模型文件上的數(shù)據(jù)進行計算,如每個進程讀取多維矩陣的不同部分;進程間按需通信,并將計算結(jié)果寫回文件的相應位置。
● MPI-IO使用聚合I/O與數(shù)據(jù)篩選技術,將多個進程需要的大量小粒度數(shù)據(jù)聚合成少量的大粒度數(shù)據(jù),避免了小粒度的文件數(shù)據(jù)訪問。
● MPI標準不對文件數(shù)據(jù)進行緩存。MPI應用在訪問文件時可能對同一文件進行多次讀寫,且每次讀寫的位置可能不一致;同時,多個進程對文件的并行訪問容易使節(jié)點內(nèi)緩存失效;內(nèi)存的空間有限,而工程模型的數(shù)據(jù)量可根據(jù)工程的精度呈指數(shù)型增大,將大量的文件數(shù)據(jù)緩存到內(nèi)存可能影響計算效率;在允許直接輸入輸出(direct I/O)的文件系統(tǒng)(如XFS、Lustre)中,MPI建議使用直接輸入輸出,以避免操作系統(tǒng)的緩存。
● MPI應用應周期性地寫出檢查點(checkpoint)文件。大型工程仿真項目可能需要多個節(jié)點同時長時間運行,若其中某個節(jié)點出現(xiàn)故障導致作業(yè)失敗,仿真項目需要重新進行;為了避免過多的重復工作,MPI應用應周期性地輸出檢查點文件,若作業(yè)失敗,則從最近的有效檢查點開始繼續(xù)計算。同時,檢查點文件可用于仿真的可視化輸出。寫檢查點文件時,進程需要暫停計算任務,或?qū)⑽募?shù)據(jù)復制一份,以避免數(shù)據(jù)不一致。
● MPI應用多進程對文件進行訪問有顯著的同步特性。數(shù)據(jù)庫、文件系統(tǒng)等會在任何時間點接收來自多個客戶端的數(shù)據(jù)請求,若有分布式的緩存,則需要隨時保證數(shù)據(jù)的一致性;MPI應用的多個進程在訪問同一文件時,多個進程同時訪問數(shù)據(jù),當這一階段完成后,進程之間需同步進度后再進行下一階段的訪問。MPI應用多進程的同步避免了寫后讀等數(shù)據(jù)不一致的問題,可用于簡化緩存的設計。
基于上 述的MPI應用的 數(shù) 據(jù) 訪問特征,在計算節(jié)點上部署非易失緩存有利于MPI應用的性能提升。利用非易失內(nèi)存容量大、帶寬高、可按字節(jié)尋址等特點,在非易失內(nèi)存上部署緩存層不占用高效的DRAM空間,并將緩慢的文件訪問轉(zhuǎn)變?yōu)楦咚俚姆且资?nèi)存訪問,可提高MPI應用的性能,同時可減少底層文件系統(tǒng)的負載。
面向非易失內(nèi)存的MPI-IO接口優(yōu)化被應用在HPC系統(tǒng)中,其修改MPI-IO模塊接口以管理非易失內(nèi)存的空間及訪問形式。NVMPI-IO在MPI運行時初始化,并向操作系統(tǒng)申請NVM空間,當作業(yè)結(jié)束后釋放NVM資源,使NVM資源可供其他應用使用。NVMPI-IO采用簡單而有效的方法獲得了以下優(yōu)點。
● NVM設備的非獨占使用:NVMPI-IO在運行時,只按需占用NVM的部分空間,其他應用仍可以使用該設備進行其他作業(yè)。作業(yè) 結(jié) 束后,NVMPI-IO立即釋放NVM資源,使其可以被更高效地利用。
● 數(shù)據(jù)一致性:NVMPI-IO隨MPI程序的運行而運行,每個MPI進程維護文件的部分緩存數(shù)據(jù)及相應的元數(shù)據(jù);通過維護元數(shù)據(jù)保證緩存數(shù)據(jù)的一致性。
● 后臺寫回:MPI應用周期性地寫出checkpoint文件,引起大量的數(shù)據(jù)寫回。NVMPI-IO允許數(shù)據(jù)的后臺寫回,可在寫回過程同時進行計算任務。
● MPI應用的快速重啟:若MPI應用中某個進程失效引起整個程序的崩潰,在NVM設備上仍然存在有效的數(shù)據(jù);使用NVMPI-IO,MPI應用重啟后,可以在NVM中快速恢復數(shù)據(jù),實現(xiàn)快速的重啟。
● 高可移植性:MPI可以在不同計算機架構(gòu)、操作系統(tǒng)上正常工作;NVMPI-IO繼承了MPI的高可移植性。同時,NVMPI-IO不修改提供給上層應用的應用程序接口(application programming interface,API),現(xiàn)有的MPI應用不需要做任何修改即可在此系統(tǒng)上運行。
NVMPI-IO部署在HPC系統(tǒng)中,需對HPC系統(tǒng)的軟硬件做相應的調(diào)整。
NVMPI-IO在傳統(tǒng)HPC集群組織中引入NVM設備。在傳統(tǒng)HPC集群中,計算節(jié)點通過網(wǎng)絡與共享的存儲系統(tǒng)相連,計算節(jié)點從存儲系統(tǒng)中獲得數(shù)據(jù),并對數(shù)據(jù)進行加工處理;同時,計算節(jié)點之間通 過TCP/IP網(wǎng)絡或RDMA技術進行通信。如圖所示,NVMPI-IO在每個計算節(jié)點中部署NVM設備,同時保持共享存儲系統(tǒng)的設計不變;節(jié)點間通信沿用傳統(tǒng)HPC系統(tǒng)中的網(wǎng)絡傳輸,若配備了RDMA網(wǎng)絡,則可以使用RDMA直接訪問其他節(jié)點的非易失內(nèi)存。
NVMPI-IO為MPI應用服務,同時也利用了MPI定義的通信過程。一個典型的HPC應用包含多個MPI進程,其中每個進程使用MPI定義的接口與其他進程進行消息傳遞,使用MPI-IO模塊對底層存儲系統(tǒng)進行數(shù)據(jù)訪問。本系統(tǒng)保留MPI-IO的聚合I/O與數(shù)據(jù)篩選優(yōu)化,這些優(yōu)化將上層應用需要的小粒度I/O整合成大粒度的I/O,避免了數(shù)據(jù)的小粒度隨機訪問。如圖所 示,本系統(tǒng)部署在MPI-IO中間件中,截取MPI-IO對文件的系統(tǒng)調(diào)用,并 按 需 轉(zhuǎn)發(fā)為非易失內(nèi)存的數(shù)據(jù)維護、訪問。
NVMPI-IO在部署時,首先需要在NVM設備上掛載可以直接訪問(direct access,DAX)的文件系統(tǒng)。在NVM設備上掛載DAX文件系統(tǒng)可使應用直接通過指針 訪問NVM上的數(shù)據(jù)。具體地,進程使用內(nèi)存映射(memory map)技術將文件系統(tǒng)中的文件映射到應用的進程空間中,進程可以通 過 指針直接 修改NVM,而不是修改操作系統(tǒng)的內(nèi)核緩存(kernel cache)。
此外,NVMPI-IO使用MPI定義的消息傳遞API與其他節(jié)點進行通信,使用POSIX API與底層文件系統(tǒng)進行數(shù)據(jù)的維護和訪問。
-
接口
+關注
關注
33文章
8254瀏覽量
149943 -
內(nèi)存
+關注
關注
8文章
2902瀏覽量
73534 -
數(shù)據(jù)緩存
+關注
關注
0文章
23瀏覽量
7017
原文標題:面向非易失內(nèi)存的MPI-IO接口優(yōu)化
文章出處:【微信號:AI_Architect,微信公眾號:智能計算芯世界】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論