劉志廣,占 偉,孟憲剛,宋惠軍
(中國地震局第一監測中心,天津 300180)
GAMIT解算海量GPS數據是一個非常耗時的過程,對計算機的運算速度、穩定性有很高要求。“天河一號”的誕生為GPS數據解算提供了一個嶄新的計算平臺。
為研究超級計算機在GPS數據解算領域的應用前景,我們在“天河一號”計算平臺安裝了GAMIT 10.40,測試“天河一號”上GAMIT的計算效率,并與其它計算平臺作對比分析。
“天河一號”(TH-1A)超級計算機是我國首臺千萬億次超級計算機系統,實現了我國自主研制超級計算機能力從百萬億次到千萬億次的跨越,使我國成為繼美國之后世界上第二個能夠研制千萬億次超級計算機的國家。
“天河一號”于2010年8月在國家超級計算天津中心升級完成,峰值速度提升為4700TFlops,持續速度提升為2566TFlops(LINPACK實測值)。2010年11月世界超級計算機TOP500排名,“天河一號”(TH-1A)位列世界第一[1]。
“天河一號”采用CPU和GPU相結合的異構融合計算體系結構,硬件系統主要由計算處理系統、互連通信系統、輸入輸出系統、監控診斷系統與基礎架構系統組成,軟件系統主要由操作系統、編譯系統、并行程序開發環境與科學計算可視化系統組成。
“天河一號”登陸節點安裝了 Kylin(麒麟)3.1版本64位操作系統,定制了安全策略。計算節點都安裝RedHat Enterprise Linux 5.3x86_64版本,遵循POSIX,LSB等標準,提供了64位程序開發與運行環境[2]。
由于“天河一號”是超級計算機,與普通的臺式機具有本質區別,不可進行直接對比。但是,介紹測試平臺是有必要的,對直接影響計算性能的CPU、內存和操作系統等軟硬件進行對比是可以的。我們測試的兩個平臺分別是“天河一號”超級計算機和聯想M5100t臺式計算機,分別安裝了Linux操作系統和GAMIT 10.40。兩平臺內存頻率相同,那么,主要體現平臺硬件差異的是CPU。PassMark[3]發布的兩個CPU的測試分數相差近2.4倍,差距還是比較大的。這主要是因為Westmere-EP核心架構性能更加突出。測試平臺對比列于表1。

表1 測試平臺對比
GAMIT的編譯過程需要gfortran 4.2以上編譯器、X11(X Window)的客戶庫(X11client-side library)libX11-dev及 csh/tcsh、awk、tail、ls、gzip、gunzip等基礎linux系統程序的支持[4]。
“天河一號”登錄節點提供了GCC 4.6.1版編譯器(含gfortran編譯器),安裝在/opt/gcc-4.6.1目錄。登錄節點沒有提供libX11-dev庫及tcsh、uniq、comm、gzip等基礎linux系統程序。tcsh是增強版的csh,且完全兼容csh,建議優先選用。libX11-dev庫提供的Xlib.h和libX11.a兩個庫文件是GAMIT編譯和運行所必需的。uniq用于去除文件中重復的行。comm用于比較已經排序的文件的內容。gzip是非常好用的壓縮和解壓縮軟件,用于安裝過程中解壓縮文件。解決缺少的庫文件和程序的簡單方法是:到debian或opensuse網站下載相應的64位軟件包,然后提取缺少的文件,或者在64位的linux系統提取這些文件,然后將庫文件上傳到用戶lib目錄下,將程序文件上傳到用bin目錄下,再將兩個目錄加入到tcsh配置文件的相應條目中即可。
本人的“天河一號”用戶名為liuzg,tcsh配置文件內容如下所示

完成編譯器、庫文件、基礎系統程序準備和tcsh的配置后,就可以編譯GAMIT了。編譯詳細過程參考文獻[4]。但要注意,由于libX11-dev的庫文件放在了用戶lib目錄下,編譯過程中要修改Makefile.config文件X11LIBPATH和X11INCPATH條目的值為“/vol-th/home/liuzg/lib”。
“天河一號”計算節點采用優化了內核的內存操作系統,無實體硬盤。普通計算節點有24GB內存,但系統分區分配空間只有幾百MB,其余空間分配給計算程序使用。系統分區剩余空間只有幾十MB,因此,留給計算程序在系統/tmp目錄存放臨時文件的空間非常有限。當系統分區存儲空間耗盡,會導致程序異常結束。而GAMIT解算過程中會將一些臨時文件存放在系統/tmp目錄,包括MODEL和SOLVE等模塊臨時存儲的C-file和大型協方差矩陣文件等。解算50測站創建的最大臨時文件約為150MB-200MB,遠遠超出“天河一號”計算節點系統分區剩余存儲空間。通過修改MODEL和SOLVE模塊原代碼可以解決此問題,但比較簡單的解決方法是修改“sestbl.”文件“Scratch directory=/tmp”條目。該條目控制臨時文件輸出位置。將該條目修改為“Scratch directory= ./”,使臨時文件輸出到計算目錄,GAMIT不再占用系統空間。
GAMIT提供了sh_PBS_gamit腳本程序用于集群計算機計算任務,但“天河一號”沒有提供PBS作業管理系統,因而無法使用該腳本程序。“天河一號”提供了簡單易用的SLURM資源管理系統。測試過程使用yhbatch命令提交批處理作業,計算使用自己編寫的腳本。全部測試使用相同計算腳本。計算腳本通過tcsh內部命令time記錄CPU時間、任務時間和執行效率等信息。
GAMIT的參數MAXSIT和MAXATM的設置需滿足關系式 MAXSIT*MAXATM≤2500(Robert W.King),如 MAXATM 設 置 為 25,MAXSIT的最大值為99(100-499可編譯,但計算失敗)。考慮到99站計算耗時較長,測試過程中選擇60個IGS站2009年第一天數據用于計算。
測試方法含單任務測試和單節點多任務滿負荷測試兩種。單任務測試每次提交一個計算任務,進行多次重復計算。多任務滿負荷測試根據計算節點CPU核心數提交相應數量的計算任務,并進行多次重復計算。多任務計算的每個任務使用的文件完全相同。為避免多任務之間相互干擾,各任務計算所用文件按不同目錄分開存放。各任務之間只共享同一計算節點,不共享任何數據。聯想M5100t為單CPU,4個核心,每次同時執行4個任務。“天河一號”單個節點有兩個CPU,每個CPU有6個核心,每次同時執行12個任務。
測試結果如表2~5所示。用戶態時間是計算過程中CPU處于用戶態所耗時間;核心態時間是計算過程中CPU處于核心態所耗時間;CPU時間是計算過程中CPU消耗時間總和,是用戶態時間與核心態時間的和;總時間是計算過程所耗時間的總和;計算效率是CPU時間與總時間的比值。
從單任務測試結果看,“天河一號”完成單任務平均耗時11890s,平均計算效率59.23%;
聯想M5100t完成單任務平均耗時7978s,平均計算效率99.81%。聯想M5100t計算效率明顯高于“天河一號”,單任務平均耗時僅相當于“天河一號”的60%。但是,“天河一號”完成單任務平均CPU時間7031s,比聯想M5100t平均快933s。從用戶態時間看,“天河一號”比聯想 M5100t平均快1744s。從核心態時間看,“天河一號”比聯想M5100t平均多消耗811s,相差11.4倍。因此,實際上“天河一號”CPU效率更高,但其它過程耗時過長影響了它的計算效率。
從多任務測試結果看,“天河一號”平均用戶態時間增加了556s,平均核心態時間增加了37s,平均CUP時間增加593s(增加了8.4%),平均計算效率降低至26.38%。聯想M5100t平均用戶態時間增加了727s,平均核心態時間增加了2s,平均CUP時間增加729s,增加了9.2%,平均計算效率降低至95.21%。總體上,“天河一號”在執行多任務測試時計算效率發生了較大變化;聯想M5100t計算效率變化較小,但CPU時間相對增加更多一些。這反映了“天河一號”計算性能更強、更穩定,但受其它因素影響比較大,本次測試并沒有發揮出它本身的優勢。

表2 “天河一號”單任務測試結果

表3 聯想M5100t單任務測試結果

表4 “天河一號”單計算節點多任務滿負荷測試結果

表5 聯想M5100t多任務滿負荷測試結果
天河一號的優勢是并行計算,而GAMIT計算過程屬于串行計算。GAMIT計算過程會產生大量數據。以本次測試的算例為例,整個過程最終剩余數據量約2.0GB。這些數據在計算節點與存儲節點間傳輸,實際傳輸過程的數據量要遠遠大于這個值。本次測試所用“天河一號”計算分區共有1280各節點,每個節點有2個CPU,每個CPU有6個核心,整個計算分區最多可執行15360個并行任務。當整個計算分區處于高使用率狀態時,存儲節點的壓力會非常大,對數據量吞吐比較大的任務計算效率影響就很大。GAMIT計算過程及非并行計算,又有很高的數據傳輸要求,這決定了GAMIT在超級計算機上難以實現很高的執行效率。
我們在進行“天河一號”測試時,記錄了測試分區的使用率。該分區共有1280個計算節點,各節點分別處于使用、空閑和停機三種狀態。為節約電能,“天河一號”部分節點處于停機狀態,不能用于計算使用率。因此。我們通過“使用/(使用+空閑)”計算測試分區使用率。從計算結果看(圖1~2),單任務測試期間使用率高達90%以上,多任務測試期間使用率達77%以上。在如此高的使用率下,即使只有10%的節點讀寫數據,存儲節點的傳輸率也會及大地降低,對GAMIT的影響是可想而知的。

圖1 “天河一號”單任務測試期間計算分區使用率時間序列

圖2 “天河一號”多任務測試期間計算分區使用率時間序列
Linux系統把CPU執行狀態分為核心態和用戶態兩種[5]。核心態是操作系統內核所運行的模式。運行在該模式的代碼,可以無限制地對系統存儲、外部設備進行訪問。用戶態執行時,進程所能訪問的內存空間和對象受到限制,其所處于占有的處理機是可被搶占的。用戶態切換到內核態的方式有3種,分別是系統調用、異常和外圍設備的中斷。GAMIT本身不會通過系統調用進入核心態,因此,計算程序進入核心態主要是后兩種因素引起的。從各項測試的核心態時間和計算效率結果看,聯想M5100t消耗的核心態時間更少,計算效率更穩定;“天河一號”消耗的核心態時間較聯想M5100t高十余倍,計算效率變化較大。這說明各種異常對計算效率的影響是非常有限的,而外圍設備的中斷,主要是數據傳輸中斷,對計算效率的影響是非常大的。因此,要使“天河一號”這樣的超級計算機適于運行數據傳輸比較大的應用,必須對存儲節點進行必要的升級。
本次測試結果顯示“天河一號”的GAMIT計算效率比較低,即使“天河一號”CPU時間比較優于聯想M5100t,結果依然不令人滿意。天河一號的優勢是并行計算,而GAMIT計算過程屬于串行計算,且有較大的數據傳輸需求。當多用戶同時進行大量計算時,GAMIT這樣數據傳輸量比較大的程序計算效率受硬盤性能的影響比較大。這些因素是導致“天河一號”GAMIT計算效率低下的根本原因。
目前,全球IGS站及歐美、中、日等各國連續站總數達數千個,而且還在持續增加。普通計算機最多只有8個核心,難以勝任海量觀測數據的處理工作。“天河一號”這樣的超級計算具有多核心的優勢,是普通計算機不可比擬的。未來海量觀測數據處理必須借助于超級計算機,但必須采取一些措施提高計算效率,如:優化GAMIT代碼,較少數據傳輸;優化計算方法,提高GAMIT本身的計算效率;實現GAMIT并行計算,發揮超計算機的真正優勢;提升存儲節點性能,提高數據傳輸效率;優化文件編碼,縮減數據文件大小,等等。
總之,“天河一號”超級計算機具有多核心優勢,在GAMIT計算方面還是有很好的應用前景的,但需要對GAMIT代碼進行必要的優化和改進,我們會致力于這方面的嘗試和研究。
[1]“天河一號”(TH-1A)超級計算機[EB/OL].http://www.nscc-tj.gov.cn/resources/resources_1.asp.
[2]TH-1A大系統用戶手冊[R].
[3]CPU Benchmarks-Common CPU's[EB/OL].http://www.cpubenchmark.net/common_cpus.html
[4]劉志廣,占偉,孟憲剛.Ubuntu系統平臺的GAMIT/GLOBK 10.35安裝詳解[J].全球定位系統,2009,34(5):52-56.
[5]用戶態和核心態[EB/OL].http://www.cnblogs.com/cxrs/archive/2010/07/21/1782007.html.