【ASC15】比赛篇

由于没有时间记日记,加上本身我们还要改代码也是忙得够呛,我对比赛过程的记忆已经不是很清晰了。我只能尽我所能将我所看到并且还记得的比赛前后一并写出。

17日

早上我们去比赛场地所在的数学学院9层视察一下。1楼是太原理工的计算中心,也是Gridding这道题的运行环境。我数了一下各机柜内的服务器数量:中大、台湾清华、上交、麻省理工联队12台,国防科大没数清楚是11还是12,太原理工、匈牙利的米尔什科奇、港中文、清华是10台,南洋理工没数清楚是9还是10,浙大8,山东大学9,西北工业大学7或8,北航、泰国农业6,乌拉尔联邦大学好像只有4台!不过这还不是最终的数量。

中午我找CUHK的队员们交流了一下,大家聊得很愉快。他们是一个研究生也是老队员带着今年的参赛队员过来。我看到他们带了8块Titan Black卡,还有一堆SSD。后来我们的老师跟他们聊的时候才知道,他们几乎把香港地区所有的Titan Black都买断货了;不买Tesla是因为时间不够。

下午和系统组的人去拿早上订的硬盘盒,因为今天早上发现服务器用的2.5寸的SATA盘,我们却准备了3.5寸的母盘。还好硬盘盒能及时送到,并且叶总也带了两个U盘,可以用来装系统。这是我们遇到的第一个情况,属于我们没有提前做好情报搜集和准备工作。

 

18日

第一天装机。赛场比去年的小,人又比去年的多,所以场地很拥挤。我们先拆了四台机器来装K80,其中有一台没办法从导轨上拆下来,就只能在上面装。扩展卡插槽很难插进去,而且其导风罩和PCIE供电线很挤,很难装下。后来找了浪潮的工作人员来才知道K80有专用的线。装完卡我就在后面帮忙装IB网线,但是还没上交换机。LSY(系统组主力)发现只能用前面的USB 3.0来装系统,所以装机进度有些延后,其他都还算顺利。到早上9点半,国防科大已经开始跑Linpack了,后来才知道他们买了一台这次用的服务器,装好了10多个系统盘上来插上就用。太原理工也很快,9点45也开始跑了。其他各队都还在装机中。

大概到下午2点,我们才把所有的盘dd复制好。但是K80的机器都没办法点亮,查了好久,才知道是我们的供电线插反了:3根黄线的那一头应该是插在主板上的。这种情况我们一直没遇到过。到下午3点半,所有系统都可以成功启动了,接下来LSY便在配置网络和其他设置。现场只有我、LSY和CH,其他人都回去继续调试他们的程序了。

 

图片链接

满手内存条,这里就256G的DDR4了,价钱比我所有的电子设备加起来都要贵啊!

P.S WordPress不知为何把图片压了比例,无法按照原来的比例来显示,所以直接放链接算了。下同。

 

打听了一下,清华的K80系统不认,大概需要换机器。乌拉尔联邦的直接上了MIC卡。国防科大没有用卡。台湾清华K80 K40都有,看情况使用哪一种。

下午搞IB网一还没搞好。先是有些接口的灯没亮,我们一开始怀疑是有两根线有问题。那时候已经8点了,我和张老师把线全部拔了下来再重新一根根插上去。好在我之前给每根线都贴了标签,这样插起来都知道对应关系。到8点半,别的队都走了,我们才让所有的线的连好并且亮绿灯。但是,奇怪的事情出现了:随机有些机器的IB网是ping不通的!没办法,只能第二天换一台交换机试一下了。

 

图片链接

机柜后面凌乱的走线。黑色粗圆带蓝色塑料标签的是IB网线,一条就要软妹币3500。蓝色的是千兆网线。右侧是浪潮提供的PDU板,有些不稳,如果没插好的话电源甚至会冒火花。

 

我下午试着提交Gridding,但是他们的队列卡死了,一直到5点多才恢复,所以此间我在帮LSY。吃了晚饭回来,发现MIC卡版本和CPU版本的都报错了,我只是定位了错误所在,但是还没来得及改。回来宿舍以后我让YRK先试着把我们每次做的samples数从一亿改到五千万,还有他发现的别的一些问题,改了以后才能跑。今天给的新算例有600个channel,使得很多点都重复了,我最后一天做的那个优化开始大展神威。在天河二号上的16个节点,我们跑出了197万的速度,单节点大约12万,和之前在实验室里跑Workload2一样。我想,只要正式比赛的数据再大一点,我们一定不吃亏,而且说不定能占到更多的便宜。但是MIC版本的还没调试正确。

 

19日

出麻烦了,而且是大麻烦。早上换了IB交换机,依然不行。后来查出来是系统版本不兼容的问题,CUHK和另外一支队伍也遇到了这个问题。如果是Cent OS的话,需要驱动和系统都是7.0的才能用。好在CUHK施予援手,我们得以在下午重新装机器。台湾清华实在太牛逼了,他们测了四五个系统,轮流测K40和K80,发现6系的Cent OS供电有问题,所以要用K80必须要用7系。这种效率和准备,实在让我惊讶!

早上和下午我们一直在天河二号上面查错和加速。之前有一个分层来提高并行度,今天发现这里有错,而且一直调不对,最后发现反正分层会减慢速度,就干脆不要这个分层了。然后压缩了不必要的网络Reduce和增量开辟中间数组,又把速度提上去了不少。据说港中文在这边的速度在20~40万左右(当时还不知道是16节点速度还是单节点速度),下午我过去测,发现我们的单节点速度还没赶上他们报出来的值,这让我感到亚历山大,而且他们放话说这两天还要再加速一倍!

晚上大家讨论我们最后的硬件配置。我们知道现在国防科大有13个纯CPU的节点,太原理工也不用卡了用12个节点,上交有一点卡,CUHK最后决定不用显卡只用CPU,台湾清华撤下了所有的K80用K40。今年没办法调CPU的模式,从C0到C6都不行。而且场地的空调不够给力。至于K80,不知为何无法降频,温度又卡在那里,所以很多原本打算用的队伍最后都不用了。叶总打了好几轮电话,找另外一个老师讨论了一下,之前充的100电话费都打光了。最后我们决定:用两个节点带4张K80跑Linpack和NAMD,另外再加7台机器去打其他纯CPU项目。这算是一个无可奈何的折中方案吧。

 

20日

第一天正式比赛。我们抽签抽到在21日下午跑程序,还有一天半的时间可以调程序,真是万幸。我和YRK继续在宿舍里改代码调优。我们改掉了之前的排序算法,速度又快了不少。另外我们也调整了一下别的一些参数。这些测试都是直接用实验室的账号在天河二号上测的。如果没有天河二号,我们要真不知道最后两天要怎么办。

早上开始比赛,我们遇到问题了。浪潮机器的风扇不知道怎么回事有问题,好像是莫名其妙关掉了,所以我们被迫延迟了一个小时。早上下面用于跑Gridding的机群由于空调问题过热死掉了,Gridding被延迟了。我们的Linpack跑了7.2T,算是达到预期了。南洋理工11.9T,用了8张K80,破了3KW功率限制下的10.4T的世界纪录!我们讨论了很久,都没想清楚他们是怎么把功耗控制得那么好的,可惜后来没有机会去向他们请教。 WRF能跑,但15分里只跑了一个4分的算例,算是没交白卷。其他队不少也只是跑一个算例或者编译没过。清华例外,因为他们有老师做过这个。NAMD跑得还可以,跑了13分的算例,但不知道最后能够拿多少分。

 

21日

早上我们继续改Gridding的代码。很惊险,早上还查到了有一个内存分配的Bug,改完以后已经没有时间去处理其他的问题了。到11点以后,我们就停止所有新的改进,开始最后的检查。12点20我们从这里出发,原本是12点40开赛的,结果去到以后才知道港中文跑的机器出了点事情,时间被延迟了。等了一会儿到差不多1点,本来该轮到我们了,但是由于进入浪潮的机器需要他们重新设置账户,而他们的人员又去了吃饭,所以又拖了差不多20分钟。我们大概1点半左右开始。此前我都在和港中文的带队硕士聊天。听说浙大16个节点跑了80~90万。最后港中文的速度和浙大差不多,稍微慢一点。我们比赛前打听到的其他学校的速度都比这两个低。润楷进去以后,很快就出问题了,还好不是我们的错,而是浪潮有一个节点在我们算完第二个算例输出的时候挂掉了。途中我听说,清华“跑的时间是个位数”,我顿时就紧张了。因为按照浙大的“算例要算两分钟”来推算,我们的大概要跑10多秒到20秒。最后跑完出来,我们也有一个算例跑到了个位的秒数。我想我们的速度应该和清华的差不多了,就不再多想了,听天由命看最后的结果。

3点半我们回去宿舍讨论PPT,6点回去赛场拆机器。赛场太小了,所以合影起来很麻烦。台湾清华依旧是把绿色的“乖乖”送给其他队伍。

 

图片链接

除了乖乖,台湾清华每年都会带一个布袋戏的像过来,摆在桌面上。我想起了寒假时玩的《雨港基隆》,特意上网找了这张图放在平板里,拿着对比拍了一下。不过台湾清华在新竹,不在基隆。

 

我们跟港中文、清华、太原理工、浙大都合影留念了,最后还有一张大的合影留念,所有人都站在一起,我们还有些人要站到后面的桌子上。我过去找清华的人问他们的Gridding,大家的速度基本都一样,最后结果我们并不清楚,因为浪潮说了算。我跟清华负责的那位同学聊了一下,说完我们的速度以后,我就说了“乘法分配律”五个字,两个人就都笑了,开始使劲握手。对面那个同学说,他一开始还不知道打算怎么跟我们说呢,这五个字太精炼了。随后我们交换了联系方式。我也被太原理工负责这道题的同学要走了联系方式。

下去合照的时候顺带参观了一下太原理工的计算中心,那些浪潮提供的机群。我们开了一个机柜,发现里面才两台机器,还都没上IB网,不禁有些失望。大概是先占地方,以后再扩展吧。

其他项目:昨天的NAMD出来了,我们跑得并不太好。Palabox还好,跑完了三个算例,还有两个不够时间跑。早上的秘密应用是HPCG,然而这不是一个开源的软件,只有组委会提供的一个CPU版本的源代码。GPU版本的英特尔和NVIDIA手上各自有MIC和GPU的二进制包,但是不公开。我们最后只能跑了CPU版。南洋理工跑的是GPU版,所以跑得很好。

晚上在宿舍里讨论PPT的事情,讨论到12点,就只剩下Gridding没有初稿了。YRK和他们下去弄,我先睡了,感觉有点对不起他们。

 

22日

早上正选队员们去做Presentation,我们其他人各自睡懒觉。他们Pre完回来以后,我们去画了一下Gridding的分数公式曲线图,原来以为是取了对数,结果画出来的图是几乎线性的。这让我们有点哭笑不得——何必搞出一条如此复杂的式子呢?

下午的颁奖典礼,一等奖各队(也就是进了决赛的都有一等奖)从后往前颁发,我们是第四名,台湾清华第三,国防科大第二,清华第一。这个结果让我们多少也有点意外,因为我们其他的题目跑得并不很好,看来是Palabox和Gridding跑得比较好,拉了不少的分。

我们还拿了e Prize计算挑战奖,这是在是令我有点不敢相信。可惜今年奖状上并没有我的名字[注],所以还是有些遗憾的,而且明年我上场的压力就更大了。嘛,不管如何,明年都尽力去做吧。

 

注:我们超算队有9人一起干活,我和YRK两个负责Gridding。但是规定上场的只有五个队员,奖状只写这五人的名字。所以就在9人里,把4个大三的全部派了上去,另外再将系统组的主力LSY(信科院大二)放了上去。

【ASC15】比赛篇》上有1条评论

  1. 今年能撑起来,你真的帮了不少,辛苦了。至于后面的挑战,一点点来吧。收集信息这块,不止是队伍间的,跟赛委会这边打探,也是很重要的。

发表评论

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