linpack测试工具使用说明
目錄
1. linpack測試工具
1.1. linpack簡介
1.2. mpi簡介
2. linpack配置文件及參數(shù)含義
2.1. 概覽
2.2. HPL.dat參數(shù)分析
3. linpack使用及結(jié)果分析
3.1. linpack編譯運(yùn)行
3.2. linpack結(jié)果分析
3.2.1. linpack結(jié)果效率計(jì)算
3.2.2. 占用內(nèi)存空間
4. linpack調(diào)試參數(shù)的一些心得
5. 使用pts運(yùn)行l(wèi)inpack
5.1. 安裝pts
5.2. 運(yùn)行l(wèi)inpack
全稱為線性系統(tǒng)軟件包(Linear system package) 。
剛開始是一套專門解線性系統(tǒng)問題之?dāng)?shù)學(xué)軟件;現(xiàn)在在國際上已經(jīng)成為最流行的用于測試高性能計(jì)算機(jī)系統(tǒng)浮點(diǎn)性能的benchmark。
完成的任務(wù):
通過利用高性能計(jì)算機(jī),用高斯消元法求解N元一次稠密線性代數(shù)方程組的測試,評價(jià)高性能計(jì)算機(jī)的浮點(diǎn)性能(Ax=B)。測試分成三類,Linpack100、Linpack1000和HPL。前兩者限制了規(guī)模;HPL即High Performance Linpack,也叫高度并行計(jì)算基準(zhǔn)測試,可以通過調(diào)整數(shù)組大小N等各參數(shù)進(jìn)行優(yōu)化。
全稱為消息傳遞接口(Message passing interface),是一個跨語言的通訊協(xié)議,也是高性能計(jì)算領(lǐng)域開發(fā)并行應(yīng)用的標(biāo)準(zhǔn)API。
? 超算的高性能使用方式即是通過編程,使得作業(yè)具有多節(jié)點(diǎn)協(xié)作的能力,而多個節(jié)點(diǎn)之間的協(xié)作是通過MPI來實(shí)現(xiàn)的。通過調(diào)用MPI并行庫實(shí)現(xiàn)的方法來實(shí)現(xiàn)并行化,只需要安裝MPI庫,那么就可以用原來的編譯器來進(jìn)行編譯運(yùn)行。高性能、大規(guī)模性和可移植性。有多種實(shí)現(xiàn)版本,如 MPICH,OpenMPI以及CHIMP等。
HPL.dat——linpack測試中各個參數(shù)配置
run.sh——運(yùn)行文件
setlargepage.sh——內(nèi)存大頁設(shè)置
linpack.log——結(jié)果記錄文檔
| HPLinpack benchmark input file Innovative Computing Laboratory, University of Tennessee 說明性文字,不需作修改。 |
| HPL.out ????output file name (if any) 6 ??????????????device out (6=stdout,7=stderr,file) "device out"為"6"時(shí),測試結(jié)果輸出至標(biāo)準(zhǔn)輸出(stdout); "device out"為"7"時(shí),測試結(jié)果輸出至標(biāo)準(zhǔn)錯誤輸出(stderr); "device out"為其它值時(shí),測試結(jié)果輸出至第三行所指定的文件中。 |
| 1 ???????????# of problems sizes (N)???#矩陣的數(shù)量,如1即一個矩陣。 105728 91392 73248 51744 44800 ???????Ns 問題規(guī)模大小Ns值,Ns×Ns×8=系統(tǒng)總內(nèi)存(Byte)×80%計(jì)算出的Ns一般為最大規(guī)模。 |
| 1 ???????????# of NBs 測試塊的個數(shù)。 |
| 112 120 128 ?NBs 系數(shù)矩陣被分成NBs*NBs的循環(huán)塊被分配到各個進(jìn)程當(dāng)中去處理,NBs大小作為計(jì)算粒度, ?在很大程度上影響了計(jì)算性能的優(yōu)劣;NBs最佳的取值在[32 ,256],取值大小由計(jì)算規(guī)模及平臺來決定;NBs*8=Cache line的倍數(shù)。 |
| 0 ???????????PMAP process mapping (0=Row-,1=Column-major) 處理器陣列形式。0為按行,1為按列;按行的排列方式適用于節(jié)點(diǎn)數(shù)較少、每個節(jié)點(diǎn)內(nèi)CPU數(shù)較多的大規(guī)模系統(tǒng);按列的排列方式適用于節(jié)點(diǎn)數(shù)較多、每個節(jié)點(diǎn)內(nèi)CPU數(shù)較少的系統(tǒng);在機(jī)群系統(tǒng)下,按列排列方式較好。 |
| 1 ??????????????# of process grids (P x Q) 2 2 1 4 ?????Ps 8 2 4 1 ?????Qs Ps × Qs為二維處理器網(wǎng)格,Ps與橫向通信量有關(guān),Qs與列向通信量有關(guān);Ps*Qs=系統(tǒng)CPU數(shù)=進(jìn)程數(shù);Qs/4≤P≤Qs時(shí),性能較優(yōu)。因?yàn)榱邢蛲ㄐ帕?#xff08;通信次數(shù)和通信數(shù)據(jù)量)要遠(yuǎn)大于橫向通信; ?Ps為2的冪。 |
| 16.0 ????????threshold 說明測試的精度。用于檢測線性方程組求解結(jié)果是否正確;若誤差在這個值以內(nèi)就是正確,否則錯誤。所以沒有必要修改此值。 |
| 1 ???????????# of panel fact 1 1 2 ???????PFACTs (0=left, 1=Crout, 2=Right) 1 ???????????# of recursive stopping criterium 4 2 ?????????NBMINs (>= 1) 1 ???????????# of panels in recursion 2 ???????????NDIVs 1 ???????????# of recursive panel fact. 1 0 2 ???????RFACTs (0=left, 1=Crout, 2=Right) 指明L分解的方式。在消元過程中,zHPL采用每次完成NB列的消元,然后更新后面的矩陣。 ?NB的消元就是L的分解;每次L的分解只在一列處理器中完成。對每一個小矩陣作消元時(shí),都有3種算法:L、R、C,分別代表Left、Right和Crout;NDIVs選擇2比較理想,NBMINs 4或8都不錯;RFACTs和PFACTs,對性能的影響不大。 |
| 1 ???????????# of broadcast 0 ???????????BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM) HPL中提供了6種廣播方式。前4種適合于快速網(wǎng)絡(luò);后兩種采用將數(shù)據(jù)切割后傳送的方式,主要適合于速度較慢的網(wǎng)絡(luò)。機(jī)群系統(tǒng)一般采用千兆以太網(wǎng)甚至光纖等高速網(wǎng)絡(luò),所以一般不采用后兩種方式。一般來說,在小規(guī)模系統(tǒng)中,選擇0或1;對于大規(guī)模系統(tǒng),選擇3。 |
| 1 ???????????# of lookahead depth 1 ???????????DEPTHs (>=0) 說明橫向通信的通信深度。這依賴于機(jī)器的配置和問題規(guī)模的大小。 |
| 0 ???????????SWAP (0=bin-exch,1=long,2=mix) 256 ???????swapping threshold 說明U的廣播算法。U的廣播為列向廣播,HPL提供了3種U的廣播算法:SWAP="0",采用二元交換(Binary Exchange)法;SWAP="1",采用Long法;SWAP="2",采用二則混合法。 |
| 1 ???????????L1 in (0=transposed,1=no-transposed) form 1 ???????????U ?in (0=transposed,1=no-transposed) form 分別說明L和U的數(shù)據(jù)存放格式。若選擇"transposed",則采用按列存放,否則按行存放。 |
| 0 ???????????Equilibration (0=no,1=yes)……主要在回代中使用,一般使用其默認(rèn)值 8 ???????????memory alignment in double (> 0) ……主要為內(nèi)存地址對齊而設(shè)置,用于在內(nèi)存分配中對齊地址。出于安全考慮,可以選擇8 |
-n 8:8為需要修改的核心數(shù),需要修改核心數(shù)使其與HPL.dat中的Ps*Qs的值相同。
以下為內(nèi)存大頁設(shè)置
運(yùn)行步驟:
1. ??vim HPL.dat,修改參數(shù)值
2. ??vim run.sh,修改核心數(shù)
3. ??./run.sh,運(yùn)行
4. ??運(yùn)行結(jié)束后,輸入cat linpack.log查看結(jié)果然后計(jì)算效率。
linpack結(jié)果記錄文檔
GFLOPS:全稱為Giga Floating-point Operations Per Second,即每秒10億次的浮點(diǎn)運(yùn)算數(shù),常作為GPU性能參數(shù)。
理論峰值=主頻率*核心數(shù)*每周期浮點(diǎn)運(yùn)算次數(shù)
效率=實(shí)際峰值/理論峰值*100%
舉例計(jì)算上圖效率:
理論峰值=2.4GHz*2(核心數(shù))*16(每周期浮點(diǎn)運(yùn)算次數(shù))=76.8GFlops
效率=51.80/76.8*100%=67.4%
因?yàn)樵O(shè)置了內(nèi)存大頁,所以通過輸入free -h命令查看的內(nèi)存大小不會發(fā)生變化。
所以通過top命令查看,占用內(nèi)存空間=單個進(jìn)程使用的虛擬內(nèi)存量*進(jìn)程數(shù)。
占用內(nèi)存空間=單個進(jìn)程使用的虛擬內(nèi)存量*進(jìn)程數(shù)=11.8G*8=94.4G
結(jié)論一:通過調(diào)節(jié)矩陣規(guī)模N,可小幅度提升效率
結(jié)論二:P和 Q 接近時(shí)有利于進(jìn)程之間的負(fù)載平衡 ,行列方向通信能夠保持平衡 ,否則可能同一對處理器之間要進(jìn)行大量消息的通信;在 此前提下,P要稍小于 Q,因?yàn)楦鶕?jù) Linpack的算法,列向通信量要大于行向通信量,使列向的進(jìn)程稍多一些可以減少通信開銷。以上是官方解釋,但實(shí)際測試結(jié)果是在32核情況下,2*16的效率優(yōu)于4*8,16核也是這樣。
結(jié)論三:其余參數(shù)在調(diào)試的時(shí)候,例如:當(dāng)只變化某一個參數(shù)的時(shí)候,在某一核下效率提高,其他核就未必,因此參數(shù)之間的規(guī)律目前還沒找到。
#tar xf phoronix-test-suite-10.8.2.tar.gz
#cd phoronix-test-suite/
#./install-sh
#phoronix-test-suite benchmark hpl
注:打開另一個終端,可看到xhpl進(jìn)程運(yùn)行中即可,ctrl + c切斷,以下可通過pts框架安裝好的hpl進(jìn)行配置文件的靈活修改
目錄位置:/var/lib/phoronix-test-suite/installed-tests/pts/hpl-1.0.0/hpl-2.3/testing
測試命令為:/usr/lib64/openmpi/bin/mpirun --allow-run-as-root -np 128(核數(shù)) ./xhpl
總結(jié)
以上是生活随笔為你收集整理的linpack测试工具使用说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯AI Lab NLP团队首次曝光,张
- 下一篇: Axiom3D学习日记 0.Axiom基