• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種面向高性能計算的性能分析工具設計與實現(xiàn)

      2019-07-15 01:52:18張?zhí)祺?/span>
      現(xiàn)代計算機 2019年16期
      關鍵詞:高性能工具程序

      張?zhí)祺?/p>

      (國家超級計算天津中心,天津 300457)

      0 引言

      高性能計算的發(fā)展水平,是一個國家信息化發(fā)展程度的重要指標,它對于鞏固國防、促進經濟和科技的發(fā)展有著十分重要的意義。近年來,超級計算機不斷推陳出新,高性能計算應用得到了越來越完善的硬件支持,各個領域的數(shù)值模擬研究逐漸趨向更大的規(guī)模、更高的復雜度和更加精細的尺度發(fā)展。

      隨著軟件計算規(guī)模的增加,各類性能瓶頸也隨之產生。如存儲、計算、I/O和通信等方面的缺陷,在不同程度上制約了軟件的可擴展性。為了定位和分析這些性能瓶頸,眾多科研團隊和商業(yè)公司開發(fā)了不同的性能分析工具。然而,目前已有的性能分析工具往往只針對串行程序或小規(guī)模并行程序,對高性能計算軟件的適用性不強,且這些工具的功能較為單一,難以滿足軟件調試的需求,這造成了仿真研發(fā)人員在大尺度和大規(guī)模程序優(yōu)化上的困難。

      本文參考開源庫PDToolkit和TAU[1-3]的設計思路,并在其基礎上進行功能擴展,同時集成了多款系統(tǒng)級性能分析工具,形成一套自主的性能分析工具,期望為超級計算平臺上的性能分析工作提供便利。同時,以典型的物理學大規(guī)模核聚變模擬軟件GTC為例,在E級計算機“天河三號”原型機上進行了測試和驗證。通過本文工作,將獲得一個適用于高性能計算的性能分析工具,可以從程序熱點、浮點運算、內存以及CPU使用等方面對軟件的運行情況給出綜合評價,能夠為高性能計算軟件優(yōu)化提供全面的數(shù)據(jù)參考。

      1 相關工作

      1.1 性能分析方法

      性能分析是指在程序運行過程中采集各種相關信息,通過提取分析這些信息,來獲得被測程序在運行時的行為特征,以便于開發(fā)人員找出程序可能存在的性能缺陷,從而做出相應的改進和優(yōu)化,達到提升運行效率的目的。性能分析涉及大量的分析和調試工作,從底層參數(shù)采集和記錄,到數(shù)據(jù)的統(tǒng)計、歸納和分析,最后到分析結果的可視化展示等過程,都需要分析工具的支持。這些工具種類繁多,目前高性能計算領域常見的有數(shù)十種,按照采集的參數(shù)層次的不同可以分為兩類:一是系統(tǒng)級性能分析工具;二是應用級性能分析工具。

      系統(tǒng)級性能分析工具在程序運行過程中,從計算機系統(tǒng)底層采集各種性能參數(shù),從而反映出系統(tǒng)的負載情況,例如磁盤讀寫、內存消耗以及網絡帶寬,等等。典型的工具有:Collectl、Perf以及Darshan,等等,這些工具結構簡單,具有很好的兼容性和穩(wěn)定性,在高性能計算領域應用廣泛。其缺點是只能用于評估系統(tǒng)狀態(tài),無法從代碼層面上做出分析和評價,開發(fā)人員很難直接得到針對軟件模塊的分析結果。

      應用級性能分析工具通過在被測程序中植入特定的采集代碼,隨著程序運行而獲取指定模塊的性能參數(shù),從而反映出該模塊的行為特征,如通信頻率、I/O性能、執(zhí)行時間和調用次數(shù),等等。典型的應用級性能分析工具如英特爾公司發(fā)布的Intel VTune Amplifier和由俄勒岡州大學性能分析研究實驗室等研究機構合作開發(fā)的 TAU(Tuning and Analysis Utilities),這些工具具有功能豐富、采集信息全面和自動化程度高的優(yōu)點,為性能分析工作提供了一定的便利。

      然而,應用級性能分析工具對使用者提出了比系統(tǒng)級更高的要求。以Intel VTune Amplifier為代表的商業(yè)軟件在使用時存在諸多限制,且用戶不掌握其內部代碼,從而無法對分析過程進行有效跟蹤。而以TAU為代表的開源軟件,一般采用庫介入的方式配合代碼植入,改變了被測程序的編譯過程,在兼容性和穩(wěn)定性上存在一定的缺陷,需要用戶根據(jù)實際需求修改和調試代碼,以適應復雜的底層系統(tǒng)環(huán)境。

      1.2 自主開發(fā)的性能分析工具

      不同的研究領域對性能分析的需求也各有不同。如計算機網絡領域主要關注網絡的帶寬、延遲和吞吐等特性;計算機芯片和CPU等硬件領域則側重于主頻、浮點性能和功耗等性能參數(shù);而高性能計算領域主要關注的是程序的計算規(guī)模、可擴展性和并行效率等問題。因此,眾多不同領域的學者和科研人員開發(fā)了具有行業(yè)針對性的性能分析工具。

      2011年,張拓宇、肖海力、遲學斌[4]針對網格計算應用軟件提出了一個集信息收集、分析和展示于一體的性能分析工具設計和實現(xiàn)方法,在提升分析效率,降低開銷方面對本文有較高的參考價值。2013年,張惠臻、王超、陳雁[5]基于GNU性能分析工具gprof,開發(fā)了一款面向嵌入式領域交叉開發(fā)環(huán)境的嵌入式性能分析工具Cross-Profiler,基于已有的軟件框架,在數(shù)據(jù)采集和處理能力方面作出優(yōu)化,為分析工具的架構設計提供了參考。2018年馮赟龍、劉勇、何王全[6]提出一種基于深度學習的程序性能分析框架,用于指導分析深度學習軟件的性能瓶頸,在提取程序負載特征和提升效率方面,給出了很好的示范。

      由此可見,在現(xiàn)有的性能分析理論指導下,充分借鑒開源工具的技術和方法,開發(fā)自主的性能分析工具,是針對大規(guī)模數(shù)值模擬軟件性能分析的有效手段。

      2 設計與實現(xiàn)

      圖1 性能分析工具軟件框架

      如圖1所示,本文所設計的軟件框架主要包括三個部分:

      一是代碼植入模塊。該模塊首先基于PDTookit對被測程序的源代碼進行解析,識別源碼的特定語句,并在相應位置作出標記,保存為解析文件。通過設定采集信息的范圍,用戶可以選擇感興趣的部分代碼。接著,基于解析文件向被測程序植入具有信息采集和記錄功能的相關代碼,生成新的源碼文件,用戶通過庫介入的方式加載工具進行編譯,生成可執(zhí)行文件。最后,為了實時采集底層系統(tǒng)的參數(shù),將多個系統(tǒng)級分析模塊如CollectL、Darshan等以批處理腳本的方式做定制化集成,實現(xiàn)采集內存、磁盤讀寫、CPU使用率等系統(tǒng)狀態(tài)信息等功能。

      二是信息采集和處理模塊。被測程序運行過程中,由CPU硬件支持可以獲得系統(tǒng)狀態(tài)數(shù)據(jù),如物理內存、進程、CPU利用率情況。通過指令計數(shù)器可以對特定的系統(tǒng)事件進行統(tǒng)計,如浮點運算、L1/L2cache命中等。在軟件層面,通過插樁獲得函數(shù)運行時間和通信開銷、函數(shù)調用次數(shù)和調用關系等。這些數(shù)據(jù)將以計算節(jié)點為單位記錄在本地,從而建立起節(jié)點狀態(tài)和程序運行狀態(tài)的實時對應關系,為分析和優(yōu)化被測程序提供必要的信息。

      三是可視化模塊。高性能計算應用程序一般在多個計算節(jié)點上并發(fā)運行,包含了從數(shù)十到數(shù)百乃至成千上萬個并行進程,由分析工具產生的大量數(shù)據(jù)記錄僅靠人力進行逐條分析是十分困難的。借助于可視化工具對分析數(shù)據(jù)進行統(tǒng)計和整理,集成后處理工具Paraprof分析被測程序架構,生成函數(shù)調用關系示意圖?;赑API將生成的性能參數(shù)日志文件標準化,通過繪圖工具轉化為圖表,以簡潔直觀的方式呈現(xiàn)給用戶。

      3 測試結果與分析

      以典型的物理學大規(guī)模核聚變模擬軟件GTC為例,在E級計算機“天河三號”原型機上進行大規(guī)模性能分析測試,從而對本程序針對大規(guī)模高性能計算應用的分析能力進行驗證。

      3.1 測試軟件與環(huán)境

      測試系統(tǒng)選用E級計算機“天河三號”原型機,該系統(tǒng)采用“邁創(chuàng)”眾核處理器Matrix-2000+,麒麟Linux-3.14.57操作系統(tǒng),每個計算節(jié)點配備32核CPU,64GB內存,節(jié)點間采用自主天河高速互聯(lián)網絡連接。軟件環(huán)境方面基于GCC-4.9.1編譯器和MPICH-3.2.1并行庫,是非常具有代表性的高性能計算環(huán)境。

      GTC(Gyrokinetic Toroidal Code)是一種回旋動力學環(huán)形粒子模擬軟件。該軟件基于粒子云網格方法,主要用于研究模擬核聚變過程中多模式多尺度的全域等離子體湍流和運輸過程。GTC軟件基于C/Fortran語言,依賴于MPI并行編程環(huán)境,是超級計算平臺上典型的大規(guī)模并行數(shù)值軟件。本章測試中所求解的物理問題是磁約束聚變模擬中的“物理模擬”,基于第一性原理方程,通過大規(guī)模運算來預測等離子體的運動過程[7]。

      測試采用了GTC軟件的計算性能評估算例,共使用了1280個CPU核,在80個計算節(jié)點上運行作業(yè),每個計算節(jié)點上開啟16個進程,測試運行總時間為1小時18分。下面詳細說明測試結果和各類性能參數(shù)的分析情況。

      圖2 GTC程序結構圖

      3.2 測試結果

      (1)函數(shù)追蹤與系統(tǒng)狀態(tài)

      程序結構是軟件系統(tǒng)的抽象模式,用于指導軟件各個方面的設計和優(yōu)化。高性能計算應用程序結構相對復雜,代碼數(shù)量較大,所采用的編程語言也各不相同,依靠人力去總結和梳理程序結構十分困難?;陂_源的代碼識別庫構建程序結構分析模塊,自動生成函數(shù)之間的調用關系圖,為程序結構分析提供幫助。

      圖2展示了由結構分析模塊生成的GTC程序結構圖,可見該程序采用了非常簡潔清晰的結構化程序設計,自頂部向下共有4層結構。采用單向箭頭來表示函數(shù)的調用關系,同時也對這些函數(shù)在代碼中的位置做出了標記,以便于用戶查找和編輯代碼。程序結構圖可以顯示出程序的框架結構,但無法提供程序在時間上的實際運行軌跡,而這一功能可以通過函數(shù)追蹤來實現(xiàn)。

      圖3 函數(shù)追蹤界面

      圖3展示了函數(shù)追蹤功能的可視化頁面,橫軸表示時間,單位是秒,縱軸表示進程標號,矩形塊表示函數(shù)在時間軸上的覆蓋范圍。各個進程的函數(shù)運行情況基本相似,這里顯示編號為0-3的進程作為例子,選取了PUSHI、LOAD和CHARGEI三個函數(shù)分析,可以看出LOAD函數(shù)僅在程序初始的一段時間內執(zhí)行,而PUSHI和CHARGEI大約從200s開始執(zhí)行,直到程序結束,幾乎覆蓋了程序90%以上的運行時間。

      圖4 系統(tǒng)狀態(tài)信息界面

      圖4是通過系統(tǒng)級分析模塊所獲得的單節(jié)點系統(tǒng)狀態(tài)圖表,顯示了編號為0的節(jié)點上內存、CPU和網絡狀態(tài)信息??梢钥闯鯟PU核的使用率始終接近100%;單節(jié)點上的內存使用量逐漸增加,最后趨于穩(wěn)定,最高使用量為6.4GB,約占總內存的20%左右;網絡方面可以看出進程間的通信量極少,說明該程序更偏向與任務型并發(fā)模式。將這些信息與函數(shù)追蹤數(shù)據(jù)相結合,能夠幫助分析不同函數(shù)在系統(tǒng)層面上所表現(xiàn)出的特異性。

      (2)計算熱點與運算量分析

      計算熱點是指程序運行中耗時最多的部分,在一定程度上可以反映出應用的性能瓶頸,通過分析和優(yōu)化計算熱點,能夠有效地提升運行速度,因此計算熱點是軟件優(yōu)化中最重要的參考指標之一。

      圖5是GTC程序主要模塊的運行時間統(tǒng)計圖。其中Function坐標軸表示不同的模塊名稱;Process坐標軸表示不同的進程編號;Time坐標軸表示模塊運行總時間,單位是秒。從圖中可以看出,兩個計算熱點分別是PUSHI模塊和CHARGEI模塊,其中PUSHI模塊耗時最多,約占總運行時間的49.8%,CHARGEI模塊次之,約占總運行時間的32.1%。因此,針對這兩個模塊作進一步的負載分析和并行優(yōu)化是更有價值的。

      圖5 計算熱點分析界面

      浮點運算速度是衡量超級計算機性能的一項重要指標。對于一般的高性能計算應用而言,其計算密集程度不高,所以其浮點運算速度往往無法達到超級計算機的性能峰值。然而通過監(jiān)測某些計算密集的函數(shù)模塊來得到應用程序局部的浮點運算速度,可以對程序的實際運算能力做出有效評估。

      圖6是GTC程序主要模塊的浮點運算次數(shù)統(tǒng)計圖。其中Function、Process坐標軸分別表示模塊名稱和進程編號,而Counts坐標軸則表示模塊執(zhí)行浮點運算的總次數(shù)。從圖5可以看出,浮點運算次數(shù)最高的兩個模塊依然是PUSHI和CHARGEI模塊,說明這兩個模塊不僅最為耗時,而且具有非常高的計算負載量。結合圖5和圖6得出PUSHI和CHARGEI模塊在單位時間內的單核浮點運算量,即這兩個模塊實際運行中的運算速度表現(xiàn)。

      圖6 浮點運算速度分析界面

      4 結語

      本文提出了一種面向高性能計算的性能分析方法,參考代碼分析框架PDTookit和TAU的設計思想,基于PAPI、CollectL和Darshan等開源系統(tǒng)工具,設計并實現(xiàn)了一個綜合性強的自動化性能分析工具,能夠對高性能計算應用程序的運行狀態(tài)作出分析和評價,為用戶進一步優(yōu)化程序提供了全面、可靠的數(shù)據(jù)參考。下一步的工作一方面是分析和評估測試工具對被測程序的性能影響程度,盡量減小測試模塊的系統(tǒng)開銷;另一方面是基于采集到的各類信息進一步挖掘數(shù)據(jù)價值,向用戶提供更加完善和高質量的分析結果。

      猜你喜歡
      高性能工具程序
      波比的工具
      波比的工具
      試論我國未決羈押程序的立法完善
      人大建設(2019年12期)2019-05-21 02:55:44
      “程序猿”的生活什么樣
      “巧用”工具
      讀者(2017年18期)2017-08-29 21:22:03
      英國與歐盟正式啟動“離婚”程序程序
      一款高性能BGO探測器的研發(fā)
      電子制作(2017年19期)2017-02-02 07:08:49
      高性能砼在橋梁中的應用
      創(chuàng)衛(wèi)暗訪程序有待改進
      SATA推出全新高性能噴槍SATAjet 5000 B
      门头沟区| 正蓝旗| 河东区| 周至县| 兴文县| 西乡县| 维西| 灵璧县| 临朐县| 托克托县| 崇阳县| 霍山县| 平定县| 兰考县| 涟源市| 射洪县| 响水县| 叙永县| 延长县| 山西省| 嘉兴市| 内黄县| 桐城市| 汶上县| 潞城市| 仙桃市| 三原县| 大姚县| 凤翔县| 海伦市| 禹州市| SHOW| 屯门区| 太保市| 墨竹工卡县| 昌江| 海原县| 广灵县| 衢州市| 兴城市| 屏东市|