linpack
可解決線性系統問題的數學軟體
LINPACK是線性系統軟體包(Linear system package) 的縮寫,主要開始於 1974 年 4 月,美國 Argonne 國家實驗室應用數學所主任 Jim Pool,在一系列非正式的討論會中評估,建立一套專門解線性系統問題之數學軟體的可能性。後來便提出了 LINPACK 計劃案送到國家科學基金會 (National Science Foundation ) 審核,經國家科學基金會同意並提供經費。
計算機硬體的不斷的升級帶來了系統處理性能持續的提高,如何的對平台的性能作出正確的判斷就是性能測試的主要目標,業界也有多種測試基準,有的是基於實際的應用種類如TPC-C,有的是測試系統的某一部分的性能,如測試硬碟吞吐能力的IOmeter,測試內存帶寬的stream。
LINPACK主要的特色是:
v 率先開創了力學 (Mechanics) 分析軟體的製作。
v 建立了將來數學軟體比較的標準。
v 提供軟體鏈接庫,允許使用者加以修正以便處理特殊問題, (當然程序名稱必須改寫,並應註明修改之處,以尊重原作者,並避免他人誤用。)
v 兼顧了對各計算機系統的通用性,並提供高效率的運算。
至目前為止, LINPACK 還是廣泛地應用於解各種數學和工程問題。也由於它高效率的運算,使得其它幾種數學軟體例如IMSL、 MATLAB 紛紛加以引用來處理矩陣問題,所以足見其在科學計算上有舉足輕重的地位。
Linpack現在在國際上已經成為最流行的用於測試高性能計算機系統浮點性能的benchmark。通過利用高性能計算機,用高斯消元法求解N元一次稠密線性代數方程組的測試,評價高性能計算機的浮點性能。
Linpack測試包括三類,Linpack100、Linpack1000和HPL。Linpack100求解規模為100階的稠密線性代數方程組,它只允許採用編譯優化選項進行優化,不得更改代碼,甚至代碼中的註釋也不得修改。Linpack1000要求求解規模為1000階的線性代數方程組,達到指定的精度要求,可以在不改變計算量的前提下做演演算法和代碼上做優化。HPL即High Performance Linpack,也叫高度并行計算基準測試,它對數組大小N沒有限制,求解問題的規模可以改變,除基本演演算法(計算量)不可改變外,可以採用其它任何優化方法。前兩種測試運行規模較小,已不是很適合現代計算機的發展,因此現在使用較多的測試標準為HPL,而且階次N也是linpack測試必須指明的參數。
HPL是針對現代并行計算機提出的測試方式。用戶在不修改任意測試程序的基礎上,可以調節問題規模大小N(矩陣大小)、使用到的CPU數目、使用各種優化方法等來執行該測試程序,以獲取最佳的性能。HPL採用高斯消元法求解線性方程組。當求解問題規模為N時,浮點運算次數為(2/3 * N^3-2*N^2)。因此,只要給出問題規模N,測得系統計算時間T,峰值=計算量(2/3 * N^3-2*N^2)/計算時間T,測試結果以浮點運算每秒(Flops)給出。
計算峰值
隨著產品硬體的不斷的升級,整個的計算能力也以數量級的速度提升。衡量計算機性能的一個重要指標就是計算峰值,例如浮點計算峰值,它是指計算機每秒鐘能完成的浮點計算最大次數。包括理論浮點峰值和實測浮點峰值:
理論浮點峰值是該計算機理論上能達到的每秒鐘能完成浮點計算最大次數,它主要是由CPU的主頻決定的,
理論浮點峰值=CPU主頻×CPU每個時鐘周期執行浮點運算的次數×系統中CPU核心數目
實測浮點峰值是指Linpack測試值,也就是說在這台機器上運行Linpack測試程序,通過各種調優方法得到的最優的測試結果。實際上在實際程序運行過程中,幾乎不可能達到實測浮點峰值,更不用說達到理論浮點峰值了。這兩個值只是作為衡量機器性能的一個指標,用來表明機器處理能力的一個標尺和潛能的度量。
準備硬體平台的配置
升級到最新的BIOS、BMC等版本
調整對性能有影響的參數設置
操作系統的準備。由於OS自身也會佔用系統資源,因此一般會使用linux作為linpack測試的OS平台,採用最新的內核版本的linux,這樣可以充分的發揮出硬體的新的特性,發揮出平台的計算性能;在系統啟動后,將一些沒有必要的系統守護進程去掉,可以運行ntsysv命令,關閉除了irqbalance 和 messagebus.之外的系統服務進程,也可以節省系統的資源;並且將操作系統啟動到第3級,不要進入圖形方式。3、linpack的參數設置
運算階數N的選擇。
由於在計算的過程中,會分配、佔有一定的內存空間,因此依據內存容量合適的設置N的數值,會得到較為準確的計算性能數據。如果N設置較小,內存不能充分利用,則處理能力不能發揮;如果N設置較大,內存空間不能滿足需求,則需要經常的執行硬碟讀寫,從而會有處理器的等待時間,計算時間會延長,測試得到計算性能結果也會受到影響。根據內存容量大小,對應的N的數值有如下的參考關係。
例如在內存容量為4G時,設置N為22000較為合理,這樣內存分配較為合理,因此在22000階時,可能得到最大計算性能值。
配置文件的編寫。
下面是linpack運行的參數配置文件的例子,其中包括一個參數。
v 計算的點數,原則上是計算的點數越多,則會遍歷多種計算的性能情況,更能找到最好的性能點,但是點數越多則運算時間越長。
v 點數的分佈。即設定幾個不同的階數值,一般是在N附近的時候的階數分佈較為密,以便找到最佳性能數據。
v 每個計算點的計算次數,為了減少測試誤差,增加每點的計算次數取其平均值,得到比較可信的性能數據。
v 設置內存的對齊尺寸,內存分配的時候的內存對其方式,可以提高內存的讀取的效率,提高性能測試結果,但是設置過大會產生一定的內存空間的浪費,一般為4KB或8KB
Intel提供了基於IA架構平台優化后的可執行版本3.0.1,不需要下載源代碼再通過編譯器,編譯優化,因此使用起來比較的簡單和方便。現在可以執行的平台有
xlinpack_itanium 在64位安騰2平台上的可執行程序
xlinpack_xeon32 在32位至強DP和至強MP平台上可執行程序,同時可支持有或沒有SSE3指令集的情況。
xlinpack_xeon64 可運行在64位擴展技術的至強平台上
xlinpack_mc64 運行在Intel Core 2 Duo和Woodcrest新一代處理器上的程序。.
可以編寫一個shell的腳本文件,這樣可以靈活的控制運行的過程,運行結果的記錄等。例如下面的腳本文件的例子,先設置系統內的對稱多處理器的數目,在使用參數設置文件的參數運行linpack,並把結果輸出到一個文本文件內。
#export OMP_NUM_THREADS=2 echo "This is a SAMPLE run script. Change it to reflect the correct number"echo "of CPUs/threads, problem input files, etc.." datedate > lin_xeon32.txt./xlinpack_xeon32 lininput_xeon32 >> lin_xeon32.txtdate >> lin_xeon32.txtecho -n "Done: "date |
根據上面的運行腳本文件,運行結果輸出到文件lin_xeon32.txt內。
利用此工具對NP370D產品做了計算性能的測試,內存使用相同的4G容量,結果如下:
配置 OS及版本 計算次數(GFlops)Dempsey 3.0*2 Linux 4U1 12.6854Woodcrest 1.86*2 Linux 4U1 16.4117Woodcrest 2.66*2 Linux 4U1 23.1015 |
從測試數據看,woodcrest處理器比dempsey的浮點計算能力有較大的提升,通過後續的軟硬體的參數的調優,平台的計算能力還會不同程度的提升。