超算比赛-ISC23纪实

今年五月,ISC的超算比赛在德国汉堡落下帷幕。颁奖典礼时,我们队伍站在了最靠近主持人的那一列,而我又站在了第一个,那时候的我们都还不知道将会发生些什么。

舞台上有两个显示器。一个是巨大的LED屏幕,就在我们身后,给观众看的。另一个是一块小小的显示屏,在舞台前方的位置,给主持人预览下一页的幻灯片的。我站的位置刚好能和主持人一起看到那块显示屏。主持人从第三名开始宣布,每宣布一个,大屏上都会显示对应学校队伍的合照。当主持人正打算宣布是谁拿下第二名的时候,我没忍住,wow了一声。

讲实话,我不知道我的wow有多大声。但起码主持人还是很有职业素养,他没有受到我的影响,只是对我礼貌地微笑了一下。他大概是意识到了我看到了小屏幕,那里有待显示的第一名的队伍,正放着我们团队的合照。ISC的比赛分为两个部分,一个是在官方提供的集群(Bridges-2Fritz)上进行比赛,一个是在自己组建的集群上进行比赛。而我们团队则是拿下了前者的冠军。

颁奖典礼现场


比赛在Congress Center Hamburg(汉堡会议中心)举行,在比赛开始的两天前,我们就达到了汉堡来适应时差并提前搭建集群。我们所住的酒店离会场大概有十五分钟的步行路程,由于第一天下午会场还在搭建,没能放参赛者进场,我们便在汉堡逛了逛。汉堡给人的氛围是恰到好处的悠闲,因为那时我刚好在慕尼黑交换,所以我不由自主地将两个城市进行了比较。慕尼黑给人的感觉是一种规规矩矩的惬意,而汉堡是一种乱中有序的悠闲。汉堡的房子也不高,但似乎散落得更大胆,不仅是房子,人似乎也散落得更大胆。一位队员跟我在汉堡街道漫步时说道,这儿的人似乎看着都更轻松些。不过或许是刚落地汉堡舟车劳顿,我们也没走多久,因为第二天是周天,德国周天超市都不开门,所以我们买了些零食面包就回酒店休息了。

第二天一早我们就来到了会场搭建我们的集群,我们是第一个到的,紧随其后的是另一个来自亚洲的队伍,台湾清华大学。我们的集群也从新加坡远道而来,我们打开一层层严实的包装,组装好我们的集群,这次我们赞助商给到我们8块Nvidia的A100 GPU和8块AMD的MI210 GPU。这种同时有两种架构GPU的配置属实让人尴尬。我们设置了两个node,一个放A100一个放MI210。比赛设置了3kw的功耗限制,然而同时运行一个程序在A100和MI210上是不大可能的,但若只跑满A100或者MI210功率又只能到2kw左右。但本着赞助商给到我们什么硬件就硬着头皮用的原则,我们开始测试我们的集群。其他队伍也逐渐到场准备,大家开始“军火比拼”,东道主汉堡大学尤让我震惊,他们居然拿到了8块H100 GPU,目前在H100有价无市的阶段,他们居然能拿到8块之多,我也去询问了其他学校,大多数带的还是10块以上的A100。之后的比赛分两天进行,我主要负责的application是POT3D, 它是一个计算太阳日冕磁场的高性能程序,我最终用8块A100的GPU节点跑出了我能达到的最好成绩。这中间还出现了个插曲,刚好在比赛开始的前几天,GCC 13.1发布,我立即尝试了用这个最新的GCC重新编译MPI和其他依赖的组件,最后在CPU上重新编译运行了POT3D,得到了0.5%左右的微弱提速。但最后用Nvidia HPC package编译出的binary在A100上跑的结果远超CPU上的结果,便舍弃了CPU运行。整个比赛会场是吵闹的,各个集群的风扇卯足了功率轰轰作响,在那种喧闹的环境下,不由得让人紧张。由于主办方实时提供了每个集群的功率使用,所以你可以通过监控其他集群的功率起伏来检查对手的进度,颇有意思。我在比赛时一直盯着汉堡大学H100的使用情况,不过总是发现他们在运行POT3D时的时间总是比我们快了大概5%-10%,即使到了最后一刻,还是没能超过他们的速度。当然超过我们的不仅有运行速度的,还有离开比赛会场的速度。欧美队伍总是来的晚去的早,在我们还在恋恋不舍的调试集群的时候,他们已经开始计划今晚去哪个酒吧聊天了。我高度怀疑在第二天还有比赛的情况下酒精能带来的正面效果,但他们这种惬意的感觉确实令我大为震惊。关于这速度的快慢,也不由得让我产生对“硬件”和“软件”的思考。

NTU超算队合影


比赛现场


比赛结束后,我们团队在汉堡玩了两天,我们好像玩的也很悠闲。大部分时候交通工具都是我们自己的腿,我们就在汉堡的景点中漫步着。我到很喜欢汉堡这座城市,它处于易北河的入海口,自古以来便是港口城市,所以汉堡曾是繁荣的,但在1842年的时候,汉堡市发生了一场大火灾,整个城市都被大火笼罩,现在我们所看到很多建筑都是灾后重建的。或许正是因为这样,汉堡浴火重生。我在这感受到了活力,惬意,和重生的欲望。

回程航班,看到易北河向西流入大海