linpack

linpack

LINPACK是線性系統軟體包(Linear system package) 的縮寫, 主要開始于 1974 年 4 月, 美國 Argonne 國家實驗室套用數學所主任 Jim Pool, 在一系列非正式的討論會中評估,建立一套專門解線性系統問題之數學軟體的可能性。 後來便提出了 LINPACK 計畫案送到國家科學基金會 (National Science Foundation ) 審核, 經國家科學基金會同意並提供經費。

  • 中文名稱
    線性系統軟體包
  • 外文名稱
    Linear system package
  • 開始于
    1974年4月
  • 縮    寫
    linpack

引言

電腦硬體的不斷的升級帶來了系統處理性能持續的提高,如何的對平台的性能作出正確的判斷就是性能測試的主要目標,業界也有多種測試基準,有的是基于實際的套用種類如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的浮點計算能力有較大的提升,通過後續的軟硬體的參數的調優,平台的計算能力還會不同程度的提升。

相關詞條

其它詞條