从ASC'14到ISC'15——我的超算竞赛生涯谢幕

世界上大型超算竞赛有: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分展示环节。展示角度根据黄老师看法应该注重物理原理,我倒是更倾向于从计算机角度出发,物理原理非我们所长,难以成理,但也不好抵触。之后颁奖典礼,花落上交,魂断中山,泪水在眼眶里翻涌。
SU2应用创新奖

我们有可能会参加下一届比赛吗?黄老师的愤懑、失望,太多的遗憾,再参加的机会不容乐观。“必当‘燕然即须平扫。拥精兵十万,横行沙漠’,但遗憾的是连说‘来年再努力’的机会也没有了”。

晚上主办方组织聚餐,比赛中队伍间沟通极少,这是个难得的交流机会。和中山大学陈炳炜交流系统管理经验。晚上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和中科大。流泪,憋屈。

HPCAC-ISC 2014 SCC奖杯

赛后总结,感觉机器劣势较大,服务器待机功耗太高,散热也不好。南非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月18~19日),两天比赛(5月20~21日),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”,大家都很激动。
ASC'15奖杯

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!”,我们的喜悦之情无以言表,时隔三年再度夺冠。
HPCAC-ISC 2015 SCC奖杯

感谢陈文光老师的默默支持,在参赛能否维系的危急存亡之际担下重任。作为我的毕业设计指导老师,也没为难我在实验室坐班。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),大家的起点更为接近,竞争更为激烈,乐趣更大。

黄老师之前说过比赛的优化有三种之境界:

  1. 编译成功,运行参数的调优。第一境的第一步编译已属不易,物理学家、化学家、生物学家、气象学家们的软件哪是那么容易编译得了的。编译时的种种选项对性能都有影响,编译器、库的选择也得对应用的背景有所了解。运行参数更是让人没有头绪,我相信大家对此都没有底。
  2. 代码性能优化。用上体系结构、并行计算知识,找出热点,加以修改。
  3. 算法优化。除了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瓦。