世界上大型超算競賽有:HPCAC-ISC、SC、ASC,叫做Student Cluster Competition(下面簡稱爲SCC)。今年我也繼何斌和fqj1994之後,一共參加過四次大賽了(ASC'14、ISC'14、ASC'15、ISC'15)。比賽期間費盡心力,ASC'14酸楚太多,ISC'14也有憋屈,沒有分享其中曲折。ASC'15、ISC'15,清華大學隊時隔三年重新捧杯,超算生涯圓滿落幕,在此記錄些瑣事。
緣起ASC'13
2013年聽說了這個競賽,當時清華大學已經組隊,3月8日有緣在FIT樓地下的一個會議室見到了當時備賽的兩位隊員,他們在那裏擺弄機器。四月ASC'13在上海交通大學舉行,清華大學隊包攬多項應用第一,衛冕冠軍,人稱夢之隊,參見《有夢想的人才有青春——專訪ASC冠軍夢之隊》。8機10卡(浪潮英信NF5280M3、Tesla K20,每機兩卡),HPL達到7579Gflops,刷新同類賽事的記錄。作爲大陸前兩名的隊伍,與華中科技大學隊一起,由浪潮支持參加ISC'13 Student Cluster Competition。ISC'13 SCC有8所學校參加,賽制有所區別,總分100分裏展示環節佔50分。可惜賽運不佳,據傳展示前尚領先第二名甚多,但展示後被失卻了第一。當年ISC SCC只有總冠軍、最高LINPACK、最受歡迎三個獎,抱憾收場。
淚灑ASC'14
2013年11月華中科技大學的fqj1994告訴我ASC'14要報名了,我就給前兩年的帶隊老師黃小猛老師發了郵件。後來接到黃老師的電話。他已有金盆洗手之意,ASC'13結束後清華和華中科大隊員在一起吃飯,fqj1994向黃老師提及了我。黃老師說決定再參加一次,讓我來招募隊員。我說另請高明吧,就找到了李愷威。他保研到陳文光老師的高性能實驗室,背景比其他人都合適都多。上一屆的隊員有5個是大四的,產生了經驗交接的斷層。隊員招募碰到了甚多痛處,人選真可謂變幻莫測。此類競賽知名度低,也少有人感興趣。
ASC'14參賽隊伍翻番,達到了78支,仍是16支隊伍出線參加決賽。賽制與之前變動不大,只是隊員數從6人減少到5人。初賽與前兩年類似,提交服務器配置、賽題優化方案的技術建議,只是改成了英文。兩人負責Intel Xeon Phi優化題3D-EW,兩人負責其他應用,我主要負責服務器配置、系統管理,給其他人提供協助,弄HPL。另外Quantum Espresso、SU2編譯較爲麻煩,參與了一些前期工作。我們先在FIT樓地下會議室,之後搬到了東主樓8區500室,裏面有兩臺機器供我們做拆裝練習。我們的教練是第一屆比賽的隊長徐世真,他忙前忙後,給我們借服務器、借帳號、提供往年文檔、聯繫高性能實驗室學長指導我們、指導HPL和服務器安裝,太多太多。比我高兩屆的高中+大學學長金昊衠給我打了好多跨洋電話提供經驗指導。翻到以前比賽的舊硬盤,就盼從這硬盤上,流傳上一屆隊員的絕藝。胡勇、王欣亮等也多次來給我們教學,詢問我們進度。可惜隊員們大多數時候都很萎靡,表現差強人意。
初賽截至前奮鬥了一個星期。初賽通過後,3月7日主辦方公佈決賽題目。之後約兩個星期還要提交學校logo、隊員個人照片、視頻、座右銘等。我在3月5日拍完視頻後,一直到10日都在南京參與BCTF初賽準備工作。根據決賽題目分析,多個題目能用上GPU,很重要。可是,我們沒有GPU。這也打擊了我們士氣。
隊員們長時間萎靡,進度極慢地準備比賽。決賽前最後一段時間,蔣林浩一直激勵着大家,也一直逼着我幹活。決賽前兩週,我們好多天都熬到1:00多2:00多才離開東主樓8區500室。
決賽在廣州中山大學東校區國家超級計算廣州中心。4月20日到達,志願者熊崇菁、陳睿欽在到達口接待我們。晚上見到了國立清華大學隊,他們的帶隊老師說黃老師“又把小徐叫來啦”。國立清華大學有多年SC參賽經驗,是支勁旅。
4月21~22日在比賽現場裝機,23日開賽。
21日到達比賽現場,有16支隊伍,每支隊伍分配有一張桌子、幾把椅子、兩臺顯示器、兩個USB接口鍵盤、一根連接天河2號的網線,背後有一個機櫃,裏面是幾臺浪潮英信NF5280M3服務器、一臺以太網交換機和一臺InfiniBand交換機。這根連接天河2號的網線用於提供3D-EW的測試集羣。主辦方根據個隊提交的技術建議預先放置一些機器,在裝機的兩天可以隨時變更數量。有幾臺機器功耗很大,向工作人員更換了。我們預先把操作系統裝在硬盤中,希望換上後直接能用。可是我當時裝的是CentOS
6.5
UEFI引導方式,沒法引導,折騰一會兒發現需要用efibootmgr在機器上設置引導記錄。之後慢慢知道這是常態,比賽期間總是有大量事先預料不到的情況出現,應變能力是一項重要競爭力。到中午大概裝好了8臺機器,下午進行Quantum
Espresso和SU2的測試。20:00裝機結束,但很多隊伍還拖了一會兒,大概20:30工作人員關電閘,強制所有人離開。
22日,正式比賽前進行集羣的搭建工作和應用的調試。上午給兩臺新添置的機器安裝操作系統和相關軟件,下午是Quantum
Espresso和SU2的測試,我安裝LICOM2需要的netcdf。大概19:30纔有機會運行HPL
test查找可用參數,先用9機,發現性能非常差,然後換10機,還是很糟糕,800+GFlops。蔣林浩發現我們搭建的集羣上Quantum
Espress還是SU2非常慢,最後把問題鎖定在Intel
MPI的版本上。網絡很慢,好不容易從學校裏下載了可靠的穩定版本替換了比賽集羣上的Intel
MPI。回去之後徐世真帶着我研究第二天比賽需要使用的HPL
test配置文件HPL.dat。我們在一個7臺服務器,單機2CPU,每個CPU
8核的集羣上尋找HPL.dat參數。工作到次日3:30還沒找到滿意的參數,我先去睡覺了。徐世真一夜沒睡,大概6:30多叫醒我,給我看一個在7機集羣上表現還不錯的參數。我們據此計算了在10機上需要使用的參數。
決賽第一天(2014年4月23日),8:00開賽,第一天比四個應用:HPL、Quantum Espresso、SU2和3D-EW。3D-EW在天河二號上進行,不使用搭建的服務器,因此和其他部分是獨立平行的。HPL的測試結果提交後纔可以去領取Quantum Espresso和SU2測試數據的輸入文件。考慮到沒有GPU,我們純CPU的HPL在GPU面前只能送死,事先商量着應該儘快算完,給Quantum Espresso和SU2留出足夠的時間。我手忙腳亂,到8:30左右纔算完HPL,讓隊長簽字後提交給工作人員。之後拿到U盤,裏面是Quantum Espresso和SU2的算例,之後主要是蔣林浩的任務。Quantum Espresso一個算例運行了一個多小時,感覺沒希望就中斷了。我嫌主辦方提供的功耗曲線網頁太醜陋,就寫個腳本抓取網頁數據自行繪製。起先用R,之後換成Highcharts。黃老師一直在休息室,看着官方功耗曲線網頁做分析,和其他老師談笑風生。我匆匆吃完回到賽場,寫了腳本根據功耗自動控制CPU頻率。SU2有五六個測試數據,其中一個大概從14:49開始運行,到16:00左右結束。根據規則,一旦超功耗就得重算,期間幾度快要超功耗,我擔心腳本不穩定,一直人工盯着功耗曲線。結果文件要存儲到U盤中提交,最後整理時又是一頓手忙腳亂。
交給我負責的LICOM2一直沒優化,要突擊了。第二天是LICOM2,我實在沒底,晚上和蔣林浩去向黃小猛老師學習,瞭解了運行時最重要的幾個參數。LICOM2修改進程數得重新編譯,非常麻煩,因此就寫腳本編譯。2:30前才把自動編譯腳本、估算測試數據時間複雜度的腳本準備好。
4月24日,正式比賽第二天,比賽場地旁的一間房公佈了第一天的成績,HPL正如所預料的,比用GPU的低很多,SU2我們第一並甩開第二名很多分,Quantum Espresso第二僅次於上海交大,局勢樂觀。可是,分數榜上3D-EW一項卻是一根橫線,原來是指零分。另外被判零分的還有華中科大、東道主中山大學、研製天河二號的國防科大、太原理工。結果雖然正確,但是違反“物理規律”,因此判零分。這麼多隊伍用了這種方法,也和太原理工大學3D-EW奪冠並被媒體報道了有關,決賽規則發生了這樣沒有任何預先通知的大變也真是有趣。主辦方倒是給了我們重新測試評分的機會,但是有幾個不平等條件:不允許繼續用各向同性,這個可以理解;重賽後保持非重賽隊伍分數不變,這樣一來,上交依然保持第一,這麼多隊伍之前的辛勞就付之一炬了?我推測可能是這些原因:一些媒體報道已經發出去了,產生分數變更會有很多公關問題需要處理,主辦方擔不起這個責任;那些沒有采用這個方法的隊伍得分會很難看,主辦方擔心他們也會不滿,把這件事鬧得更大。我們最後放棄了重測。當時我還不瞭解這些不平等條件,不能理解其他人的決定,但從賬面上的分數來看,大陸第二名還是有希望的,另外想想這麼多前輩給予的希望,我得把自己的事做好。給LICOM2編譯了幾個版本,蔣林浩運行。李愷威和喬宇宸振作後開始看神祕應用mpiBLAST,之後我也加入進來。mpiBLAST執行時需要的共享文件,有隊伍使用了共享文件系統,嫌搭建麻煩就讓每臺機器保留一份完整拷貝,所幸是隻讀的,這麼做沒問題,弄完已經近15:00。各測例估算規模後按預測時間從短到長全機運行,基本都是整機運行,沒有做進一步調優,A、B、C、D四個測試數據分別運行了265.45秒、1552.90秒、1049.14秒、1496.49秒。晚上研究功耗曲線,黃老師說功耗曲線能分析出很多東西。
4月25日,10分展示環節。展示角度根據黃老師看法應該注重物理原理,我倒是更傾向於從計算機角度出發,物理原理非我們所長,難以成理,但也不好牴觸。之後頒獎典禮,花落上交,魂斷中山,淚水在眼眶裏翻涌。

我們有可能會參加下一屆比賽嗎?黃老師的憤懣、失望,太多的遺憾,再參加的機會不容樂觀。“必當‘燕然即須平掃。擁精兵十萬,橫行沙漠’,但遺憾的是連說‘來年再努力’的機會也沒有了”。
晚上主辦方組織聚餐,比賽中隊伍間溝通極少,這是個難得的交流機會。和中山大學陳炳煒交流系統管理經驗。晚上Purdue University的Fangning Cheng(甚爲神祕)組織了一個活動,浙大的兩位同學範天瀧和曹舒翔請我喝飲料,相互分享了很多。他們和我們很像,缺乏有root的集羣,比賽時才接觸到InfiniBand線纜。
抱憾ISC'14
ASC'14結束幾天後收到主辦方消息,我們是大陸第二名,得以參加ISC'14。黃老師已然金盆洗手,翟季冬老師接手,重新組建了隊伍。浪潮能提供機器,但其他費用得由學校承擔。6名隊員加帶隊老師,機票就是一筆高昂的費用,總共大概得花十幾萬元。HPCAC-ISC 2014 SCC商業氣息很濃,浪潮在ISC有展位,因此有兩個名額。中國科學技術大學靠曙光公司支持也得以參加。據說ASC'13時在上海交通大學舉辦,上交第一次參賽,於是決賽名額就少了一個,中科大就沒晉級。背後曲折不可考,中科大從此不再參加ASC。但他們是非常強大的對手。
相比國內比賽重排場,國際比賽很隨意。沒有盛大的宣傳、沒有那麼多志願者、沒有清晰的規則,在ISC'14會場一個角落主持人把大家召集起來宣讀一會兒規則,說聲開始。學生集羣競賽開始時ISC開始,學生集羣競賽結束後ISC結束,期間因爲一直專注着比賽,沒怎麼看多其他展臺,算是一個遺憾。ISC'14沒記錄太多東西,兩天半安裝,兩天半比賽。7月23日提交HPCC和LINPACK結果;7月24日比Quantum Espresso、OpenFOAM和神祕應用HPCG。OpenFOAM的麻煩之處在於OpenFOAM有可視化的需求,一些隊伍之前沒有準備。我翻閱HPCG源碼,研究運行技巧。
7月25日比Gadget和神祕應用。神祕應用是亮點,題目仍是Quantum Espresso,但是運行規則發生變化。13:00~15:00允許任意變更機器配置,15:00所有隊開始運行Quantum Espress,在20分鐘裏運行出結果且最大功耗最小的隊伍獲勝。衆人拆卸集羣,只留了幾臺機器,郭家寶主攻手,說Quantum Espresso剩餘時間估算極爲準確。果然在最後一分鐘運行完,大家可都捏了一把汗。本題只有三個隊伍得分,我們僅次於南非的CHPC。
閉幕式上宣佈學生集羣競賽的結果,我們第三名,次於南非CHPC和中科大。流淚,憋屈。
賽後總結,感覺機器劣勢較大,服務器待機功耗太高,散熱也不好。南非CHPC一個節點兩個E5-2680 v2和一個Tesla K40,待機功耗小於100瓦,而我們E5-2697 v2,單機90多瓦。
圓夢ASC'15
對於新賽季的超算競賽,我的心情是複雜的。這一年來幾次夢到ASC'14,每次嘆息痛恨不能自已。有時想到得報仇雪恥,有時又感到有心無力。如果再次參賽,作爲有經驗的老隊員,必然得擔起很多責任。超算競賽趣味性並不強,漫長的備戰時間將會是一具枷鎖。嫉妒他人各有歸宿,我卻身世浮沉雨打萍,得抓緊機會去各個地方實習增進瞭解。原以爲緣盡,不料某天晚上接到李愷威電話,他說楊老師叫我們繼續參加。他給我兩個小時的時間,讓我迅速湊齊5人給ASC主辦方發郵件報名。大三課業繁重,通常應該避免,大四各有志向,也不好勉強。我又不擅打電話,卻也只得勉力爲之。多通電話,總算湊齊了人。李愷威說不要緊,之後可以換人。這麼說我便沒太多顧忌,提交了註冊單。爲了梯隊建設考慮,只選了三個大四的,一個大三,一個大二,另外還有一個大二的和我們一同訓練,若是有機會能參加ISC'15(6人)則一同參加。
本屆大賽宣傳力度又加強了,活動也增多了,2015年1月有個世界大學生超級計算機競賽啓動會與集訓營,4月14日在北京召開決賽規則解析和發佈會活動。
ISC'14 SCC參加後切實感受到了硬件優勢的重要性,今年我們終於趕上了。在此十分感謝陳文光老師,他高性能實驗室採購的8塊Tesla K80借給我們使用,另外借了16顆Intel E5-2699 v3 CPU。不過決賽不允許使用自帶CPU,只能更換加速卡,因此CPU沒有用上。實話說我在這次比賽上投入的精力非常少,因爲看到了之前比賽賽場發揮的重要性。其他幾個隊員的努力也很少,各自有課業、實習、實驗室任務,比賽對他們來說不是那麼有趣,不會爲此花太多工夫。
今年參賽隊伍再次翻番,16支隊伍出線參加決賽。決賽位於太原理工大學明向校區。太原理工對大賽十分重視,據說共有200名志願者,準備了一個月。負責接待我們的是志願者鄭瑞強和韓宏利。日程安排與上一年類似,兩天裝機(5月1819日),兩天比賽(5月2021日),22日展示與頒獎。規則是使用浪潮NF5280M4服務器搭建集羣,可以更換內存、硬盤等,自行選取加速卡,比賽時瞬時功耗不超過3100瓦,不允許持續30秒超過3000瓦。如超過則當時運行的程序不算分,應重新運行。
5月18日,裝機第一天,8:00進入現場,每支隊伍分配有一張桌子、幾把椅子、兩臺顯示器、兩個USB接口鍵盤、兩個鼠標。背後有一個機櫃,裏面是幾臺浪潮英信NF5280M4服務器、一臺以太網交換機和一臺InfiniBand交換機。主辦方採用了環形網絡拓撲結構,十分脆弱。今年我們使用電動螺絲刀拆卸硬盤,換上賽前裝好操作系統和軟件環境的SSD硬盤,每臺機器裝兩塊Tesla
K80。發現裝GPU的四臺機器裏只有一臺機器能啓動,三臺不行。更換電源線後仍有機器不行,後來發現要在BIOS中啓用Above
4G
Decoding選項。各機的BIOS設定是各不相同的,機器質量也有問題,好多學校在更換機器。官方的功耗曲線仍舊不好用,我改了改之前ISC'14使用的,之後改用snmpget獲取。現場十分嘈雜,空間狹小,幾個隊員不想來現場,待在旁邊的休息室。我就弄了個ssh -R反向代理讓他們訪問集羣,卓有爲幫忙研究NAMD,裘捷中看WRF-CHEM。之後王邈就和李愷威測試HPL,弄掛一臺機器,意識到散熱可能有問題,晚上決定換成一機一卡。據說國立清華大學準備了Tesla
K40和K80兩種GPU,可見財力之雄厚、準備之充分。
5月19日,裝機第二天,早上把機器配置更換成一機一卡,確定爲使用6臺機器。各自進行應用測試,下午我在寫NAMD的編譯腳本,和卓有爲研究編譯方式。我主要負責NAMD,發現6機6卡運行時間和5機5卡相仿,但功耗很大,很容易超過3000瓦,思考比賽時可能要着重看這兩種配置。20:40讓大家進行機器上電開機和運行應用的彩排。晚上工作人員把裝機時間延長到22:00。運行HPL又弄掛一臺機器,換了一個機器還是壞的,再換了一個纔好。晚上和卓有爲嘗試編譯smp ibverbs icc的NAMD。臨走前在一臺機器上插了兩塊硬盤,配置了RAID 0,以防比賽有大存儲空間需求。
5月20日,決賽第一天。7:30被叫起牀,王邈也起得比較晚,其他人去吃飯了,幫我們帶早飯。來到賽場,王邈啓動所有機器並執行開機流程。我則去吃早飯了。之後王邈開始運行Linpack,花了大約20分鐘得到了9.2Tflops的成績,叫來工作人員拍照後提交成績,換得NAMD和WRF-CHEM算例的U盤。發給我們的FTP密碼有錯誤,無法提交HPL結果文件,之後工作人員提供了正確的密碼。之後裘捷中繼續弄WRF-CHEM,我則和張陽討論NAMD的運行方式。估測完各個算例的時間後開始運行。A運行完後運行B,此時我犯了一個錯誤,把輸出文件移動到非共享的/tmp了,namd2進程臨近結束時報錯,浪費了半個小時。之後求保險還是輸出到磁盤,然後分別運行B和C。功耗屢次要吵,無奈把CPU頻率和GPU頻率一再降低,最後都降低到最小值了,所幸之後沒有再吵。之後裘捷中運行WRF-CHEM,整機運行算完了四個算例。最後一點時間留給了我運行了NAMD的第四個算例,因爲裘捷中昨天設想到的WRF-CHEM插件沒有編譯出來。晚上我建議大家都快速瞭解一下Palabos,第二天根據情況分別看Palabos和神祕應用。一大遺憾是我完全遺漏了南洋理工的功耗數據,錯過了跑出11.92Tflops時記錄PDU功耗數據的機會,留下了遺憾。我幾乎能肯定瞬時功耗超過3100瓦,但由於主辦方採集功耗數據間隔太長而沒有發現。
5月21日,決賽第二天。張陽把工作人員提供的U盤解壓到服務器上。我從休息室回來,一起看Palabos五個算例。張陽8:36開始9機運行workload
A,後來估測出需要計算3個多小時。裘捷中傳來喜訊,我們第一天成績第一。我的NAMD
12.61分第一,裘捷中的WRF-CHEM第二,Linpack第三。我們的策略是求穩,因此就用CPU頻率2200MHz運行,王邈則盯着功耗。因爲運行時間較長,我感覺做些編譯、試跑等工作不會太影響性能,就在i1上對各個算例都測試了一下。修改workload{A,B,C,D,E}.cpp,在裏面加上幾行clock()等輸出迭代次數和若干迭代步的運行時間,估算完整執行需要的時間。發現B可能需要輸出約100GiB文件,需要定期從tmpfs裏把文件遷移到磁盤。
吳育昕還在和李愷威討論HPCG,我估測了一下Palabos workload
A的運行時間,告訴他有大概半個小時可以調HPCG。我醞釀了分機運行的想法,因爲workload
B每600步會創建一個.vti視頻文件,和進程數無關,在SSD上寫入需要80秒,減少運行的機器數對性能影響較小。workload
E的並行度似乎也不高,我覺得這兩個算例可以一起執行。workload
E算完後可能可以再算workload C。
約11:37 workload
A運行結束。吳育昕開始運行HPCG。裘捷中說功耗值2973持續了很長時間,後來又有兩次功耗值也持續了很長時間,工作人員說我們的PDU壞了,要重啓要先關機,重啓後PDU確實好了,但浪費了一段時間。經過計算我決定讓B和C一起執行。張陽說其他隊伍運行A似乎只花了兩個多小時。於是我們變更了計劃,C執行完後(預計比B提前執行完)空餘時間重新運行A,因爲剩餘時間不足以運行E。我用i1~i3運行workload
B,i4~i9運行workload
C,這次把輸出目錄設置到/dev/shm/(tmpfs)下,14:00多workload
C先算完。算完後我立刻同步/dev/shm/。之後開始準備重算A,但就離同步完大概1分鐘,i4的SSH
session停止響應,我向王邈確認了他也連接不了。確認i4損壞後,主辦方說可以換一臺機器。但我估算算例後覺得可以接受少一臺機器,就沒管主辦方換的機器,用已經空閒的i5~i9運行workload
C。workload
B在啓動時會在tmpfs裏輸出很多文件,需要定期把文件遷移到磁盤上。最新創建的文件還在寫入,不能遷移,只能移動之前創建的文件,我提醒王邈要小心遷移。之後我弄了一條命令zsh命令mv /dev/shm/B/tmp/*.vti(Om[1,-2]) /xx1/pala/B/tmp/。
15:03重新運行workload A,17:18運行結束,我準備要更新的提交文件,由王邈複製到主辦方要求的FTP上。之後讓吳育昕繼續玩HPCG。
結束時賽場內氣氛歡快,隊員、領隊、志願者、機器們在一起合影。
回住處的途中大家還在熱烈討論着,問過很多學校,吳育昕感覺Xeon Phi優化應該能與中山大學分獲前二。我和裘捷中認證研究了功耗曲線,我們Palobos解出3個,推測國立清華解出4個,太原理工、國防科大3~4個,不至於太差。問了一些HPCG成績,好多都比我們低。惟一對我們有威脅的只有國防科大。晚上大家開始討論如何準備明天展示。21:40多大家聚起來,翟老師也過來了。考慮到主辦方要求展示使用PPT或者PDF格式的幻燈片,昨天王邈使用的Keynote可能不太合適,之後在一陣討論後決定讓王邈重新寫一份幻燈片。我根據功耗曲線研究其他隊伍的應用運行情況,Palabos推測只能排到第三或第四,HPCG應該還不錯。之後瞭解到南洋理工使用了不公開的GPU版本,最快。
5月22日14:30閉幕式,個業內大腕致辭,主辦方還請劉慈欣錄了段視頻。應用創新獎由清華大學(NAMD)、國防科大(WRF-CHEM)、國立清華(推測爲Palabos)、上海交大(推測爲HPCG,應該是主辦方儘可能平分獎項,應用創新和最高Linpack不能重複,因此順延了)獲得;最高計算性能獎歸南洋理工;最佳呈現獎歸太原理工;e-Prize計算挑戰獎則歸中山大學。一等獎的順序指出了名次,一所所學校的名字都被報到,而一直沒報到我們,最後只有我們和國防科大沒有被報到,也即冠亞軍就在我們兩所學校之間。大家既興奮,又緊張。“National
University of Defense Technology”,大家都很激動。 
5月23日與中山大學老師同學們一起吃飯,我問葉老師爲什麼去年參賽的幾位故人沒來參賽,只看到一位去年參賽的同學來觀摩。葉老師說人都換了,比賽日程與畢業生答辯時間衝突。大家都不容易,在夾縫中擠出時間來。
繼ASC'12、ASC'13後再奪冠軍。“今年終於把冠軍拿回來了。這終歸是屬於我們的榮譽。”“預祝isc滿載而歸!期待再收到一次你的郵件!”
功成ISC'15
作爲大陸前兩名,與國防科大一起,由浪潮支持參加第4屆HPCAC-ISC學生集羣競賽,在德國法蘭克福舉行,是ISC'15會議的一部分。回學校後迅即準備ISC'15,5月27日聯繫浪潮工作人員獲取練習機器。他們可以在賽前給我們提供機器,以供拆裝、測試使用。中間耽擱了許久,6月15、16日才陸續收到InfiniBand交換機、線纜、NF5280M4服務器。學校辦理手續花了近兩週時間。5月27日聯繫主辦方,6月2日拿到會議邀請信。我們以爲紙板邀請信才能申請簽證,又耽擱了好幾天。
最後幾天準備又燃起了樂趣,BMC逆向其樂無窮,再製作家釀監控系統。
提交完簽證材料後倒是兩天後(19日)就從快遞那裏拿到了簽證。我立即去辦理代傳遞的美國簽證,爲了下一個活動及遊玩,這對我很重要。倘若二者不可得兼,我會考慮後者。天有不測風雲,趕上美國簽證系統癱瘓,耽擱了許久。7月10日14:30就要乘機去德國了,沒有護照就無法出行。我在7月9日查詢狀態,仍是“Passport has been received from the consular section, and is currently being processed for delivery”。當即跑去問中信銀行工作人員,說我的護照沒到,讓我16:00再去,依然沒有。工作人員說16:00得到的這批護照就是明天狀態爲ready的,如果沒有的話就至少得等到第三天。之後和總行聯繫,說使館還沒有寄出來呢。我問寄到北京需要多久,工作人員說不好說,我問是不是三四天,她說可能是。11日到12日,13日到15日比賽,如果延遲三四天,我也就沒必要去德國了。萬念俱灰,感覺去不成了。晚上和一個九字班學長在烤鴨店吃飯。很難過,晚上去機房,我得把練習機器的Tesla K80和E5-2699 v3都拆下來裝好,以及準備好需要帶到德國的硬盤。這些工作必須由我完成。有一塊盤叫HISTORY,翟老師說我們得有傳承,把歷史參賽資料放在裏面。我把所蒐集的資料都放到了裏面,這是我最後可做的了。回到寢室,沮喪地對室友說,沒想到我還是要參加畢業典禮(時間與ISC'15衝突)。


7月10日睡到10:00,“但願長醉不復醒”。微信裏李愷威叫大家集合。我想裝作沒看到,仍躺在牀上,被對面寢室隊友的室友喊起來。很不情願地去了東主樓實驗室,完成最後的整理工作。做罷又百無聊賴地查了一下簽證狀態,“ready for pickup”護照可以拿了!急速拆卸完硬盤,奔向中信銀行,還真拿到了護照。電話問隊友還有多久出發,答曰大概還有20分鐘吧,疾馳到寢室,把寢室鑰匙交給傅左右,興奮地說:“玩玩沒想到,我還是沒去成畢業典禮!”隨手拿了幾件衣服,就飛馳趕往東主樓門口與衆人匯合。此番出行不能更驚險,大二隊友說沒想到還能再見到我。
7月11日,裝機第一天。ISC'15會場的各個展臺還在搭建中,學生集羣競賽佔了十幾個棚子。14:00多服務器、機櫃、鼠標、鍵盤、顯示器、網線、交換機等運來。衆人拆箱子、裝機櫃、佈置Ethernet和InfiniBand網線、放置配線架和交換機等。Mellanox給一些隊伍準備了InfiniBand EDR交換機和網線。中科大時有人來窺探我們的情報,帶隊老師也來問長問短,我們的老師不慎就露了一個風聲。我們也去探查他們,他們爲了展示環節還特地做了一塊大展板,上面舉出了各項應用的優化,不過被他們遮起來了。國防科大的老師和同學們也來了,他們學校的審批手續更爲麻煩,有兩個同學很晚纔拿到護照。
7月12日,裝機第二天。8臺機器裝了7個Tesla K80,EDR HCA卡也陸續換上。HPCAC-ISC一名工作人員來幫各個隊伍升級固件。
比賽的三天相比ASC要清閒不少。第三天的神祕應用很有趣,與ISC'14相似,13:00到15:00可以變更機器配置,15:00主辦方重置PDU峯值功耗,15:15運行一個給出的PyFR算例,16:00前得運行完並把結果放到U盤裏提交。
7月13日,裝機第三天暨比賽第一天,比HPL和HPCC。中午吃飯時王邈提出拆掉一個機器,8機5卡的方案改成7機5卡。大家討論後決定採納。14:26主持人Pak Lui發來郵件說每個隊伍每天只能超過3000瓦三次,之後每次會扣0.5分。
2015年7月14日,比賽第二天,比Octopus、PyFR與神祕應用Graph
500。張陽負責的Octopus先運行,卓有爲研究Graph
500。PyFR有兩個算例,要求用paraview可視化,沒有可視化就沒分。吳育昕說有一個算例可視化會碰到段segmentation
fault,讓我們都試試。我安裝paraview,在自己機器上遇到和吳育昕相同的錯誤,顯示窗口後segmentation
fault。王邈安裝Mac版paraview,也碰到了這個錯誤。後來我們推測是內存不足,難怪systemd-coredump沒存下core,因爲超過了默認的ProcessSizeMax=2G限制。我們嘗試讓服務器可視化,我在服務器上安裝了X11,但Xorg沒有啓用GLX擴展,CPU也沒有核芯顯卡,考慮用NVIDIA顯卡的GLX擴展。另一邊王邈通過昨天購買的Digital
Ocean德國服務器把數據傳送到學校,李愷威聯繫實驗室的同學用32G內存的臺式機可視化成功了。
7月15日,比賽第三天,LAMMPS與神祕應用。類似去年的Quantum Espresso,神祕應用爲現成應用PyFR的不同運行方式。15:00允許更改硬件配置,主辦方會重置PDU峯值功耗,運行時峯值功耗最低者取勝。15:15開始運行算例,16:00前必須運行完,在U盤裏準備好提交文件給主辦方,因此還需要預留出時間準備要提交的文件。而paraview的可視化可以稍晚提交。14:50王邈來拆機器,因爲服務器只提供兩個Ethernet網口,決定我和吳育昕的網線直連。監控程序分爲PDU功耗數據和機器數據兩部分,機器數據由我提供並顯示爲網頁,PDU功耗數據由王邈抓取並顯示爲網頁,兩個頁面投射到顯示器上。我準備控制腳本,吳育昕說這個算例就像是特地爲K80準備的,單核心顯存剛好夠程序需求,因此功耗可以進一步省下來。別人只道我們機器佔優勢,我們卻有苦難言。PyFR時間估算極爲準確,正如去年的Quantum Espresso,15:55運行結束,之後吳育昕準備提交到U盤的文件,15:58整理完,提交。
閉幕式上宣讀前三名,我們在焦急地等待。第三名和第二名出爐了,中科大和南非CHPC,他們是去年的前兩名,最有力的競爭對手。當主持人報到“Tsinghua
University!”,我們的喜悅之情無以言表,時隔三年再度奪冠。 
感謝陳文光老師的默默支持,在參賽能否維繫的危急存亡之際擔下重任。作爲我的畢業設計指導老師,也沒爲難我在實驗室坐班。E5-2699 v3和Tesla K80,沒有硬件支持。 感謝我們的領隊翟季冬老師,一直關心着我們的進度四,賽場上噓寒問暖,端茶送水。 感謝前一年的老戰友,我們的小教練李愷威,他更多地扮演着隊長的角色,而不是我,組織我們開會、提供器材、指導隊員們。
我的差事也交卸了。
7月18日乘坐航班CA966回到北京,到達時只有5:00多,回到學校,把Tesla K80和E5-2699 v3歸還了。找了半天離開時匆忙留在東主樓的自行車,嘎吱嘎吱回到紫荊公寓二號樓。此時畢業生離開宿舍的截至日期已過去三天。在一個大三隊友的寢室暫棲了一會兒,等輔導員和秦同起牀後拿走我的畢業證、學位證、報到證、成績單。然後到大二隊友的寢室,地上擺着傅左右幫我整理的遺留物品,畢業手續都幫我辦了,一時悲從中來。最後一次騎那輛自行車,拖着箱子來到東北門,離開了學校。
體會
之前有人採訪問起參賽隊伍的情況,我把它們分成三類:
重在參與。比如HPCAC-ISC 2015上的Universitat Politecnica de Catalunya,ARM處理器,Mont-Blanc Project;University of Tartu,AMD A8-7600 APU;University of Sao Paulo,4節點,每機2 Intel Xeon Phi+1 Tesla K80。
意有所指,機器針對性量體裁衣。主要指爭奪最高LINPACK,HPCAC-ISC上很容易出現這樣的隊伍,ASC上已經看不到這樣的隊伍了。他們的節點數往往較少(爲了節省功耗),在HPL以外應用上缺乏競爭力。比如HPCAC-ISC 2014上的EPCC at The University of Edinburgh,4機,
- 2 Intel Xeon E5-2680 v2
- 2 NVIDIA Tesla K40
- 64GB DDR3 Registered ECC Memory
- Intel 510 Series SSDs
網絡採用Mellanox 12-Port 40/56GbE。K40 745MHz,HPL成績爲10.14TFlops。還有HPCAC-ISC 2015的Jamia Millia Islamia University,應該是相似的機型。
志在必得,注重總分,以總冠軍爲目標。ASC上大多數隊伍都是此類。由於不像HPCAC-ISC或是SC,服務器是固定的,唯一能更換的是加速卡(通常只會用NVIDIA Tesla),大家的起點更爲接近,競爭更爲激烈,樂趣更大。
黃老師之前說過比賽的優化有三種之境界:
- 編譯成功,運行參數的調優。第一境的第一步編譯已屬不易,物理學家、化學家、生物學家、氣象學家們的軟件哪是那麼容易編譯得了的。編譯時的種種選項對性能都有影響,編譯器、庫的選擇也得對應用的背景有所瞭解。運行參數更是讓人沒有頭緒,我相信大家對此都沒有底。
- 代碼性能優化。用上體系結構、並行計算知識,找出熱點,加以修改。
- 算法優化。除了Xeon Phi小應用那種,這個大家可能幾乎都沒有觸及。
HPCAC-ISC主辦方的舉措,在我看來,讓比賽變枯燥了。主辦方可能會提供算例最優運行方式,這讓辛辛苦苦挖掘出的規律的我們很失望。臨近比賽我們會問各種題目評判方式的問題,尤其關注精度。主辦方有時不鼓勵改動代碼,我們只得慎之又慎。今年HPCAC-ISC,主辦方要求LAMMPS用一種特定並行方式,原因可能是該並行方式實現的作者是一名評委,他提議了這個算例。我們發現這種並行方式並不快,但不用這種並行方式就沒分。
也許比起賽前的準備,臨場發揮更爲重要。賽場上充斥着諜戰:互相打聽競爭對手的機器配置、應用優化情況、應用運行時間。每個應用少則4個,多則6個算例,需要運行半小時或更長的不少,時間緊迫,調度策略尤顯重要。賽場上出現失誤也屬常態,比如ASC'14上大家都沒注意到Quantum Espresso某測例單機效果好,多機運行,浪費了一兩個小時時間。更多的比如失手SIGINT、誤刪文件等。故障時有發生,如裝不上加速卡、機器損壞、負載稍高就崩潰等。本賽季ASC'15和HPCACA-ISC 2015冠軍,運氣很重要。
其他
SC從2007年起舉辦Student Cluster Competition,ISC與ASC於2012年舉辦第一屆比賽。歷史資料可以參考http://www.studentclustercomp.com/,規則參見個官方網站。
- 我很想瞭解初賽篩選機制。
- ASC只公佈第一天的成績,此後的看不到。HPCAC-ISC的成績也很隱祕,賽報上只能看到前幾名成績。若是怕面子上掛不住,希望成績能單獨發給各參賽隊伍,吸取教訓利於提高。
- HPCAC-ISC SCC不限於本科生,有很多Master of Science學生參加,可憐的李愷威。http://www.hpcadvisorycouncil.com/events/2015/isc15-student-cluster-competition/
- http://www.studentclustercomp.com/上HPCAC-ISC SCC的機器配置不準確,賽場上還有很多變動。
- ASC自舉辦以來規模逐年擴增,2014年起已經改稱“世界大學生超級計算機競賽”,並設置了一些觀摩隊伍。
- ISC'15閉幕式上,主持人宣佈Jamia Millia Islamia University的HPL破世界紀錄,即不承認ASC'15上的記錄。原因可能和規則有關,HPCAC-ISC 2015 SCC不允許瞬時功耗超過3000瓦,而ASC'15是3100瓦,不允許持續30秒超過3000瓦。