不正经的围观群众与吃喝玩乐——我的 ASC17 之旅

时光流转,熬过了半年从零开始的学英语生活,又到1月,ASC开球的时候。凑了三年热闹,我自然也不会放过这最后一年。好在今年不用我下场,毕竟我自己作死选了个说难不难说水不水的毕设题目。我又贪玩,中间跑出去日本浪了半个月。所以,又要拖累叶总了,他又要管比赛,又要管我的论文,我真是给他添了太多麻烦了。

今年的ASC比赛非常奇特,我们也遇到了很多新的问题。第一个问题便是人选:不知为何,今年新报名参加选拔的小朋友人数比去年大幅下降,好在里面还是有勤劳能干的,加上有三个大三的同学有去年的观赛经验,我们的人手才将将够用。第二,题目和平台都很新。初赛的题目有三道:Knight’s Landing 上的HPL,太湖光上的海浪波,以及机器学习的题目。HPL或者HPCG是往年惯例了,然而今年却要跑去KNL上做,只因改算法代码的那道题被太湖光抢了,总得拿点什么来安慰Intel。海浪波去年已经比过了,清华的老师还做了个太湖光上冲 Golden Bell 奖的版本出来,今年在太湖光上比这道题,还真是够看得起我们这些毛头小子的。那道机器学习的题就真是前所未见了,你说一个比赛谁跑得快的超算比赛怎么好端端的就去搞机器学习的玄学了呢?而且放着 TensorFlow 不用,去用百度去年10月才开源的Paddle,司马昭之心啊。HPL惯例是写个脚本遍历参数,大家都省心,只是郑州大学的KNL集群有些节点跑出来的结果总是飘忽不定。组委会自然是『推荐』我们去改 Linpack 的源代码的,然而没有谁会傻到去和硬件厂商自己的优化叫板。我照例去帮要改代码的海浪波,叶总得去硬啃他也不怎么熟悉的机器学习。我主要是去看论文和公式,顺带帮小朋友们干些杂活。无奈清华冲 GB 的论文写得太简练,一些关键的地方我也只能揣着糊涂当明白。小朋友们忙别的的时候,我硬着头皮把计算的核心部分从 F90 翻译到了C,毕竟大家对 C 都更熟悉。翻译的过程我很明显感受到海浪波的代码的确是科学家写出来的代码,有很多可以理解的快速实现方法,为日后的优化留下了不少空间。我们的代码上从核进行加速的过程一直不顺利,初赛的时候只有部分计算核心上去了,而且还没有做向量化。能进决赛,实在幸运。

进了决赛,题目更加有趣了。七道题目里,有常规的跑分专用HPL & HPCG(仍旧是在自己搭建的集群上),有初赛的海浪波和Paddle,有保留节目Mystery,多加的两个分别是单KNL节点限定的LAMMPS和在自己的集群上跑的第三代基因测序拼接对比软件Falcon。KNL 上的 LAMMPS Intel自己本身就做过优化,所以我们动不了多少,仍是以调参数为主(当然,组委会是非常『推荐』我们去改代码的,初赛的时候他们还『推荐』我们去改 Linpack 的代码呢,真是呵呵)。Falcon就比较麻烦了:这货与其说是并行计算,不如说是分布式计算。Falcon没有用MPI做底层,完全是按输入切分任务,然后通过 Python 脚本来控制任务流,依赖 torque 等作业调度系统来进行并发任务调度。我们花了很长时间来 setup 我们的作业调度系统和弄清楚 Falcon 的业务逻辑。中间我有半个月跑去日本浪了,回来以后基本就进入看戏模式,偶尔帮忙做些技术试验。我们有一点做得很不好的是,始终没找到方法对 Falcon 的整个计算过程中不同的进程和函数的耗时进行采集和综合分析,导致我们只盯了一两个大头并且没有取得什么进展。海浪波那边,他们进了决赛以后,重构了从核代码的整体框架,到后来写了差不多 100K 的从核代码,对应原来约 20K 的 F90,真是辛苦两个小朋友了。硬件设备方面,我们仍旧只有最便宜的 SATA SSD,以及到出发前两天才借到的 Tesla P100。比起 K80,P100 好用不少:待机功耗和满载功耗都降低了,而且只是单芯片,性能损失没有那么大。然而我们没有多少时间测试 P100 的玩法,只能去到现场再测了。

今年决赛在无锡超算中心,毕竟是国家队的场地,吃喝住行都安排得非常好。报到以后,不管是正选队员还是观赛人员,都一视同仁,发给制服、饭票和太湖光的纪念U盘。住的地方是五星级酒店——隔壁的同样高端的国际公寓。我跟着叶总上了他13楼的单间看,小半个无锡都收归眼底了,跟不用说只在一公里之外的无锡超算中心。里面还有各式豪华装备,包括有某些特殊功能的马桶盖。每天三餐都是自助餐,菜品少一点也不是什么值得挑剔的地方了。

前两天装机调试,从场上的情况看,各队都遇到点问题。虽然今年用的服务器型号和去年的一样,但是浪潮的工程师说他们已经重新设计了一次主板。我们一开始被坑了是因为我们都没见过SAS 卡长什么样子,不知道要拔下来,结果装好系统的硬盘插上去死活启动不了,差点就要重装了。我们在装 P100 的时候,也被风道和供电线走线问题卡住了,还好赶紧抓了工作人员来问。到第一天下午,我们就基本把系统搭起来,并且开始测试。场上也有很多队伍很有意思:第一次进决赛的中国海洋大学居然还带了加速卡版本的 KNL 过来测试(虽然最后也没有用);上交熟门熟路改造风道和换硅脂散热,还把他们所有的节点都命名为『baohua-x』(x是数字编号),真是太暴力了。我们的系统最后应该是有一些散热的问题,因为高功耗跑了一段时间以后,即使开风扇吹凉了,系统待机功耗还是比刚开机的时候高了差不多两百瓦。到第二天测试收尾,准备正式比赛的时候,我们其实还有相当多的东西没有测完。于是 HCH 和 WZM 跑去打印了一张忧郁猫的图片,贴在我们的机柜上。事实证明,在接下来的两天里,这只猫为他们赢得了很高的回头率。第二天下午我还抽空到下面的太湖之光机房区参观了一下,然而只能隔着玻璃看。清华的同学就不一样,毕竟有自己人,WangMiao 直接就有师兄带着进去打开机柜来看了,真是羡煞我也!

我们这种没有 PCI-E SSD 的穷队连 SSD 都要分批次分规格买……

到第一天正式开赛,我们第一枪打 HPL 和 HPCG 基本都达到预想,接下来就是开跑 Falcon 了。Falcon 的两个小算例跑完以后,我们直接上第三个 20+ G的大算例。之前我们在其他机器上跑过 thaliana 的数据,也是 20G 左右,所以我们大概能估计决赛这个算例的耗时。然而,悲剧发生了——跑了一半有多以后,我们的集群有一台机器挂了。到现在我们都没有搞明白为什么会挂,猜测可能是 NFS 的问题。这暴露了我们另一个准备系统时的缺点:我们依赖监控软件 Paramon,并行科技的人跟我们说 Paramon 支持 E5v4 系列,然而实际上我们根本看不到微架构信息和内存带宽占用信息,以及 Paramon 的 I/O 监控也做得不好,所以我们今年看监控能看到的信息少了很多。跑挂了一个大算例让我们浪费了将近两个小时的时间,这个时候叶总果断决定切掉这个算例去跑神秘应用。神秘应用是一个流体力学计算程序,第一个小算例容易跑,第二个我们也是跑不完,非常遗憾。每年的神秘应用都不求调优,只要能正确装好程序和依赖库,就行了。今年我们大概是有什么地方没有装好,跑得相当慢。北航今年倒是老实有福气,Falcon 第三个算例直接不跑,然后憋着一口气跑完了神秘应用的所有三个算例。Falcon 全部算例都跑完的好像只有上交。

到第二天比赛,赛场的氛围就完全不一样了。一方面,这一天在各队自己的集群上要跑的只有 Paddle。我们原本担心决赛的数据会很大,而我们并没有配好集群版的 Paddle ——这货的集群版只支持 Docker,我们配的时候遇到了诸多问题,这些问题通通都没有社区和手册可以解决,百度就是在拿这些参加比赛的学生来踩地雷和『测试驱动的文档补完』(甚至到后来,在 GitHub 开 issue 作者都不回复了)。结果拿到数据一看,就比初赛的大了一倍而已,各队就放心用单节点来跑了,于是功耗监控显示屏自然也一片和谐——我们戏称,第二天跑的是 Green500。另一方面,昨天的成绩出来了,这就有很多耐人寻味的故事了。清华的确非常专业,在四道题上都取得了很好的成绩,第一天已经甩开其他队伍20多分,已经提前把冠军纳入囊中了。我们很惨,Falcon 和神秘应用都沉船了。上交也惨,Falcon 也沉船了——被清华摁在地上摩擦,跑了所有15分的算例只拿到了3分(我们是跑了9分的拿了2分),由此可见清华对 Falcon 的优化有多好。HPL 和 HPCG 的 3KW 功耗下的世界纪录又一次被破了,这次是被潍坊学院破的。他们只打这两题,其他都放弃了——对,神秘和 Falcon 连送分的小算例都不跑,直接放弃。嘛,他们也算达到目的了——破了纪录,出了名,这就够了。像我们这些只有8块P100的队伍真的就心有余而力不足了,没10块卡根本冲不了记录。第二天最后收机器之前,上交还做了一回疯狗,放开所有功耗限制,直接跑了个 4400W 出来,引得其他队伍跟着一起疯狗。

正式开赛的两天我在现场滴流转,见了不少熟识的老师,也见到一些别样的风采。最值得大书特书的是东南大学,在一众的和尚队里,东南大学竟然5个队员里有4个是妹子!高达80%的队员是妹子!男女比例1:4!而且东南大学的妹子们看上去的确是妹子,不像国防科大的妹子,看起来有一股肃穆庄严的气息(以及能一个人抬一台服务器下来的力气)。

华沙大学队伍里有个小哥穿得非常风骚,还长着一张外国人网红脸,也颇为引人注目。第二天 Jack Dongarra 来的时候,我又厚着脸皮去要签名了,除了签名还要到了一段话。

第五天的展示,我在门外听了我们的,今年的小朋友们讲得比我去年好得多了,真是羞煞我也。下午颁奖是最令人落寞的环节,因为我们一个奖也没有,即使是总分第四,也没什么用。晚上的聚餐是最酣畅愉快的时候,因为各队终于可以相互交流一起吐槽了。今年的海浪波我们和清华在三个算例上互有胜负,但是加起来还是输了一丁点,也该是我把15年的好运还给清华了,祝贺他们拿了 e-Prize!后面第三名已经被我们拉开了四五倍的距离了,再往后甚至有慢了我们几百倍的。这道题其实对外国的队伍非常不公平,因为太湖之光的基础语言编译手册没有英文版的,只有一份简单的上机指南有英文的,外国队伍要使用从核加速就只能上 OpenACC 这种凑合用的东西。Falcon 这道题,各队真是尽显奇招,思路清奇各有不同,然而还是清华抓得最有效,一刀砍掉了不少冗余的计算。可惜东南大学的同学们颁奖完了就回南京去了,没来聚餐,要不然怕是要成为场上的明星队伍。到后半场,华沙网红小哥拿着白酒(每桌配了一支红酒一支白酒,白酒是梦之蓝)四处跟人干杯和吹水,我和 WangMiao 逮着他一顿猛灌,小哥喝得不知道怎么形容某些题目和代码的时候连『brainfuck』都出来了。

周六,我们和清华、台湾清华惯例一起出去玩,这是14年开始的,只有16年中断了一年。我们就近去了鼋头渚,在那边走了大半天。可能是由于有雾霾,我并不觉得太湖有多美,所以也没拍什么照片。倒是我在路边第一次见到了中国樱桃,我还摘了两颗尝了一下,略酸,没有什么甜味。

我四年的ASC之旅到此就落下帷幕了。很遗憾,我终究没有机会去一次ISC和SC。希望以后在美帝念书的时候,我能去SC开会,然后见到母校的队伍吧。就像叶总14年的时候说的:

 

不正经的围观群众与吃喝玩乐——我的 ASC17 之旅》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注