时光荏苒,转眼间就是8102年了,从1月底在学校官网得知asc18招新,到2月春节刚结束就匆忙返校,再到3月一起通宵搞完初赛,仿若时空跳跃一般。前些日子还对着沾衣欲湿的杏花雨戏言回南天要来了,今天却是烟花三月下扬州之光景。不过这次去的不是扬州,而是豫章故郡,洪都新府——南昌。     这次是由武广高铁北上经长沙转沪昆高铁到南昌,不得不说300km/h的速度还是挺快的,但这两条线的地基沉降和行车稳定性还是值得担忧,相比我常坐的成绵乐城际铁路,武广这颠簸,简直不像高铁,别说什么硬币不倒,水杯里的水不被晃出来就不错了。

刚下高铁南昌西站

    经过近4个多小时的颠簸,离开了夏意炎炎的羊城,下车便迎来了一缕微凉。细想明日就立夏,这微风夹雨也算是暮春最后尾巴,此后自当门外无人问落花,绿阴冉冉遍天涯了。

中山大学ASC18出征队员合影

    南昌大学负责接送我们的两个志愿者小姐姐非常热情,

签到处前湖宾馆一楼大厅

    不过,就是,赛会提供的住宿地点,并不在看起来还行的签到处,而是在什么豫章示范学院里面的培训楼,地图上都找不到的地方真的是服气。而且有的房间洗手台还漏水(甚至更糟),当晚开会的时候,大家一致决定换到签到的前湖宾馆,杜总(今年的指导老师)更是爽快的答应了。尤其是第二天早饭的时候,看着外国参赛队员盯着桌上的东西整个人都蒙蔽想说WTF的表情,告辞,赶紧溜了。于是乎第二天一早大家拖家带口,不对,是拖着箱子跑到比赛现场,大大小小行李箱子堆满了原本就狭小的场地,也算一朵奇葩。

55日 装机第一天

历年中大的位置都是在场地入口处,今年也一样。但是今年每个队伍的占地面积比去年小了太多了,挤得不行,以致于最后我们抢了两张桌子形成半月形还是只能容纳4人在里面,人再多就只能选择坐地上了。所以这一天,会发现一个神奇的现象,中大队桌子旁边堆满了行李,行李堆旁边坐满了人。     8点进入现场后,把行李放好,桌子椅子摆好,就立刻开始拆机装机。杜老师也搭乘早班高铁,一大早从广州赶赴南昌比赛现场,帮着一起拆装机器,调试系统。     这次我们向赛会申请了十台服务器(浪潮Inspur NF5280M5),每台服务器具体配置如下:     CPU: Intel Xeon Gold 6132 x 22.6GHz14 cores     Memory: 16G x 12DDR42666Mhz     Hard disk: 480G SSD SATA x 1     Infiniband Mellanox ConnectX®-3 HCA card, single port QSFP, FDR IB 简言之:单节点两颗Xeon Gold 6132,14 2.6Ghz,内存192GB6通道 ,一块速度高达56GbpsIB网卡,所有节点通过一台SwitchX™ FDR InfiniBand switch, 36 QSFP port IB网交换机连接。 同时,我们一行人携带了10NVIDIA Tesla V100 16GB显卡,以及101.6TB的戴尔sas固态硬盘。价格高昂V100自然是买不起,只能借,这里也感谢赛会合作方思腾合力提供的部分显卡。另外杜总也非常给力,借到了6张卡,最后两张甚至是在出发前也就是在55号中午才拿到,可谓千钧一发。1010卡,这便是最初设想的异构超算集群方案。

已经装好的1010卡超算集群

    由于今年的队员都是头一次参加比赛,再加之学校里从没有接触过如此多的设备,在现场可以说是非常的手忙脚乱了。 首先,拆机插上显卡硬盘,再放回去通电开机,进bios调设置,比如启用调CPU功耗控制策略内存频率启动选项等。果不其然,问题就来了,硬盘读不出来,搞什么鬼。带的101.6TB的装好系统的固态硬盘竟然没有一个能被主板识别的,惊了。看对面的已经亮完机系统都装好,我们连一台机都起不来。经过一番拆机查看,发现这机器是2条sata线扩展成8个sata口,我丢,这特么,浪潮服务器的白皮书上不是说好了支持sas ssd的吗?请赛会浪潮工作人员来看,一个工作人员还在说不是说支持sas硬盘吗。。。作为一台服务器竟然不支持sas盘,服了。于是乎,我们带过去的SAS盘全挂,10块装好系统打算即插即用的也没无计可施。。赛会作为补偿,多给了我们10sata ssd。天无绝人之路,幸好我们准备了Plan B,走之前专门用两块普通sata ssd备份了系统,以往万一,没想到真的成万一了。而此次赛会提供的ssd型号也正好是intel S4500 480GB,跟我们带的sata ssd一模一样,于是,插上救命盘,开机,完美进系统,开始dd拷贝,一生二,二生四,四生万物,差不多到11点半,所有的盘终于dd完成了。赶紧重新装机插盘,10台机终于都启动起来了。这时候,网线和ib网该插的也插完了,只是显卡只装了两张上去。这是大家都一起忙活起来,一边改系统hostnamehosts,网卡ip,另一边正好重启的间隙把显卡插上去。因为正好是中午吃饭,所以刚刚吃完饭的杜总也来帮我们拆机装显卡。

众人合力从机柜上拆下机器

     为了方便我们控制每个节点,采用了千兆以太网连接组网。我把我带过去的路由器也插到交换机上,这样笔记本直接通过WiFi就能控制了,不用担心线被绊倒然后机毁人亡。为了使集群能上网,我尝试用路由器桥接赛会现场的WiFi,但是因为一时手抽,我弄翻车了,甚至把2.4G WiFi直接改得没有了,,,为了保险(其实是为了方便,没太多时间了),我转而使用windows电脑连接现场WiFi,然后共享给有线网络,再把路由器网关设置为这台电脑的ip,这样连上wifi的大家以及通过交换机连入路由器的集群都能愉快的上网啦。

超算集群通过交换机与路由器相连

     就这样差不多下午两点,我们10台机都乌拉乌拉的转起来了,其中8台装有显卡。至于为什么10张卡只装了8张,我也忘了,或许是要测纯CPU节点功耗?不过无伤大雅,赶紧把系统测试完才是当务之急。这时,吃饭回来的队友带来了两张吉祥物贴机柜上,祈求之后不要崩得太厉害(事后证明这是毒奶)。

运行起来的集群

机柜和吉祥物

分头行动

    这天下午差不多三点,所有机器环境配置完毕,这时让各个应用分别试跑一下。 不跑不知道,一跑吓一跳。首先是relionV100上单卡表现大跌眼镜,因为访存结构的改变,导致写回显存的速度比k80慢,所以在v100虽然性能比k80强了很多但实际表现并没有高多少。 另一个就是遇到了坑爹的ib网,多卡HPL成绩远不如单卡,单卡最高跑到6.5T左右,非常恐怖接近90%的理论性能了。而二机二卡跑一次,却发现不到6T,我擦,两台机两张卡还远不如一张,开什么国际玩笑。此时,cfl3d那边也遇到了mpi环境问题,不过还好解决了。

杜老师亲自上阵帮忙调试

    此时差不多下午五六点了,杜总听说我们mpiib网有问题之后,开始帮我测试,一番操作(两节点IB网测速)后,发现在发送量稍微变大一点的情况下,ib网通讯速度从6GB/s突然跌到不足3GB/s,而且延迟激增,这对于吃通讯的应用(所有应用都吃通讯)来说是致命打击。然后,重启,重装IB网驱动,各种方法都试了,还是不行。尤其是IB网驱动,剧毒,卸载不了,而且重启一次等待五分钟,及其耗费时间。然后此时已经8点了,开始赶人拉电闸。。。。GG,第一天什么也没跑出来。。。 当晚,大家齐聚一堂,开会,首先是总结今年装机进展(惨不忍睹),分析当前情况,明确明早第一件事情是解决ib网问题,然后让各个应用通跑一遍,剩下的时间给hplhpcg调参。至于机器配置,在大家综合功耗与手里仅有的10张卡之后,无奈的选择了510卡的配置,如果多两张显卡有612卡跑hpl差距不会很大,但是hpcg会高一下,其他应用因为多了一套机器,肯定会快一些。

装机第二天

来到比赛场地,按照原定计划,拆机器装显卡装硬盘,一番捣整之后,我们的配置如下: 共5节点,1主节点,4计算节点。所有节点CPU、内存、GPU配置相同,均为二路6132,384GB内存,两张V100 。主节点三块硬盘,一块系统盘,另外两块做nfs。计算节点每个除系统盘外,各有另外两块盘分别做两套四节点的gluster。两套gluster可以做读写分离,做nfs的盘是我们原来带过来的盘,用作备份数据之用。 改装完配置之后,我们便有5GPU节点(正式比赛用),5CPU节点(测试用)。开启全节点跑HPL用于测试稳定性,然而昨晚出现的mpiib网的问题今早完全没有,放开手脚跑功耗也是非常美丽,一度接近6000瓦。 之后只使用部分节点运行HPL,以测试不同节点的功耗关系。此时奇怪的来,关了部分节点功耗并没有减少;运行的节点数增加跟功耗增加也非线性关系(直白点就是毫无关系);甚至如果只跑某些节点其余待机,功耗相较全部待机竟丝毫未变。太玄学了,怀疑是电源问题,全部关机,单开,换插座一番操作后,发现是有几个电源插座不能被功率仪统计到。坑,又花费了一个上午的时间,结果是赛会的东西又出问题。不过话说回来,如果我们不告诉赛会的工作人员,悄悄咪咪的用这几个不会被统计到的插座,岂不是能一步登天大破世界纪录,手动滑稽。修改了电源线配置之后,再次启动集群测试,嗯,嗯?跑到一半发现有个节点挂掉了?又是一番操作发现是电源“爆炸”了,无法正常供电开机,好吧,再次找到赛会工作人员,换一个电源。至此,我们的集群终于装好了。

坏掉的电源 长城1600W

    时至午后,我们去参与宣传片的拍摄,这也花了一些时间。之后系统组、优化组、应用组、AI组各司其职,利用机器多的优势,先把各自的应用在集群上跑起来,花了一天半时间解决有无问题,留给解决能不能跑和跑的快不快的问题只有半天了。今年这状况也算是历届最惨之一了,除了asc16驱动大翻车现场重装之外,可能也就今年问题最多进度最慢了。RelionCFL3DCNTK陆陆续续跑了起来,简单测试之后基本没有问题。HPCG抓住应用启动的间隙调参测试,也算试出了一组比较好的参数。差不多到了接近6点,开始最后的HPL调参,经过一次次爆功耗之后,终于摸清了HPL的规律,也记下了一些比较好的参数和运行技巧,打算明天一大早乘着机器一开始比较冷,冲刺一下。这里值得一提的是我们采取手动控制机器风扇的策略,用以应对不同时间的不同散热需求,把功耗尽可能供给计算单元。于是乎,风扇转速拉起来,犹如飞机起飞,引来现场其他队伍的高度关注,引擎突然轰鸣还以为什么东西要爆炸了,手动滑稽。

下午的采访活动

    晚上8点断电之后,我们拆下了5台没用的机器,也学习对面理线狂魔德国人,把一大把以太网线,IB网线整理了一下,机柜挡板也全部拆下来以寻求更好的散热环境。收拾过程中,发现我们带过去的10sas硬盘少了一块,找遍全场也没有找到,这也给我提了一个醒,还是要注意保管自身物品啊。在一番操作猛如虎之后,我们的集群真是赏心悦目。

理线前

理线后

理线后

本次比赛的最终集群定妆照

我们的展位

     离开现场回到宾馆已经9点了,外面也下起了瓢泼大雨,大家聚在一起吃金拱门,总结今天的经验,安排明天的任务和分工。

金拱门

    经过商讨,我们决定使用48卡跑HPL,因为510卡功耗压不住容易爆,而且结果跟48卡相差无几。HPCGrelion则用标准的510卡跑。神秘应用就靠临场发挥随机应变了。到这里,是不是感觉一切都太顺利了?是的,果然,晚上我翻查终端记录时,惊人的发现HPL测试的结果是FAILED,也就是程序计算结果出错?我擦,这个时候了,明早一到现场就要跑分了,现在才发现结果都是错误的?也怪我不细心,下午调了这么久都没看硕大的FAILED。唉,一番思绪,只能明早再试。  

ASC18 DAY1

    201857日,早晨,8点,随着主持人的一声start,机器风扇乌拉拉的转来起来,现场变得热闹而嘈杂。今天是正式比赛的第一天,主要任务有四项,
  1. HPLHigh Performance Linpack浮点性能测试
  2. HPCG,高性能共轭梯度测试,要求持续运行30分钟
  3. Relion,冷冻电镜
  4. Mystery,神秘应用
需要注意的是,只有在提交了HPLHPCG成绩之后,才能拿到神秘应用的题目和算例。 这次比赛的HPL跑分是我负责,介于之前的测试结果都是错误的不能通过的,所以我现场调整了部分参数,希望保守的参数能带来好结果。事实证明我想多了,今早程序一运行直接爆炸,MPI完全炸穿,估计是IB网又出问题了。排查有问题的节点并重启之后总算恢复了。赶紧一跑,换了参数还是一样的炸,触目惊心的FAILED。我赶紧去问去年负责HPL测试的师兄,希望能得到他老人家的真传。在使用去年一样的参数之后,总算成功通过了HPL测试,但是性能结果不尽人意,此时功耗控制已经到了极限,已经两次跑炸超出功耗,要想提高性能需要在HPL参数方继续调整。这里确实是可以调大参数以获得更高结果,然而一改参数,触目惊心的FAILED又来了。综合考虑今天任务很多,后面的应用也需要大量时间,再加上目前的结果也不算太差,于是决定提交。最终,在了1018分,经过两个小时苦苦挣扎之后,我们的HPL浮点性能定格在37.42 TFlops ,打破了去年asc17的记录。 之后便是HPCG测试,但问题又来了,程序跑了一分钟自己结束了。又是一番排查,发现是配置文件没有同步,导致有些节点过早退出。各节点复制覆盖,重新开跑,又是一番功耗和风扇的调控,最终我们稳在2800W以内的功耗,跑完了HPCG,取得了1710.1GF的成绩。 此时已经11点半,距离跑完HPL一个小时左右,开赛已经3个半小时。唉,中大还是每届都参加的老牌强队,真是丢脸。 提交了结果,拿到了神秘应用siesta (一款分子动力学应用),赶紧开始跑。这里我们兵分三路,一边采用官方教程用gcc编译运行,一边使用icc编译期望通过icc的编译选项实现神秘加速,另一边则运行relion。 这时,问题很准时地又来了,采用icc编译的同学们集体翻车,很迷,链接的库有问题,运行时会遇到段错误。迷到爆炸,手动链库,一个个改也会出问题。甚至出现了史诗级bug:键盘没插稳,以为服务器断开了。(笑死我了)最后能成功运行并跑出来结果的只有用gcc编译的版本。死马当活吗医,先解决有没有的问题,gccgcc吧。于是神秘应用siestagcc版本跑了起来,不过非常慢,而且多机并行会崩掉。 中午时分,siesta的算例3relion的算例1正在运行中,我们系统组也总算能松一口气,赶紧去吃口饭然后滚回来用icc编译。现场3个人各自尝试不同的办法用icc还是不行,甚至开始手动链库,一个个去试,最后炸得自己都不知道该链什么了。 随后在跑relion第二个算例时,又出现了段错误,惊了。再跑还是存在。没办法了,只能现场debug,二分回溯代码,总算找到了没有bug的代码版本,这时已经4点了,赶紧跑起来。这个bugCPU部分后来一个加速了十多倍的代码,因为少了一个if边界判断,导致会在大算例情况下数组访问越界,而平时自测的样例没有出现过,所以导致现场翻车。最后,在6点今天比赛结束时,relion的算例2还是没有跑完,差不多在6点半的时候它才跑完,有点可惜,如果早一点跑就能有提交这个结果了。第三个算例因为自身大小140GB,以为要跑很长时间,没有敢先跑它。比赛后跟其他队伍交流,才知道这个超级巨大的算例三比算例二还要快一倍,晕死。果然不可以以貌取人,不对以大小取物啊。 神秘应用siesta那边只跑出了算例1和算例3,算例3花了4500秒,惨不忍睹也只好交上去了。这比赛第一天真的是问题接连不断,事后总结都觉得太惨了。 因为现场8点才关机断电,这段时间交给明天的两个应用CFL3DCNTKcntk训练模型太慢,一次迭代要4小时左右,所以无果。Cfl3d因为没有算例,所以也只是跑一跑测一测,别现场出现relion那样的bug   

ASC18 DAY2

    201858日,早上来到现场,熟练的启动好设备,把CFL3D的算例和机器阅读理解的训练集测试机复制到集群上,开启比赛的第二天,也是最后一天。 首先说CNTK吧,决赛前我们参照rnet修改了网络,并在初赛给的数据集上训练,得到了一个预训练模型,决赛当天我们将使用决赛提供的训练集进行再训练,这样应该能取得更好的效果。这样cntk吃了一个节点的两个GPU,而所有节点的CPU则交给CFL3D来使用。 这时,为了保险起见,我们首先使用预训练模型预测决赛测试集跑出了一个保底结果,免得像第一天那样翻车。这样差不多11点过,我们得到了AI题第一版的结果。此时模型也在训练中,等待他训练完成。 因为我们没有针对CFL3D进行GPU加速优化,所以只用CPU跑,为了保险,也为了提高效率,我们一开始设置了一些能跑的参数,让这CFL3D5个算例跑起来,然后进行优化。 为了更好的查看集群运行状况(其实是我们发现关闭监控程序带来的性能提升完全没啥影响,因为这百分之一的性能完全不能决定是否能跑出结果),我们打开了paramon监控,这样花花绿绿的线条伴随着风扇的轰鸣此消彼长。 在运行CFL3D时,我们发现其运行速度跟网格划分有很大关系,如果划分太小则很慢,划分太大则精度不够可能不能得到正确的结果。于是,今天的情况就是,机器在一边算,人拿着纸笔也在一边算。通过手动修改网格划分,尽量得到速度与精度的最优值。 这时已经到下午三四点了,看上去一切都进行地井井有条,嗯,问题可能会迟到,但是从不缺席,莫名其妙的,有几次CFL3D运行没有输出结果文件。不科学啊,同样的参数之前运行还可以的。快速排查后发现是我们的gluster文件系统炸掉了,只能读取不能写入。进一步分析发现是在运行CFL3DCPU使用率过高,导致gluster的进程被系统阻塞,然后挂掉。此后,我们赶紧把数据拷到nfs中继续运行。不过,已经开始运行的CNTK就不妙了,它的输出路径是gluster挂载盘啊,而且之前的爆炸也导致第一次训练迭代完成的模型没有成功写入磁盘。我赶紧把输出路径通过软链接的方式转到本地的硬盘,希望这样能成功写入(写入测试也发现通过该软链接确实能把原来位于挂掉的gluster的路径的东西写入到本地硬盘上)。 此时我也没有太多事情需要做,便开始跟现场其他学校的同学串串门交流交流。值得一提的是浙江大学,他们最后一小时的时候放弃治疗了,转而开始用超算集群压片,而且差点爆功耗被发现了。当真是真人不露相,原来vcb很多片子都是他们压制的,真是惭愧,跟巨佬做了这么多天邻居,直到最后一刻才认识。

浙大同学用超算集群压制视频

最后只有浙大功耗略高

    就这样过了一两小时,差不多5点半,也该汇总文件准备提交了。这时,CNTK训练也正好完成一轮,准备把模型写入硬盘,不过还是GG了,硬盘上什么都没有,唉,可惜了。最终我们只能拿着预训练模型的预测结果交上去。在本地校验集上测得分数是36多,实在太伤,最终测试集的结果赛会没有公布,但肯定不高(因为结果高的都公布了)。CFL3D这边也都跑完了,就是速度和精度差了点,不过总比上一天没有结果好多了。 下午6点,比赛结束,赛会让所有队员下楼去拍合照 。不过相比拍合照,我们还有一件更重要的事情需要做,或者说,这次比赛真正的高潮才刚刚开始。按照惯例,比赛完,拆机前,便是我们跑分的大好时机。插上装有windows的硬盘,开机,打开cpu-z,gpu-z,aida64,娱乐大师,掏出手机拍照发票圈,不亦乐乎。周围的同学,包括其他学校的都围过来,一大群人围着一台显示器疯狂拍照还伴随着一阵阵惊叹,甚至浙大的带队老师也被吸引过来看看我们围着做什么,一旁的杜总仿佛在说看看这群没见过世面的小屁孩,还以为发现了什么不得了的东西,结果在那里跑分。不过这台机器确实是我当时见过性能最强大的了,双路Xeon Glod 61322856线程, DDR4-2666 12通道内存共192GB,外加两张V100显卡,跑分非常暴力,恐怖至极。跑一次分够我吹一辈子,手动滑稽。

我们集群的cpu-z,aida64 GPGPU benchmark,gpu-z截图

Windows任务管理器

鲁大师跑分

    跑完分,也就到了该和机器说再见的时候了。我们拆下了10张V100加速卡,几十分钟后我们就要通过顺丰归还这些加速卡,当真不舍,毕竟这都是软妹币砸出来的啊。

V100加速卡遗照

10V100加速卡

16G的金条内存

    即便再不舍也要说再见了,拍了几张器材的遗照后,我们将机器收拾好,机柜也装回原样。最后还找了一圈那块丢失的硬盘,当时是找不到的,血亏。 中山大学参加ASC18的老师同学合照 当晚,又开始肝PPT,大家分工合作,两位主讲则早起合并演示文稿和讲稿,以期做最终汇报展示的时候不要翻车。  

ASC18 Day3

一大早,四天的殚精竭虑还未消除,两位做报告的队友就出去排练了。我们抽到的顺序在中间,还算好,不慌不忙练习好展示内容,再不慌不忙做完报告,就可以出去聚餐了。 这天中午我们一行9人加杜总吃了个什么湘菜哦,我忘了。反正他们几个被辣到,我觉得还好,因为我看到太多小米椒就果断放弃,或者混着饭吃。 下午,便是去参加闭幕式和颁奖典礼了。

闭幕式

上台领奖

    虽然还是一等奖,但算下来我们是最菜的一届,第六名,打破了以往一直都是第4名,方差为0的记录。

全队合照

  第二天的新闻联播报道了ASC超算竞赛,我们几人也成功上镜。如此,这趟也算没白来,毕竟上新闻联播还是能够吹一阵子的。

新闻联播

更多比赛现场照片:

后记

比赛结束后,我们在南昌玩了一天,就回学校了。关于asc赛前长达几个月的准备,我后面再更新到博客(拖延症懒癌晚期无可救药)。现在是18年12月底,跨过年马上就要开始准备asc19了,希望今年的队员们吸取我们的教训,不要翻车从头翻到尾,这样去德国参加SC就能安排上了。

分类: 灵梦谣高性能计算

0 条评论

发表评论