文/邸瑞華 呂海
讓HPC融入學科
文/邸瑞華 呂海
為了讓高性能計算與學科更好地結合,北京工業大學網格中心做了很多優化工作

高性能計算(High Performance Computing)已成為繼理論研究和實驗研究之后第三種認識、改造客觀世界的重要手段,并在工程與非工程的各種領域得到了廣泛應用。
北京工業大學(以下簡稱北工大)高性能計算平臺的建設為北工大重點學科建設和科研起到推動和支持作用,為解決多學科、跨地域科研資源的共享與協作問題提供了基礎設施。北京工業大學網格中心高性能計算平臺2010年5月平臺投入運行,明確提出:“服務教學科研、 開展科學研究、 支撐服務北京”的目標。 目前,在該平臺上部署了多種用于大規模數據處理的商業或開源高性能計算軟件,對各個學院學科老師的高性能計算軟件的性能優化提供技術支持。
高性能計算領域里一個已經毋庸置疑的事實是高性能計算軟件在各種不同體系結構的高性能計算平臺下表現出的計算性能是不一樣的,這樣就需要在這些的高性能計算平臺之中選擇出最能發揮軟件性能的平臺。為此,必須做面向計算機體系結構的軟件性能分析。
例如,北工大材料學院在進行“低維電子功能材料中尺度效應和元素特性研究”課題中,使用基于第一性原理計算的計算軟件VASP對材料的物理和化學特性進行描述。在第一性原理計算過程中,涉及到大量的矩陣計算,屬于計算密集型、通訊密集型應用。其中大多數并行計算采用能帶分割的并行模式,同時混合了平面波系數并行模式。
為了使得VASP軟件在分析計算過程中充分發揮計算平臺的性能,尋找最佳的運行環境,材料學院和計算機學院的研究生一起合作,將VASP軟件分別部署在高性能計算平臺的三個資源池 (虛擬集群資源池、萬兆網互聯多核集群資源池、NUMA架構的IBM 3950資源池) 中,測試比較在不同資源池中VASP軟件的運行性能。經過多次的實驗,分析比較計算時間、加速比、浮點運算次數及其它與體系結構密切相關的性能參數,最終確定基于NUMA架構的IBM3950服務器運行效果最佳。
自2005年多核芯片逐漸普及以來,計算機科學領域正在發生著深刻的變革,軟件性能提升的“免費午餐”已經結束,國外及國內各個研究團體都從各個方面進行多核芯片架構的計算平臺的程序性能優化的研究。近幾年,網格中心從生命、材料、結構工程等應用領域著手,開展該方向的研究,并在結構工程領域的有限元分析計算方面取得了一定的進展。
結構工程在城市基礎設施建設、結構受損研究中發揮著重要的作用,通過結構工程實驗人們探索結構性能的規律,為結構設計、施工和運行提供必不可缺的依據。結構工程領域中一種行之有效的仿真實驗方法是利用有限元法。網格中心聯合建筑工程學院進行地震工程動力仿真服務的研究,提供基于開源有限元分析軟件OpenSees的高性能動力分析計算服務。
網格中心通過對OpenSees并行版本OpenSeesSP 在高性能計算平臺上的性能測試和分析,找出了程序的性能瓶頸,利用MPI/OpenMP混合編程模型設計了一種適合于多核芯片架構的集群計算平臺上高效求解非線性動力微分方程的求解算法,并在OpenSeesSP版本中依據這種算法是實現了一個基于混合并行編程模型的求解器。通過改進的OpenSeesSP進行測試和性能分析,優化效果比較理想。
結構健康監測是通過對結構的物理力學性能進行無損監測,對結構的服役情況、可靠性、耐久性和承載能力進行智能評估,結構健康監測數據的規模相當大。目前已存在專門的工程數據處理軟件,例如M a t l a b、Famos等,這些軟件都是基于串行算法實現的,對于結構工程試驗產生的大規模的海量數據進行處理時則往往效率低下。
Hadoop技術已經在互聯網領域得以廣泛的應用,同時也得到研究界的普遍關注,DryadLINQ已經在微軟內部得到廣泛應用。網格中心從結構工程領域中海量結構健康監測數據處理的應用出發,在分析Hadoop和DryadLINQ兩種并行編程框架特點的基礎上,搭建了兩種并行編程框架的集群系統,集群使用IBM HS21刀片服務器,操作系統使用微軟的Windows HPC Server 2008 R2。在集群系統中使用兩種并行編程框架對大規模結構工程試驗數據進行快速傅里葉變換,以測試其性能。
通過測試結果分析出不同規模數據在Hadoop集群和DryadLINQ集群上的運行時間,隨著數據量的加大,運行時間在增長,但時間增大的幅度在減緩。但隨著數據規模的增大DryadLINQ的運行優勢越明顯,例如數據量為1G的運行時間為250.03秒,而3G的數據量運行時間為310.53秒,僅為1G數據量的1.25倍,所以數據量越大越適合采用DryadLINQ的并行計算方式。對于Hadoop集群也是如此,隨著數據量的不斷增加,雖然執行時間繼續增加,但增加的幅度變小。
應用實踐表明,無論是采用基于Hadoop系統的MapReduce并行編程還是采用基于Dryad平臺的DryadLINQ并行編程,對于大規模數據在處理效率上有了很大的提高。
X10是IBM 研究部門與多家學術科研機構共同開發的面向現代體系結構的并行編程語言。相比傳統的并行編程語言,如MPI或者OpenMP,X10有更高的編程效率,更好的語義抽象以適應不同的體系結構和不同的數據訪問方式。同時,X10也能夠獲得很好的并行度。網格中心階段性參與IBM中國研究院對X10與Hadoop、Twister等編程模型對比和性能分析的研究,負責實驗環境的搭建。
在實驗測試和系統性能分析時,網格中心的老師和研究生與IBM研究人員一起討論實驗結果,分析出現問題的原因,提出建議和想法。
(作者單位為北京工業大學網格中心)