劉志廣,占 偉,孟憲剛,宋惠軍
(中國地震局第一監(jiān)測中心,天津 300180)
GAMIT解算海量GPS數(shù)據(jù)是一個(gè)非常耗時(shí)的過程,對(duì)計(jì)算機(jī)的運(yùn)算速度、穩(wěn)定性有很高要求。“天河一號(hào)”的誕生為GPS數(shù)據(jù)解算提供了一個(gè)嶄新的計(jì)算平臺(tái)。
為研究超級(jí)計(jì)算機(jī)在GPS數(shù)據(jù)解算領(lǐng)域的應(yīng)用前景,我們?cè)凇疤旌右惶?hào)”計(jì)算平臺(tái)安裝了GAMIT 10.40,測試“天河一號(hào)”上GAMIT的計(jì)算效率,并與其它計(jì)算平臺(tái)作對(duì)比分析。
“天河一號(hào)”(TH-1A)超級(jí)計(jì)算機(jī)是我國首臺(tái)千萬億次超級(jí)計(jì)算機(jī)系統(tǒng),實(shí)現(xiàn)了我國自主研制超級(jí)計(jì)算機(jī)能力從百萬億次到千萬億次的跨越,使我國成為繼美國之后世界上第二個(gè)能夠研制千萬億次超級(jí)計(jì)算機(jī)的國家。
“天河一號(hào)”于2010年8月在國家超級(jí)計(jì)算天津中心升級(jí)完成,峰值速度提升為4700TFlops,持續(xù)速度提升為2566TFlops(LINPACK實(shí)測值)。2010年11月世界超級(jí)計(jì)算機(jī)TOP500排名,“天河一號(hào)”(TH-1A)位列世界第一[1]。
“天河一號(hào)”采用CPU和GPU相結(jié)合的異構(gòu)融合計(jì)算體系結(jié)構(gòu),硬件系統(tǒng)主要由計(jì)算處理系統(tǒng)、互連通信系統(tǒng)、輸入輸出系統(tǒng)、監(jiān)控診斷系統(tǒng)與基礎(chǔ)架構(gòu)系統(tǒng)組成,軟件系統(tǒng)主要由操作系統(tǒng)、編譯系統(tǒng)、并行程序開發(fā)環(huán)境與科學(xué)計(jì)算可視化系統(tǒng)組成。
“天河一號(hào)”登陸節(jié)點(diǎn)安裝了 Kylin(麒麟)3.1版本64位操作系統(tǒng),定制了安全策略。計(jì)算節(jié)點(diǎn)都安裝RedHat Enterprise Linux 5.3x86_64版本,遵循POSIX,LSB等標(biāo)準(zhǔn),提供了64位程序開發(fā)與運(yùn)行環(huán)境[2]。
由于“天河一號(hào)”是超級(jí)計(jì)算機(jī),與普通的臺(tái)式機(jī)具有本質(zhì)區(qū)別,不可進(jìn)行直接對(duì)比。但是,介紹測試平臺(tái)是有必要的,對(duì)直接影響計(jì)算性能的CPU、內(nèi)存和操作系統(tǒng)等軟硬件進(jìn)行對(duì)比是可以的。我們測試的兩個(gè)平臺(tái)分別是“天河一號(hào)”超級(jí)計(jì)算機(jī)和聯(lián)想M5100t臺(tái)式計(jì)算機(jī),分別安裝了Linux操作系統(tǒng)和GAMIT 10.40。兩平臺(tái)內(nèi)存頻率相同,那么,主要體現(xiàn)平臺(tái)硬件差異的是CPU。PassMark[3]發(fā)布的兩個(gè)CPU的測試分?jǐn)?shù)相差近2.4倍,差距還是比較大的。這主要是因?yàn)閃estmere-EP核心架構(gòu)性能更加突出。測試平臺(tái)對(duì)比列于表1。
表1 測試平臺(tái)對(duì)比
GAMIT的編譯過程需要gfortran 4.2以上編譯器、X11(X Window)的客戶庫(X11client-side library)libX11-dev及 csh/tcsh、awk、tail、ls、gzip、gunzip等基礎(chǔ)linux系統(tǒng)程序的支持[4]。
“天河一號(hào)”登錄節(jié)點(diǎn)提供了GCC 4.6.1版編譯器(含gfortran編譯器),安裝在/opt/gcc-4.6.1目錄。登錄節(jié)點(diǎn)沒有提供libX11-dev庫及tcsh、uniq、comm、gzip等基礎(chǔ)linux系統(tǒng)程序。tcsh是增強(qiáng)版的csh,且完全兼容csh,建議優(yōu)先選用。libX11-dev庫提供的Xlib.h和libX11.a兩個(gè)庫文件是GAMIT編譯和運(yùn)行所必需的。uniq用于去除文件中重復(fù)的行。comm用于比較已經(jīng)排序的文件的內(nèi)容。gzip是非常好用的壓縮和解壓縮軟件,用于安裝過程中解壓縮文件。解決缺少的庫文件和程序的簡單方法是:到debian或opensuse網(wǎng)站下載相應(yīng)的64位軟件包,然后提取缺少的文件,或者在64位的linux系統(tǒng)提取這些文件,然后將庫文件上傳到用戶lib目錄下,將程序文件上傳到用bin目錄下,再將兩個(gè)目錄加入到tcsh配置文件的相應(yīng)條目中即可。
本人的“天河一號(hào)”用戶名為liuzg,tcsh配置文件內(nèi)容如下所示
完成編譯器、庫文件、基礎(chǔ)系統(tǒng)程序準(zhǔn)備和tcsh的配置后,就可以編譯GAMIT了。編譯詳細(xì)過程參考文獻(xiàn)[4]。但要注意,由于libX11-dev的庫文件放在了用戶lib目錄下,編譯過程中要修改Makefile.config文件X11LIBPATH和X11INCPATH條目的值為“/vol-th/home/liuzg/lib”。
“天河一號(hào)”計(jì)算節(jié)點(diǎn)采用優(yōu)化了內(nèi)核的內(nèi)存操作系統(tǒng),無實(shí)體硬盤。普通計(jì)算節(jié)點(diǎn)有24GB內(nèi)存,但系統(tǒng)分區(qū)分配空間只有幾百M(fèi)B,其余空間分配給計(jì)算程序使用。系統(tǒng)分區(qū)剩余空間只有幾十MB,因此,留給計(jì)算程序在系統(tǒng)/tmp目錄存放臨時(shí)文件的空間非常有限。當(dāng)系統(tǒng)分區(qū)存儲(chǔ)空間耗盡,會(huì)導(dǎo)致程序異常結(jié)束。而GAMIT解算過程中會(huì)將一些臨時(shí)文件存放在系統(tǒng)/tmp目錄,包括MODEL和SOLVE等模塊臨時(shí)存儲(chǔ)的C-file和大型協(xié)方差矩陣文件等。解算50測站創(chuàng)建的最大臨時(shí)文件約為150MB-200MB,遠(yuǎn)遠(yuǎn)超出“天河一號(hào)”計(jì)算節(jié)點(diǎn)系統(tǒng)分區(qū)剩余存儲(chǔ)空間。通過修改MODEL和SOLVE模塊原代碼可以解決此問題,但比較簡單的解決方法是修改“sestbl.”文件“Scratch directory=/tmp”條目。該條目控制臨時(shí)文件輸出位置。將該條目修改為“Scratch directory= ./”,使臨時(shí)文件輸出到計(jì)算目錄,GAMIT不再占用系統(tǒng)空間。
GAMIT提供了sh_PBS_gamit腳本程序用于集群計(jì)算機(jī)計(jì)算任務(wù),但“天河一號(hào)”沒有提供PBS作業(yè)管理系統(tǒng),因而無法使用該腳本程序。“天河一號(hào)”提供了簡單易用的SLURM資源管理系統(tǒng)。測試過程使用yhbatch命令提交批處理作業(yè),計(jì)算使用自己編寫的腳本。全部測試使用相同計(jì)算腳本。計(jì)算腳本通過tcsh內(nèi)部命令time記錄CPU時(shí)間、任務(wù)時(shí)間和執(zhí)行效率等信息。
GAMIT的參數(shù)MAXSIT和MAXATM的設(shè)置需滿足關(guān)系式 MAXSIT*MAXATM≤2500(Robert W.King),如 MAXATM 設(shè) 置 為 25,MAXSIT的最大值為99(100-499可編譯,但計(jì)算失?。?紤]到99站計(jì)算耗時(shí)較長,測試過程中選擇60個(gè)IGS站2009年第一天數(shù)據(jù)用于計(jì)算。
測試方法含單任務(wù)測試和單節(jié)點(diǎn)多任務(wù)滿負(fù)荷測試兩種。單任務(wù)測試每次提交一個(gè)計(jì)算任務(wù),進(jìn)行多次重復(fù)計(jì)算。多任務(wù)滿負(fù)荷測試根據(jù)計(jì)算節(jié)點(diǎn)CPU核心數(shù)提交相應(yīng)數(shù)量的計(jì)算任務(wù),并進(jìn)行多次重復(fù)計(jì)算。多任務(wù)計(jì)算的每個(gè)任務(wù)使用的文件完全相同。為避免多任務(wù)之間相互干擾,各任務(wù)計(jì)算所用文件按不同目錄分開存放。各任務(wù)之間只共享同一計(jì)算節(jié)點(diǎn),不共享任何數(shù)據(jù)。聯(lián)想M5100t為單CPU,4個(gè)核心,每次同時(shí)執(zhí)行4個(gè)任務(wù)。“天河一號(hào)”單個(gè)節(jié)點(diǎn)有兩個(gè)CPU,每個(gè)CPU有6個(gè)核心,每次同時(shí)執(zhí)行12個(gè)任務(wù)。
測試結(jié)果如表2~5所示。用戶態(tài)時(shí)間是計(jì)算過程中CPU處于用戶態(tài)所耗時(shí)間;核心態(tài)時(shí)間是計(jì)算過程中CPU處于核心態(tài)所耗時(shí)間;CPU時(shí)間是計(jì)算過程中CPU消耗時(shí)間總和,是用戶態(tài)時(shí)間與核心態(tài)時(shí)間的和;總時(shí)間是計(jì)算過程所耗時(shí)間的總和;計(jì)算效率是CPU時(shí)間與總時(shí)間的比值。
從單任務(wù)測試結(jié)果看,“天河一號(hào)”完成單任務(wù)平均耗時(shí)11890s,平均計(jì)算效率59.23%;
聯(lián)想M5100t完成單任務(wù)平均耗時(shí)7978s,平均計(jì)算效率99.81%。聯(lián)想M5100t計(jì)算效率明顯高于“天河一號(hào)”,單任務(wù)平均耗時(shí)僅相當(dāng)于“天河一號(hào)”的60%。但是,“天河一號(hào)”完成單任務(wù)平均CPU時(shí)間7031s,比聯(lián)想M5100t平均快933s。從用戶態(tài)時(shí)間看,“天河一號(hào)”比聯(lián)想 M5100t平均快1744s。從核心態(tài)時(shí)間看,“天河一號(hào)”比聯(lián)想M5100t平均多消耗811s,相差11.4倍。因此,實(shí)際上“天河一號(hào)”CPU效率更高,但其它過程耗時(shí)過長影響了它的計(jì)算效率。
從多任務(wù)測試結(jié)果看,“天河一號(hào)”平均用戶態(tài)時(shí)間增加了556s,平均核心態(tài)時(shí)間增加了37s,平均CUP時(shí)間增加593s(增加了8.4%),平均計(jì)算效率降低至26.38%。聯(lián)想M5100t平均用戶態(tài)時(shí)間增加了727s,平均核心態(tài)時(shí)間增加了2s,平均CUP時(shí)間增加729s,增加了9.2%,平均計(jì)算效率降低至95.21%??傮w上,“天河一號(hào)”在執(zhí)行多任務(wù)測試時(shí)計(jì)算效率發(fā)生了較大變化;聯(lián)想M5100t計(jì)算效率變化較小,但CPU時(shí)間相對(duì)增加更多一些。這反映了“天河一號(hào)”計(jì)算性能更強(qiáng)、更穩(wěn)定,但受其它因素影響比較大,本次測試并沒有發(fā)揮出它本身的優(yōu)勢。
表2 “天河一號(hào)”單任務(wù)測試結(jié)果
表3 聯(lián)想M5100t單任務(wù)測試結(jié)果
表4 “天河一號(hào)”單計(jì)算節(jié)點(diǎn)多任務(wù)滿負(fù)荷測試結(jié)果
表5 聯(lián)想M5100t多任務(wù)滿負(fù)荷測試結(jié)果
天河一號(hào)的優(yōu)勢是并行計(jì)算,而GAMIT計(jì)算過程屬于串行計(jì)算。GAMIT計(jì)算過程會(huì)產(chǎn)生大量數(shù)據(jù)。以本次測試的算例為例,整個(gè)過程最終剩余數(shù)據(jù)量約2.0GB。這些數(shù)據(jù)在計(jì)算節(jié)點(diǎn)與存儲(chǔ)節(jié)點(diǎn)間傳輸,實(shí)際傳輸過程的數(shù)據(jù)量要遠(yuǎn)遠(yuǎn)大于這個(gè)值。本次測試所用“天河一號(hào)”計(jì)算分區(qū)共有1280各節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)有2個(gè)CPU,每個(gè)CPU有6個(gè)核心,整個(gè)計(jì)算分區(qū)最多可執(zhí)行15360個(gè)并行任務(wù)。當(dāng)整個(gè)計(jì)算分區(qū)處于高使用率狀態(tài)時(shí),存儲(chǔ)節(jié)點(diǎn)的壓力會(huì)非常大,對(duì)數(shù)據(jù)量吞吐比較大的任務(wù)計(jì)算效率影響就很大。GAMIT計(jì)算過程及非并行計(jì)算,又有很高的數(shù)據(jù)傳輸要求,這決定了GAMIT在超級(jí)計(jì)算機(jī)上難以實(shí)現(xiàn)很高的執(zhí)行效率。
我們?cè)谶M(jìn)行“天河一號(hào)”測試時(shí),記錄了測試分區(qū)的使用率。該分區(qū)共有1280個(gè)計(jì)算節(jié)點(diǎn),各節(jié)點(diǎn)分別處于使用、空閑和停機(jī)三種狀態(tài)。為節(jié)約電能,“天河一號(hào)”部分節(jié)點(diǎn)處于停機(jī)狀態(tài),不能用于計(jì)算使用率。因此。我們通過“使用/(使用+空閑)”計(jì)算測試分區(qū)使用率。從計(jì)算結(jié)果看(圖1~2),單任務(wù)測試期間使用率高達(dá)90%以上,多任務(wù)測試期間使用率達(dá)77%以上。在如此高的使用率下,即使只有10%的節(jié)點(diǎn)讀寫數(shù)據(jù),存儲(chǔ)節(jié)點(diǎn)的傳輸率也會(huì)及大地降低,對(duì)GAMIT的影響是可想而知的。
圖1 “天河一號(hào)”單任務(wù)測試期間計(jì)算分區(qū)使用率時(shí)間序列
圖2 “天河一號(hào)”多任務(wù)測試期間計(jì)算分區(qū)使用率時(shí)間序列
Linux系統(tǒng)把CPU執(zhí)行狀態(tài)分為核心態(tài)和用戶態(tài)兩種[5]。核心態(tài)是操作系統(tǒng)內(nèi)核所運(yùn)行的模式。運(yùn)行在該模式的代碼,可以無限制地對(duì)系統(tǒng)存儲(chǔ)、外部設(shè)備進(jìn)行訪問。用戶態(tài)執(zhí)行時(shí),進(jìn)程所能訪問的內(nèi)存空間和對(duì)象受到限制,其所處于占有的處理機(jī)是可被搶占的。用戶態(tài)切換到內(nèi)核態(tài)的方式有3種,分別是系統(tǒng)調(diào)用、異常和外圍設(shè)備的中斷。GAMIT本身不會(huì)通過系統(tǒng)調(diào)用進(jìn)入核心態(tài),因此,計(jì)算程序進(jìn)入核心態(tài)主要是后兩種因素引起的。從各項(xiàng)測試的核心態(tài)時(shí)間和計(jì)算效率結(jié)果看,聯(lián)想M5100t消耗的核心態(tài)時(shí)間更少,計(jì)算效率更穩(wěn)定;“天河一號(hào)”消耗的核心態(tài)時(shí)間較聯(lián)想M5100t高十余倍,計(jì)算效率變化較大。這說明各種異常對(duì)計(jì)算效率的影響是非常有限的,而外圍設(shè)備的中斷,主要是數(shù)據(jù)傳輸中斷,對(duì)計(jì)算效率的影響是非常大的。因此,要使“天河一號(hào)”這樣的超級(jí)計(jì)算機(jī)適于運(yùn)行數(shù)據(jù)傳輸比較大的應(yīng)用,必須對(duì)存儲(chǔ)節(jié)點(diǎn)進(jìn)行必要的升級(jí)。
本次測試結(jié)果顯示“天河一號(hào)”的GAMIT計(jì)算效率比較低,即使“天河一號(hào)”CPU時(shí)間比較優(yōu)于聯(lián)想M5100t,結(jié)果依然不令人滿意。天河一號(hào)的優(yōu)勢是并行計(jì)算,而GAMIT計(jì)算過程屬于串行計(jì)算,且有較大的數(shù)據(jù)傳輸需求。當(dāng)多用戶同時(shí)進(jìn)行大量計(jì)算時(shí),GAMIT這樣數(shù)據(jù)傳輸量比較大的程序計(jì)算效率受硬盤性能的影響比較大。這些因素是導(dǎo)致“天河一號(hào)”GAMIT計(jì)算效率低下的根本原因。
目前,全球IGS站及歐美、中、日等各國連續(xù)站總數(shù)達(dá)數(shù)千個(gè),而且還在持續(xù)增加。普通計(jì)算機(jī)最多只有8個(gè)核心,難以勝任海量觀測數(shù)據(jù)的處理工作?!疤旌右惶?hào)”這樣的超級(jí)計(jì)算具有多核心的優(yōu)勢,是普通計(jì)算機(jī)不可比擬的。未來海量觀測數(shù)據(jù)處理必須借助于超級(jí)計(jì)算機(jī),但必須采取一些措施提高計(jì)算效率,如:優(yōu)化GAMIT代碼,較少數(shù)據(jù)傳輸;優(yōu)化計(jì)算方法,提高GAMIT本身的計(jì)算效率;實(shí)現(xiàn)GAMIT并行計(jì)算,發(fā)揮超計(jì)算機(jī)的真正優(yōu)勢;提升存儲(chǔ)節(jié)點(diǎn)性能,提高數(shù)據(jù)傳輸效率;優(yōu)化文件編碼,縮減數(shù)據(jù)文件大小,等等。
總之,“天河一號(hào)”超級(jí)計(jì)算機(jī)具有多核心優(yōu)勢,在GAMIT計(jì)算方面還是有很好的應(yīng)用前景的,但需要對(duì)GAMIT代碼進(jìn)行必要的優(yōu)化和改進(jìn),我們會(huì)致力于這方面的嘗試和研究。
[1]“天河一號(hào)”(TH-1A)超級(jí)計(jì)算機(jī)[EB/OL].http://www.nscc-tj.gov.cn/resources/resources_1.asp.
[2]TH-1A大系統(tǒng)用戶手冊(cè)[R].
[3]CPU Benchmarks-Common CPU's[EB/OL].http://www.cpubenchmark.net/common_cpus.html
[4]劉志廣,占偉,孟憲剛.Ubuntu系統(tǒng)平臺(tái)的GAMIT/GLOBK 10.35安裝詳解[J].全球定位系統(tǒng),2009,34(5):52-56.
[5]用戶態(tài)和核心態(tài)[EB/OL].http://www.cnblogs.com/cxrs/archive/2010/07/21/1782007.html.