LINPACK測试
1簡單介紹
LINPACK是線性系統軟件包(Linearsystempackage)的縮寫。
Linpack如今在國際上已經成為最流行的用于測試高性能計算機系統浮點性能的benchmark。通過利用高性能計算機。用高斯消元法求解一元N次稠密線性代數方程組的測試。評價高性能計算機的浮點性能。
Linpack測試包含三類,Linpack100、Linpack1000和HPL。
Linpack100求解規模為100階的稠密線性代數方程組。它僅僅同意採用編譯優化選項進行優化。不得更改代碼,甚至代碼中的凝視也不得改動。Linpack1000要求求解規模為1000階的線性代數方程組。達到指定的精度要求,能夠在不改變計算量的前提下做算法和代碼上做優化。
HPL即HighPerformanceLinpack,也叫高度并行計算基準測試。它對數組大小N沒有限制,求解問題的規模能夠改變。除基本算法(計算量)不可改變外,能夠採用其他不論什么優化方法。前兩種測試執行規模較小,已不是非常適合現代計算機的發展,因此如今使用較多的測試標準為HPL。并且階次N也是linpack測試必須指明的參數。
LINPACK壓力測試的目的主要為檢測系統中CPU的工作的穩定性及內存訪問的穩定性。
2測試分類
Linpack測試分為兩種測試方式,一單板測試二集群測試
3測試前的準備
為了提高CPU訪問的內存的效率。及減少頁表占用CPU資源。採用內存hugepage,系統進程是通過虛擬地址訪問內存??墒荂PU必須把它轉換成物理內存地址才干真正訪問內存。為了提高這個轉換效率,CPU會緩存近期的虛擬內存地址和物理內存地址的映射關系,并保存在一個由CPU維護的映射表中。
為了盡量提高內存的訪問速度,須要在映射表中保存盡量多的映射關系。
而在Linux中。內存都是以頁的形式劃分的。默認情況下每頁是4K。這就意味著假設物理內存非常大,則映射表的條目將會非常多,會影響CPU的檢索效率。
由于內存大小是固定的,為了降低映射表的條目,可採取的辦法僅僅有添加頁的尺寸。這樣的增大的內存頁尺寸在Linux2.1中,稱為Bigpage;在AS3/4中,稱為Hugepage。
假設系統有大量的物理內存(大于8G),則物理32位的操作系統還是64位的,都應該使用Hugepage。
注意:使用Hugepage內存是共享內存,它會一直keep在內存中的,不會被交換出去。也就是說使用hurgepage的內存不能被其它的進程使用,所以。一定要合理設置這個值,避免造成浪費。
所以在進行測試之前,一定要確保系統內核支持Hugepage內存分頁。
4測試步驟
第一部分:環境設置
1設置內存大頁面
#umount/mnt
首先將暫時掛載文件夾的文件夾/mnt卸載
#mount-thugetlbfsnone/mnt
掛載一個大頁面系統,將hugetlbfs掛載到/mnt文件夾
#echo3>/proc/sys/vm/drop_caches
通過改動proc系統的drop_caches清理free的cach
#echo80>/proc/sys/vm/nr_hugepages
設置大頁面的數量
計算方式:
1確定物理內存的大小
2確定大頁面單頁的大小
大頁面單頁的大小,能夠在內核中進行設置。查看方式:
#cat/proc/meminfo|grephuge
注|:大頁面被設置后。這部分內存就會被占用,不能被其它程序所調用。建議大頁面的容量應該在物理內存的80%左右。
比如:物理內存為4G。單頁的大小為32M,則大頁的數量應該設置為:4*1024*80%除以32為102.,大頁面的數量在102左右。
原則上不超過這個值。
2PATH設置
MPICH
提供并行環境的軟件
1、下載mpich2.tar.gz壓縮包,將其放在制定的文件夾下(這里以放在/usr/local/文件夾下為
例)。
2、進入mpich2.tar.gz所在的文件夾,運行例如以下命令:
#tarxfmpich2.tar.gz–C/usr/local/
能夠通過#whichmpirun;whichmpiexec來check是否成功安裝
3、設置PATH環境變量
#exportPATH=/usr/local/mpich2/bin:$PATH
4、配置/etc/mpd.conf文件
#echo“secretword=loongson”>/etc/mpd.conf
Secretword是你的密鑰,是每臺機臺進行并行環境執行的基礎。
#chmod600/etc/mpd.conf
設置mpd.conf文件的權限
注:這是單板測試,假設在集群測試中,每一個Node都必須加入該文件,而且設置文件的權限
5、運行mpd&命令。
#mpd&
單機時啟動MPI的命令,假設為集群測試,此處有改動,參見以下文檔。
3
執行單板測試
在進行測試之前,須要進行HPL優化設置。
HPL的設置說明:
假設編譯正常。在hpl/bin/Linux_xeon文件夾下就會生成兩個文件HPL.dat和xhpl。HPL.dat文件是Linpack測試的優化配置文件,這個對測試的結果十分重要。xhpl為可運行程序。
假設是集群測試,就將linpack文件夾拷貝到機群中其余節點同樣的文件夾下。注:公司提供的linpack為編譯完畢的,不在須要又一次編譯。
第1行HPLinpackbenchmarkinputfile
第2行InnovativeComputingLaboratory,UniversityofTennessee
前兩行為說明性文字,不用作改動
第3行HPL.outoutputfilename(ifany)
第4行6deviceout(6=stdout,7=stderr,file)
deviceout"為"6"時,測試結果輸出至標準輸出(stdout)
"deviceout"為"7"時,測試結果輸出至標準錯誤輸出(stderr)
"deviceout"為其他值時,測試結果輸出至第三行所指定的文件里
能夠通過設置此處用來保存測試結果。
第5行1#ofproblemssizes(N)
選擇矩陣的數量如1則為第一個矩陣。
第6行1024026680288003072029303435Ns
矩陣的規模N越大,有效計算所占的比例也越大,系統浮點處理性能也就越高;但與此同一時候,矩陣規模N的添加會導致內存消耗量的添加。一旦系統實際內存空間不足,使用緩存、性能會大幅度減少。
因為之前採用了大頁面內存系統,所以此處計算規模的大小,應以設置的大頁面內存總量做計算。計算方式為:N*N*8=大頁內存總量*0.8,內存總量換算為字節。
并且規模的大小最好為384的倍數。
第7行1#ofNBs
第8行128234NBs
提高數據的局部性,從而提高總體性能。HPL採用分塊矩陣的算法。
分塊的大小對性能有非常大的影響。NB的選擇和軟硬件很多因素密切相關。
NB值的選擇主要是通過實際測試得到最優值。但NB的選擇上還是有一些規律可尋,如:NB不可能太大或太小,一般在256下面;NB×8一定是Cacheline的倍數等。
比如,我們的L2cache為1024K,NB就設置為192另外。NB大小的選擇還跟通信方式、矩陣規模、網絡、處理器速度等有關系。一般通過單節點或單CPU測試能夠得到幾個較好的NB值,但當系統規模添加、問題規模變大,有些NB取值所得性能會下降。所以最好在小規模測試時選擇3個左右性能不錯的NB。再通過大規模測試檢驗這些選擇。此處一般選擇128。
第9行1PMAPprocessmapping(0=Row-,1=Column-major)
選擇處理器陣列是按列的排列方式還是按行的排列方式。
按HPL文檔中介紹,按列的排列方式適用于節點數較多、每一個節點內CPU數較少的系統;而按行的排列方式適用于節點數較少、每一個節點內CPU數較多的大規模系統。在機群系統上,按列的排列方式的性能遠好于按行的排列方式。
此處一般選擇1
第10行3#ofprocessgrids(PxQ)
第11行214Ps
第12行241Qs
)第10~12行說明二維處理器網格(P×Q)。二維處理器網格(P×Q)的有下面幾個要求。
P×Q=系統CPU數=進程數。一般來說一個進程對于一個CPU能夠得到最佳性能。對于IntelXeon來說,關閉超線程能夠提高HPL性能。P≤Q;一般來說,P的值盡量取得小一點,由于列向通信量(通信次數和通信數據量)要遠大于橫向通信。P=2n,即P最好選擇2的冪。HPL中,L分解的列向通信採用二元交換法(BinaryExchange)。當列向處理器個數P為2的冪時,性能最優。比如,當系統進程數為4的時候,P×Q選擇為1×4的效果要比選擇2×2好一些。在集群測試中,P×Q=系統CPU總核數。如系統為總核數為16核,則P*Q值應該為4.
第13行16.0threshold
第13行說明測試的精度。這個值就是在做完線性方程組的求解以后。檢測求解結果是否正確。若誤差在這個值以內就是正確,否則錯誤。一般而言,若是求解錯誤,其誤差非常大;若正確,則非常小。
所以沒有必要改動此值
第14行1#ofpanelfact
第15行012PFACTs(0=left,1=Crout,2=Right)
第16行2#ofrecursivestoppingcriterium
第17行24NBMINs(>=1)
第18行1#ofpanelsinrecursion
第19行2NDIVs
第20行3#ofrecursivepanelfact.
第21行012RFACTs(0=left,1=Crout,2=Right)
第14~21行指明L分解的方式。在消元過程中。zHPL採用每次完畢NB列的消元。然后更新后面的矩陣。這NB的消元就是L的分解。每次L的分解僅僅在一列處理器中完畢。
對每個小矩陣作消元時,都有3種算法:L、R、C,分別代表Left、Right和Crout。
在LU分解中。詳細的算法非常多,測試經驗,NDIVs選擇2比較理想,NBMINs4或8都不錯。而對于RFACTs和PFACTs,對性能的影響不大。在HPL官方文檔中。推薦的設置為:
1#ofpanelfact
1PFACTs(0=left,1=Crout,2=Right)
2#ofrecursivestoppingcriterium
48NBMINs(>=1)
1#ofpanelsinrecursion
2NDIVs
1#ofrecursivepanelfact.
2RFACTs(0=left,1=Crout,2=Right)
第22行1#ofbroadcast
第23行0BCASTs(0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
第22、23行說明L的橫向廣播方式。HPL中提供了6種廣播方式。當中。前4種適合于快速網絡;后兩種採用將數據分割后傳送的方式。主要適合于速度較慢的網絡。眼下。機群系統一般採用千兆以太網甚至光纖等快速網絡,所以一般不採用后兩種方式。一般來說。在小規模系統中,選擇0或1;對于大規模系統。選擇3。推薦的配置為:
2#ofbroadcast
3BCASTs(0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
第24行1#oflookaheaddepth
第25行0DEPTHs(>=0)
第24、25行說明橫向通信的通信深度。
這依賴于機器的配置和問題規模的大小,推薦配置為:
2#oflookaheaddepth
01DEPTHs(>=0)
第26行0SWAP(0=bin-exch,1=long,2=mix)
第27行32swappingthreshold
第26、27行說明U的廣播算法。U的廣播為列向廣播,HPL提供了3種U的廣播算法:二元交換(BinaryExchange)法、Long法和二者混合法。SWAP="0",採用二元交換法;SWAP="1",採用Long法;SWAP="2",採用混合法。
推薦配置為:
2SWAP(0=bin-exch,1=long,2=mix)
60swappingthreshold
第28行0L1in(0=transposed,1=no-transposed)form
第29行0Uin(0=transposed,1=no-transposed)form
第28、29行分別說明L和U的數據存放格式。若選擇"transposed",則採用按列存放,否則按行存放。推薦配置為:
0L1in(0=transposed,1=no-transposed)form
0Uin(0=transposed,1=no-transposed)form
第30行1Equilibration(0=no,1=yes)
第30行主要在回代中使用,一般使用其默認值
第31行8memoryalignmentindouble(>0)
第31行的值主要為內存地址對齊而設置,用于在內存分配中對齊地址。
出于安全考慮,能夠選擇8
執行
一、單進程(即4核4線程)情況
直接運行./xhpl就可以;
二、兩進程(即8核8線程)情況:
#mpirun-np2./xhpl
集群測試
配置環境
各板子配置ssh免password登錄
系統一般已經啟用了SSH服務,
1#:cd~/.ssh
進入系統保存SSH密鑰的文件夾
2#:ssh-keygen-trsa
生成私鑰
3:cpid_rsa.pubauthorized_keys
id_rsa_pub是與本機上面的私鑰能夠對上號的公鑰。
因為每臺機器既要當作SSHserver又要當作SSHclient。因此我們須要做的就是將這對公鑰和私鑰分發給每臺機器??墒鞘紫缺仨殞⒐€的文件名稱改成"authorized_keys"
4:scp*test@192.168.1.2:~/.ssh/
將私鑰和公鑰分發到各個子板。通過遠程CP將私鑰和公鑰拷貝到各個子板的.ssh文件夾下。用來實現各節點之間的免passwordSSH登陸。
5嘗試能否夠實現無password登陸。
使用SSHxx.xx.xx.xx或者SSH主機名的方式check是否實現免password登陸
設置主機名映射和IP
準備確保網絡環境是能夠聯通的。能夠設置各節點的網卡的靜態IP,及各節點的主機名稱。
命令為:hostnametest1
編輯各子板/etc/hosts文件。加入各子板IP與主機名映射。
VI/etc/hosts文件。格式例如以下:
192.168.1.1test1
192.168.1.2test2
注意各個節點都應該加入該文件
文件m,加入要聯跑的主機名(一行寫一個)
格式為:test1
Test2
能夠通過mpdboot–n【主機名】-fm來驗證并行環境是否建立。
配置測試環境
集群測試環境的配置和單板一致。但必須確保每一個節點的環境一致。
須要注意的是:在啟動MPI并行環境時,應採用執行
mpdboot-n[主機數量]-fm
編輯HPL.dat文件。更改規模,Ps。Qs值,
規則:1.Ps<Qs
Ps為2的n次方。
Ps*Qs=聯跑主機的總核數/4
規模計算方法:
mpi分配計算量是每一個板子一樣的。
應該依照內存最小子板的大頁數來計算規模的大小
執行
執行mpiexec-n[Ps*Qs的值]./xhpl
總結
- 上一篇: 李佳琦为“怼网友”致歉:让大家失望了,诚
- 下一篇: MySQL 存储过程