概述
基準測試程式(Benchmark)用來測量機器的硬體最高實際運行性能,以及軟體最佳化的性能提升效果,可分為微基準測試程式(Microbenchmark)和宏基準測試程式(Macrobenchmark)。微基準測試程式用來測量一個計算機系統的某一特定方面,如CPU定點/浮點性能、存儲器速度、I/O速度、網路速度或系統軟體性能(如同步性能);宏基準測試程式用來測量一個計算機系統的總體性能或最佳化方法的通用性,可選取不同套用,如Web服務程式、數據處理程式以及科學與工程計算程式。
為了達到上述目標,基準測試程式需要滿足如下條件:首先。基準測試程式包含最常見的計算、通信和訪存模式,能夠為實際的應用程式預測不同高性能計算系統性能排名;其次,能指導高性能計算系統和套用的改進,亦即在基準測試程式上有效的最佳化方法能移植到實際套用中。
微基準測試程式
STREAM:由John McCalpin設計的測量持續存儲器頻寬和計算速度的測試程式,包含Copy、Scalar、Add和Traid四個函式,分別用來執行向量拷貝、向量更新拷貝、向量加法和向量更新。STREAM2包含Fill、Copy、Daxpy和Sum四個函式,分別用來執行向量賦值、向量拷貝、向量更新和向量求和。STREAM的指標為實測存儲器頻寬(MB/s)。
LMBENCH:用來測量OS開銷和處理器、快取、存儲器、網路以及磁碟之間的數據傳輸能力。
宏基準測試程式
Linpack:20世紀70年代中期開發了IAnpack軟體用於解線性方程,因為Linpack使用廣泛且其指標幾乎可以在所有參加測試的系統上得到,國際上一般用Linpack測試出的最高性能指標作為衡量機器性能的標準。每年兩次更新並發布的世界超級計算機500強排行榜(TOPS00)即按Linpack測試值排序。
Linpack測試包括三類:Linpack100、I。inpack1000和HPL。Linpack100求解規模為100階的稠密線性代數方程組,只允許採用編澤最佳化選項進行最佳化,不得更改代碼,甚至代碼中的注釋也不得修改。Linpack1000要求求解規模為1000階的線性代數方程組,達到指定的精度要求,可以在不改變計算量的前提下做算法和代碼上的最佳化。HPL(HighPerformance Linpack)對數組大小N沒有限制,求解問題的規模可以改變,除基本算法(計算量)不可改變外,可以採用其他任何最佳化方法。前兩種測試運行規模較小,已不適合現代計算機的測試,因此現在所稱的Linpack即指HPL。HPL採用高斯消元法求解線性方程組,當求解問題規模為N時,浮點運算次數為(2/3)N²—2N²。因此,只要給出問題規模N,測得系統計算時間丁,峰值即為計算量與計算時間之比,測試結果以每秒百萬浮點運算次數給出。
HPCG(High Performance Conjugate Gradient):隨著高性能套用的不斷發展,其性能與HPL所測的結果(主要是系統利用率)相差較大,這主要是由於HPL包含大量稠密矩陣計算,具有良好的數據局部性,容易開發並行性和局部性,但並不能代表其他大量實際套用中常見的不易擴展和開發局部性的稀疏計算和訪存模式。HPCG是求解稀疏矩陣方程組的一種疊代算法,使用局部對稱Gauss—Seidel預條件子的預處理共軛梯度法,主要數據為對稱正定稀疏矩陣,每一個計算循環需要調用稀疏矩陣向量乘、預條件子、向量更新和向量內積操作。覆蓋了常用的計算和通信模式。HPCG類似HPL,允許使用多種最佳化方法調優,例如新的稀疏矩陣格式等。
Graph500類似HPCG,是另一種對Linpack測試程式的補充,包含圖論中的典型算法,如廣度優先搜尋、最短路徑和最大獨立集等。Graph500用來測試超算系統的非規則數據處理能力。與HPL和HPCG不同,Graph500測試程式用每秒遍歷邊數(Traversed Edges Per Second,TEPS)來衡量計算能力,並類似TOP500,每年發布兩次超算系統的Graph500排行榜。
NPB(NAS Parallel Benchmark):包含了主要的幾種科學計算程式,即5個計算流體力學(CFD)中的核心函式:EP(Embarrassingly Parallel)——具有完全並行性的一種蒙特卡洛方法,MG(MultiGrid)——多重格線方法,CG(Conjugate Gradient)——共軛梯度法,FT(FFT)——三維快速傅立葉算法,IS——整數排序方法,以及三個模擬CFD程式:LU利用SSOR方法求解稀疏方程組,SP利用對角方程組求解,BT利用塊三對角矩陣求解。與Linpack一樣,NPB允許最佳化算法。
SPEC、SPLASH和PARSEC包含一組實際套用的基準程式以反映實際工作負載。
SPEC(Standard Performance Evaluation Corporation)的早期版本SPEC95包含8個C語言編寫的整數程式,包括排序和編譯等程式,以及10個用Fortran語言編寫的科學計算典型問題的浮點程式,其最終指標為這些程式運行時間與標準參考時問之比的幾何平均值。PARSEC(Princeton Application Repository for Shared—Memory Computer)包含一組模式識別和數據挖掘套用領域中的多執行緒程式,覆蓋了不同的工作集、局部性、數據共享、同步以及頻寬需求特徵,用來測試多核性能。