SC 23 回顾(二)

 

上篇

Day -1/0/1:集群搭建与调试

从 student orientation 结束(11/11 20:00)到第三天(11/13)上午八点,是队员们的集群搭建时间。然而就在我们出发前几天,美国的 vendor 说 11、12 两天是周末不能送货,只能周一——这还了得,不如直接一起出门玩吧。原本 sponsor 和 vendor 签的合同条款就写明了 11/11 前送到,怎么会这样呢?在我们的反复要求下,vendor 答应了找一辆私人货车(货拉拉?)在 11 号当天送到机器。但这辆车也姗姗来迟,一直到六点才抵达会场仓库,此时会场负责物流的 freeman 早已下班,队员们也无从得知具体的货物情况。等八点多队员们(以及我、明书)再次到会场,更是找不到多少工作人员。我们和北大的同学、付老师一起(北大的 H100 也随我们的机器一同前来)在会场周边、仓储位置来回寻找,也一无所获。于是我们决定留两个同学继续找找,其他人回酒店休息。

由于白天玩了一天,我非常疲惫,打算回去就睡觉。但刚洗完澡,同学们在群里表示机器找到了——原来,他们进行了一些逆向思维,去超微的展柜寻找,果然找到了一些没有正确粘贴标签、书写地址的机柜和机器,核对装箱单后确认就是我们两校的设备——十几块价值连城的 H100 就装在没有稳妥固定的小纸箱中,摞在高高的机柜上。晚上并没有人能搬运,同学们就去找了一个空闲的小推车把设备拉回了场地。就在我为他们的机智高兴的时候,现场的同学说他们使用小推车被场地的保安人员发现了,对面表示已经上报了组委会。我心中立刻生出一种不详的预感,但似乎也没有更好的办法了。但拿到机器之后的一系列问题,让我们对 vendor 彻底失去了信心,包括:

  1. CPU 被降配:我们原定的 64XX Gold 被降级成了 4XXX Silver。虽然我们自带了 8XXX Platinum,但它使用的散热扣具(heat sink)与 Gold 系列一致,与 Silver 并不一样,这意味着很可能无法安装 CPU。此时 vendor 的一位工程师告诉我们可以无视 heat sink 直接安装 CPU,并告知了一些特定的手法和注意事项——比如这代 CPU 需要“拧得非常紧”才能正常工作,拧到“你觉得要断了”那么紧。在他的帮助下,同学们并不丝滑地尝试更换了 CPU,反复拧紧若干次才能使其正常工作,否则就可能出现丢失内存、丢失 PCIe 设备等问题。
  2. 内存不足:原本每台机器需要 64 * 16 = 1TB 的内存,单条 64GB 被被降级成了单条 32GB,只剩下 32 * 16 = 512GB。我们只能将就使用,希望赛题不对内存有特别的要求。
  3. 电源线缆不匹配:由于主办方的 PDU 只提供 C13 的接口,而机器的电源是 C19,因此需要特制的 C20-C14 电源线方能工作。然而,装箱的电源线不仅没有按照要求提供,甚至是双头 C14,与电源接口不匹配,在任何情况下都无法工作。好在北大的队伍多带了八根线,刚好够我们的机器使用。
  4. IB 线缆不正确:这是唯一非 vendor 的问题。队长在确认配置时,标注的 QSFP56 DAC 线缆型号是以太网款,而非 IB 款,无法与 IB 网卡、IB 交换机共同使用。这将导致我们完全失去高速互联。此时另一个救星,也是我们的老朋友南洋理工出现了,他们将多余的 IB EDR 线缆借给了我们;虽然我们有 200G 的交换机和网卡,但因为线缆不得不降级——但还要什么自行车?

上述的问题当然不是一次性就发现的,而是在队伍得到机器的那个晚上慢慢暴露。每次发现一个问题,我就会被从睡梦中叫醒(或者压根没睡着),重复惊讶——愤怒——无奈的情绪变化,然后缓过来和同学们一起研究解决方案。我们的 vendor 给队伍的集群搭建创造如此多致命的问题,而解决它们靠的要么是巧合,要么是其他队伍的及时帮助。只要缺少那么一点运气,就没有参加比赛的意义了。

我现在已经记不清那个晚上到底睡了多少,但明书一定是与队员们一起一夜未眠。第二天早上(11/12),我匆匆吃过(没什么变化的)早餐赶往会场,进行了会议注册,获得了 badge。我进入会场时,明书正在和组委会唯二的两位中国成员交谈,我也和他们聊了两句。在他们离开后,明书把我叫走,告诉了我一个意料之中,但谁也不想听到的消息——组委会认为前一晚我们和北大搬运设备的行为被 SC 总组委会知晓,SCC 组委会也因此被处罚;他们进一步认为我们的行为违反了安全条例,将对我们进行惩罚性扣分。也就是说,我们已经注定与冠军无缘了。但我们当然不希望队员此时因此而消极懈怠,因此我们(我、明书、付老师)决定不告诉队员这个消息,直到比赛结束。

由于前一天晚上其实只完整处理了一台机器,当天白天的大部分任务其实是把所有的机器(4+1 备份)的硬件配置均修改完成,然后调试软件。我趁队员们修改硬件时,才第一次物理摸到 H100 GPU:其实在外观和重量上与 A100 几乎没有区别,只是标签换成了 H100,电源接口也换成了灵车的 12VHPWR。我也趁机在会场走了走,大部分展位的布置工作其实并没有完成,但整体的地毯已经铺上了。SCC 传统——装着食物的房间目前也还是空的。

虽然各种致命硬件问题已经都被解决或者绕过了,但接下来的过程也并不顺利,尤其队员们对于网络和 OS 的运维、管理、调试能力是非常令我不满意的。一些具体的表现包括:在理解我提出的内外网靠 VLAN 隔离的网络拓扑上产生偏差、不会使用 console 线配置交换机、使用百度和 CSDN 试图解决 apt 问题并胡乱安装软件包、不使用 tmux 运行重要命令。必须承认,在赛场上遇到这样的事是让人非常着急甚至绝望的,尤其是在我没法直接上手解决、即使能也是治标不治本的情况下。因此我确实说了不少比较重的话,甚至和他们拍了桌子。

这天下午还进行了 SCC 集体照、队伍照的拍摄,各个队伍都有一些自己的创意,我们就有些黔驴技穷了,最后我穿着 SC19、队员们穿着 SC23 的衣服拍了一张合影,也有后浪推前浪的寓意。拍完后组委会的 Steve 给我们几个前一天没有参加 safety briefing 的人补了一场培训,我们都获得了 SCC 专有的一次性腕带,以在任何时候不受限制地进入会场(但是为什么他给我的和别人的颜色不一样呢?我并没有深究)。在回到场地后,我注意到组委会成员们的 badge 上都贴着 “Student Cluster Alumni” 的飘带,于是也索要了一张贴在我和明书的 badge 上。

在此前公布的规则中,功耗限制是计算设备 3000W,网络设备 1500W。我们其实早就怀疑组委会是否有这种分开监控的能力,毕竟 PDU 一共就两个能分开统计的断路器,如果分开接,插孔数量不够,单个断路器的功率限制也不够;另一方面,有什么网络设备能消耗 1500W 呢?果然组委会来承认了他们并不能做到,并要求各个队伍投票选择新的限制,是总限制 4500W,还是网络不计算功耗限制 4000W。前者显然对于携带更高级硬件的队伍是更有利的(实际除网络设备的可用功耗在 4300W 左右),然而大部分队伍都选择了后者。好吧,不管怎么说总比 3000W 要好。

在机器的最终选型上,尽管每台服务器都有安装三张 GPU 的能力,队员们依旧选择了四机八卡的传统保守方案。而北大自带了丹炉,因此是两机八卡。其他队伍都没有 H100,因此(我认为)至少他们在 benchmark 是无法形成优势的。晚上我还是陪着队员们继续调试机器,但过了很久,甚至连 HPL 也无法运行。我被告知此时的集群表现诡异,各类报错都很奇怪,让人摸不着头脑。研究和尝试了一番之后我看出了问题,这次的队长使用了两个 zfs pool 来保存数据,第一个 pool 是正常的操作系统,第二个 pool 只有 home,但它的 / 在 import 时也会被挂载,覆盖到已经在运行的系统上。这就导致 //foo/.. 的两个目录内容完全不同,前者还是正常的系统(或许被 pivot_root 固定下来),而后者其实是只有 /home 的空目录(覆盖挂载的第二个 pool),因此很多东西都无法正常工作。在禁止第二个 pool 的 / 挂载之后,一切都恢复了正常。

当可以运行 benchmark 程序后,第二个问题接踵而至:这批超微机器的风扇不听话了。具体来说,此前我们通过一个未公开的 IPMI 接口,以 1% 的转速步进控制服务器上的若干个风扇分区,来达到精确的温度和功耗平衡。而现在,对此接口的调用似乎并不工作,服务器始终维持自动转速(或者 100% 转速)。多次尝试之后,我发现其实风扇转速在设置的较短时间中有效,此后似乎有机制对此进行了“重置”。由于时间紧迫,我给队员提供的思路是在每台机器上运行 daemon 程序,循环读取一个公共配置文件,重复调用 IPMI 接口来控制风扇。这样当然很不优雅,但也简单有效——此时夜已深,离早上八点只有几个小时了,容不得再深究。

在搞定这些“玄学”之后,剩下的就是枯燥的 benchmark 功耗精修环节,还是那些祖传的手艺,此处按下不表。我实在太困了,只能选择回去睡觉。

Day 1/2/3:正式比赛

周一(11/13)早上八点开始是 benchmarking 阶段,今年的任务包括传统的 HPL、HPCG 和新加的 MLPerf,而我熟悉的 IO500 被移除了(或许是贵校前几年太不讲武德了)。本以为经过一晚上的精修,我们队应该没什么问题。但队长却告诉我总是会莫名其妙爆功耗,我们的监控也无法观察到。折腾了一阵子之后,终于发现了问题——今年组委会读取的是 PDU 的视在功率(apparaent power),而我们读取的是实际功率(real power),两者的差正是无功功耗。队员前去询问组委会,对方的答复居然是“自古以来”!我们当然没有办法,只能根据组委会的规则来行事,多压下去一些功耗以求保险。后续经过我的努力回忆和与坏人等人的确认,之前的比赛中,读取的确实从来都是有功功耗,不知道组委会是哪里来的自信如此 claim。

当天早上其实我并没有去会场,而是在 downtown 又转了一圈。本打算买一些邮票,却被告知只能去 USPS 买。好不容易走了两公里、穿过一片 homeless 遍地的帐篷区后,发现 USPS 卖邮票的自助机蓝屏了(???),而工作人员告诉我需要一个小时才能修好。好吧,这就是美国效率。中午 yyw、明书约了饭,就在我熟悉的 Kyoto Ramen。因为当天会议的 workshop 已经开始了,中午的餐厅被挤得水泄不通。我们在吃饭时,我忽然在排队的人群中认出了一位当年 ASC19 认识的、从南科大毕业的、现在在 KAUST 读博的同学。刚好明书给队员的饭多买了一份,我们就把他从队伍中拽了出来一起吃饭。他给我们分享了沙特“传统美食”椰枣,浓烈的甜味成功把我们所有人都齁到了。

回到会场送过午饭,询问了一下 benchmark 的状况。考虑到我们和北大卡数相同,但他们机器更少、单机卡数更多,因此我们 HPL、HPCG 的预估结果都会低一些,但应当差距不大。但我没有想到队员告诉我他们的 MLPerf 只能运行单机版本,而北大却改出了分布式——这可是两卡和八卡的区别啊!时间紧迫,也没有什么再改进的机会了,只能让大家努力多调参试试。交了结果之后其实已经不剩太多时间,我告诉他们要多观察观察其他程序的功耗模式,尝试压一下功耗,然后就跑到楼下去听 workshop 了。

看了一遍 workshop 列表之后,我先去听了两个关于 HPC 教育相关的 12,并对其中一位主讲人提出的 HPC 教育资料分享机制深表赞同,立刻加入了他们的邮件列表等待后续进展。然而直到现在,列表里还是没什么内容,或许只是画了一张大饼。后面还跑到第二届 RISC-V for HPC 研讨会去看了看,其中有很多 RVV 相关的应用案例,还是很有启发性的。

Workshop 结束之后,benchmark 阶段差不多也结束了,比赛还有一个多小时才开始。这段时间内有 Exhibitor’s Reception,是混合了世界各地食物风格的自助餐,我勉强吃了一些,然后就跑去门口看展会的剪彩仪式,这也是 SC 非常有仪式感的重要环节,但 SC’19 时我忙着做题根本没时间参与。从展会所处的二楼看下去,至少有上千人在一楼大厅等待展会正式开放,还有打扮成蝙蝠侠和猫女的人出现,引发了一些骚动(后续发现是展商请的人)。晚上 18:57,SC general chair 在拱门剪断了彩带,标志着 SC’23 的展会正式开始,大家踏上电梯纷纷涌入二楼,会场一下子就热闹了起来。与四年前一样,在的会场各个角落分布着各种食物小摊,而这次我终于有机会收集各地的美食、喝一杯特调的鸡尾酒了。也是这个晚上,四年没见的老朋友黄华来到了会场——他这次要来领取一个 research award,而下午才从亚特兰大飞到丹佛。

晚上 19:30 是 SCC 比赛正式开始的时间,所有参赛人员都汇集到了 SCC booth 中。现场有许多 SCC alumni,我认出了 SC’19 SCC chair Rebecca,和她打了个招呼。照例由 SC chair、SCC chair 发表了开幕讲话后,本次 SCC 的神秘应用揭晓了——CTF 比赛,具体分三部分,分别是流量分析、靶场入侵和标志寻找。前两者都还算比较正常,而最后一个是要求参赛队员在整个会展中心寻找写着 SCC ??? 的贴纸,并在贴纸附近获得 flag(还有一些蜜罐 flag,获得就会导致扣分)。可以看出,在场所有人都懵了,当然包括我。系统安全自然是 HPC 中长久以来比较容易被忽视的内容,但将其作为超算竞赛的赛题还是太出人意料了。

回到其他的传统赛题,按照以往的经验,我和明书要求队员们尽快估计出每个任务所需的机器数量和时间,以在连续不断的 47 个小时比赛时间内划分机时间、安排大家轮流休息。考虑到实际情况,我们要求队员维护一份在线表格,标记上述这些信息,外加现在机器的占用情况,以供所有人共享。在有需要的时候,我们也能根据表格的内容提出一些指导性建议。然而我和明书在第一晚离开赛场前就发现,不用说更新表格,甚至连队员之间的信息沟通都并不顺畅;除了队长,大家对目前题目和机器的状况都不太清楚,更不用说在场外的我们了;所有人的操作没有标准流程,决断随意(一个非常让我生气的例子是,我们队贡献了正式比赛阶段的第一次、也是唯一一次超功耗警报,甚至还是在比赛刚开始不久,原因是某队员此前用三机尝试不会超,然后贸然使用四机运行);队员们在遇到问题时也没有及时沟通,而是自己一味(很多时候是盲目的)尝试,钻牛角尖,把机器空留在一边;而对于我们提出的很多宏观或者具体的建议,队员们通常也不会按照我们的想法执行。我们两个能做的除了着急,只有一次又一次的反复催促、提醒,然后盯着 Google Doc 上一个许久没有任何变化的单元格感到绝望。周一晚上明书为了跟进 3DMHD 这道赛题的进度,外加准备自己周二下午的 talk,又是几乎完全没有睡觉。

这些让人焦虑而又无奈的局面几乎从比赛开始一直持续到了结束,时刻让我想起今年 ASC23 的赛场上,我也担任了 advisor,也几乎有着一模一样的心境。不同的是 ASC 的比赛只有两个白天让我心累,但 SC 是实打实的 47 个小时。如果是我自己在上场参赛,我当然愿意,并会毫不犹豫地为了解决某个技术问题、为了更好的成绩放弃一些睡眠。但这次不一样,我能做的事情非常有限,而且大部分问题是非技术的、是根深蒂固的,是不可能靠陪我们队员熬过一两个大夜就解决的。再加上此前提前了解的惩罚性扣分,我和明书从第二天起其实已经放下了一些对过程和结果执念,或许顺其自然是对我们和队员都更好的选择。

给参与了 SC’23 的超算队同学:上述文字是我对这次比赛暴露问题的综合提取,并不代表我认为某个人具有特定的问题。要反躬自省,但不要对号入座。

正是因此,我们选择把更多的时间和精力投入到更多超算比赛之外的事。我在这两天的 SC 大会中听了若干场 talk(SC 的茶歇是真的挺好吃,感觉四年前亏了)、看完了一楼几乎所有 poster(的标题),也在展会见到了很多新奇好玩的东西(比如:CXL 的很多有趣应用、完整的基于 PCIe 交换的灵活 GPU 扩展方案、国产网络设备厂商万兆通的各种神奇产品,当然还有 SCiNet 的炫技设备)。当然我也没忘记在会场四处注意是不是有 CTF 比赛相关的贴纸——还真的有!我在 SCC 的展位背后发现一个贴着贴纸的神秘房间,虽然上了锁,但可以用“不小心”粘在另一个房间上的指示重置门锁密码(后续发现这个管理密码甚至可以重置会场所有锁的密码),打开后就是一个 flag。微软的展位边上也贴着一张,想必是我们的老朋友、SCC 组委会长期成员 Andy Howard 干的好事(说到这里又想起来了我们四年没拿到的 Surface Pro),但我问遍了工作人员也没人能告诉我 flag 在哪(后续北大的同学告诉我,微软展位上只有特定的一个人知道)。或许组委会的本意是让大家在比赛之外也能有一些有趣的事情做,通过题目半强制大家走到会场中四处看看。但这样的设计未免也有点过于随意,并且有些浪费精力。

在两天的比赛期间,当然也有一些有趣的经历。在十月份沈阳 CNCC 结束后的回程航班上,主席把我介绍给了 ACM 主席 Yannis,他告诉我他也会去 SC 会场,于是我就邀请他来 SCC 的场地看看。在周一上午的开幕式结束后,我跑到了前排找到了正在和 Jack Dongarra 聊天的 Yannis,告诉了他我们的展位。他告诉我中午会去看看,并让我届时用微信联系(?)。没想到到了约定的时间,他真的没能找到地方。当我匆匆跑回展位的时候,我们的同学已经把他带了过去。我简单地给他介绍了一下比赛的规则和题目,并请他和我们整个队伍合了张影。他后来又饶有兴致地在各个队伍的展位前都逛了一圈,询问了大家的概况,过了一阵才离开。当然来赛场参观或者好奇的人还有很多,队员们大概也习惯了和突然冒出的人介绍比赛。一位在美国工作的明书的本科同学、另一位上过《高性能计算导论》在美国交换的学弟也都来到了参赛现场,学弟还帮忙给队员们买了周二的午餐。在比赛过程中唯一比较离奇的事是,由于我们队被其他队伍投诉风扇太吵(这在我参与过的超算比赛中还是首次),SCC chair 找了一些硬纸板盖上了我们机柜的侧面,或许能起到一些心理安慰作用吧。

周二下午还有环节是 Top500 BoF,所有 SCC 队员都被要求下楼参加。活动除了发布新的 Top500 榜单外,也会当场公布 SCC 的 HPL 结果排行。但结果并不是重点,毕竟我们都早已有了清晰的预期。在所有人下楼的路上,SCC chair 路过我的时候看了一眼我的手腕,突然问我为什么戴着组委会成员的手环——这我怎么会知道,明明是 Steve 亲手给我戴上的呀?既然发现了,看来我的“卧底”身份是留不住了,活动回来之后 chair 就给我换成了正常的手环(和队员一样)。我反倒是有点后悔,没有靠着 committee 手环去搞一些渗透测试,比如套出一些展位的 flag 来。

这两天娱乐活动当然也是要有的。会场不远处的 Ball Arena(原名 Pepsi Center)是丹佛掘金队的主场,周二晚上刚好有掘金对洛杉矶快船的一场 NBA 季中锦标赛,明书早在出发前快一个月就买好了票。很多人都说过去美国一定要亲自看一场 NBA,事实证明确实如此,在现场看比赛的体验是电视转播完全无法达到的,这包括了馆内场外的热烈氛围、观众席上就在你身边的球迷互动,甚至还有播不出来的脏话。比赛本身确实非常胶着,掘金在最后一节一度被超越,最终还是逆转了比分。现场绝大部分是主队球迷(我们坐在比较便宜的客队区域),对掘金的每一次得分都报以极其热烈的欢呼,对客队的球迷和吉祥物进行毫不掩饰的嘲讽。不过就算在这样喧闹的环境中,我居然还是在第三节坐着睡着了大约十分钟,实在难挡这几天缺乏睡眠带来的睡意。比赛结束从球场离开时,还有大量的主队球迷在门口庆祝。还有一些人骑着精心装饰过(有彩灯、音响)的人力三轮车在路上“接客”,可以把人送到周边的地方,当然要价也是很可观的。

周三是比赛的最后一个白天。我既不想在比赛上操太多的心,也没有太多想听的 talk,就还是选择了出门逛逛。这次我去了科罗拉多议会大厦,一座有两百多年历史、经历了若干次扩建和改建的建筑。在步行前往的路上还在绿地中遇到了几只松鼠,完全不怕人,甚至还想向我索要吃的。大厦正门的台阶上有“one mile above sea level”的标注,这也是丹佛“mile high city”名称的由来。由于是工作日,议会大楼其实有不少人在上班,不过参议院、众议院都还在休会,可以进去随意参观。在大厦的阁楼有历史展览,详细介绍了丹佛市的形成和发展经历,甚至还可以通过阁楼的小门走到最早的大厦屋顶上游览(可惜只对旅行团开放)。回去的路上,路过了四年前参观过的丹佛公共图书馆,没想到大部分区域都因整修关闭了,只剩下一小角坐满了流浪汉的阅览室。

回到会场又听了几个下午的 talk,就快到比赛结束的时间了,我又回到了展位。尽管所有的队员都在场,明显能看出来大家的精力已经几乎消耗殆尽,好在这一天比赛结束后不需要拆卸机器。由于所有题目都提前完成了,所以结束时并没有我们经历过的那种争分夺秒的紧张,反而是大家都松了一口气。我们拉着在场的所有中国队伍一起拍了一张大合照,大家又进行了一系列合影。比完了总要吃点好的,考虑到这几天大家顿顿吃的是 taco、三明治、微波速冻食品,我和明书拉着队员们(还有黄华)去了一家评分还不错的越南粉店,有同学甚至在等菜上来的时候就睡着了。虽然粉和春卷的味道都还不错,但价钱也是挺让人震惊的,尤其是店家还强制加上了超过 20% 的小费。我也没有什么精力与老板 argue,选择往下抹掉了零头,付款走人了事。这也是我在丹佛这几天为数不多用到现金的场合(因为用信用卡还要加“管理费”)。

吃完饭,晚上终于有了比较大片的空闲时间(周五抵达、周六装机、周日调试、周一开赛、周二 NBA,而周四也还有官方的活动),原本我还注册了一些公司的活动可以去蹭饭,想了想也没有去,选择留在酒店休息。沐浴更衣完后,我写了几张明信片,认真阅读了从国家公园带回来的地图和手册。原本想躺着休息一会儿,但一沾枕头就睡着了,一觉睡到天亮。

Day 4:颁奖仪式、赛后总结与拆卸

周四(11/14)是 SC’23 正式日程的最后一天,我们需要参加的活动包括中午的颁奖仪式、下午的总结会,还要在六点展览关闭后拆卸机器、打包寄出,晚上在丹佛美术馆还有 technical program reception。上面提到黄华要参与颁奖仪式,要求正装上场。但他的酒店又离会场比较远,行动不便;我就把房间借给了他,一大早他就背着正装、皮鞋到了我们的酒店。我带着昨晚写的明信片又走去了 USPS,好在这次自助机没有坏,但我买了十张邮票却只吐出来九张。我无奈只好去排队退钱,在填写了一个冗长的纸质退款申请表格后,柜员(姓名是 Van,让我想起了一些远古回忆)掏出了两个价值 $1.5 的硬币塞到我手里。贴完邮票,还按照小红书的指示向柜员索要了邮局的日戳,而不是 USPS 默认的波浪线机戳。

回到会场时间还早,我就又在各个展位逛了一圈,还上手体验了一把 Google Cloud 的 HPC 服务,确实简单,但不太好用。到了颁奖的时间,SCC chair 带着我们一起走下楼。这次的颁奖大厅依旧有黄华,但当然已经不是四年前了。仪式开始前,巨大的屏幕上循环滚落各种语言写成的会议口号“I am HPC”,引发了大家的一致吐槽。颁奖仪式自然是几家欢喜几家愁,石油大学的金老师拿了 Best Paper,Torsten 的学生拿了 Best Student Paper 和 Research Award。但一直到最后,站到台上的没有我们,也没有黄华(他对此表示了一些不满,毕竟被组委会通知领奖,穿着正装等了那么久却什么也没发生)。SCC 的冠军是 Torsten 带领的 ETHZ。不管怎么说,我又抓住了 Yannis 拉着他到摄影棚里,和我们的队员拍了几张照;摄影师拍照前问我们为啥不端着奖牌,大家只好尴尬地笑笑。

颁奖结束后,SCC chair 拉着所有队伍去开总结会,也下发了最终的成绩单。我们的最终成绩和北大比较接近,各道题目的得分都还比较符合预期,也都有早已预知的 10 分 safety 扣分。最终我们落在了 ETHZ 和 UCSD 的后面,分获第三四名。Chair 让大家对比赛提一些意见,刚开始说的人都还比较客气,到后面几乎演化成了对组委会的批斗会——几乎每个站起来的人都对题目的设置不满意,尤其是 CTF。有位小哥说自己是非计算机专业的学生,对这些完全没有概念;而 SCC 总是要求 diversity,鼓励非科班学生参加,出题却出如此专业的安全知识(比如流量分析、靶场攻防这些都不是短短 47 小时能学会的,何况还有其他的题目压力),是不合理的。还有一个队伍说比赛对新手很不友好,没有详细的文档说明组委会会提供什么、应该准备什么(比如电源线/网线),回答问题也不及时。我很赞同这些观点。在当时看到 CTF 题目的时候,我第一想法的确就是“如果之前没接触过,要怎么办呢?”组委会在其他题目上也表现出一定的随意性,比如中途更改某些题目的评分要求、某些评委无法及时判断大家对程序的修改是否合理等,也包括我上面提到的功耗测量问题、手环问题。虽没有亲身经历场上每个环节,但我也能感受到这次比赛的组织与 SC’19 相比,缺失了一些应有的严谨和专业性。但不管怎么说,最终栽在非技术的问题上,是我们怎么也无法料到的。

总结会后大家回到会场,组委会允许队伍“在不破环整体观感的前提下”开始拆卸机器。也是直到此时,我才好不容易从 vendor 那问来了回寄机器的地址,在 freeman 那办好了手续,领到了回寄的标签。后面就是熟悉的体力活环节,大家合力把机器下架、复原零件、装箱。我在这个过程中也和旁边 UCSD 的同学们聊了聊,他们几乎所有人都是第一次参赛,也遇到了很多问题——比如第一天 Dell 的机器忽然起不来,拔到剩下一根内存才能通过自检。但最终他们作为新手队伍还是获得了比较好的成绩,还是很有潜力的。浪潮选了当天晚上做东,请超算队的同学们吃饭,但时间(晚上六点)相当尴尬,机器拆卸还没完成。那边催促了几次后,我让明书带着部分同学先去赴宴,我继续留守场地。装完箱,我们用膜把摞好的箱子缠了一圈又一圈,唯恐 H100 有任何的运输问题。

一切收拾完成,已经是晚上七点半了。展位又恢复了我们来前的样子,似乎这六天什么也没有发生过。走出大厅的一路上,也像是我们来的那天,叉车来来往往地搬运东西;只是大家都很清楚会议已经结束了,第二天就要离开。我带着剩下的人去美术馆参加 technical program reception,这次的距离完走路可达。Reception 确实很热闹、大家都在 social,美术馆的作品也很多。不过我还是没什么心思 social 或者欣赏,而是选择闷头吃喝,漫无目的地乱逛。中途明书和黄华也来了 reception 的现场,我们锐评了现场的一些食物。我随机要了两杯现场调制的鸡尾酒(分别是伏特加和琴酒底),度数都不低,但喝起来没什么感觉;喝完一阵子才感觉头重脚轻,只想睡觉。正好九点 reception 就结束了,我们坐上组委会提供的大巴回到了会展中心。我的 SC’23 也就正式结束了。

Day 5/6:回程波折

周五是回程的日子,退房前,我把剩下的一点美元零钱留在房间就当作小费。吃过早饭,我们一行人还是打 Uber 到机场。没想到我们的旅程并没有想象中的顺利。首先是几位同学的登机牌上没有座位,显示 standby。正当我试图找 UA staff 询问时,我们发现 11:30 的航班由于飞机故障需要临时调机,起飞时间延误到了 14:00,落地东京的时间也从 15:45 变成了 18:23——这还了得,下一程 18:15 起飞的航班肯定是接不上了。但我们也没办法,只能过安检后到登机口等着。也正是在等待的这段时间里,我们非常即时地见证到了 OpenAI 的风波(董事会开除 Sam Altman)。

大概是调机并不容易,每过一段时间,预计的起飞时间就不停往后延,我看着同样在登机口等待的机组感觉颇为不妙。果然,就在调机的航班快要落地的时候,原来的机组因为超时下班了,我们亲眼看着机长拎着箱子就离开了。旅客们纷纷到柜台讨要说法,而 UA 的补偿是弄来了一些零食,又给每个人发了一张 $15 的餐券。队员们发现候机楼有一家 panda express,很多人本着体验生活的想法去吃了一顿。而我肯定是不愿意吃这种美式中餐的,拉着明书坐车跑到了另一个候机楼。原本我们打算吃一顿法餐,结果到门口发现它居然比机场网站上贴出的菜单涨价了。于是退而求其次去了旁边的 shake shack,没想到遇到了同样因为 UA 航班延误而在吃午饭、上文提到的 KAUST 的同学(他要飞四程才能到吉达,所以一旦延误更麻烦)。在我们一起等餐的时候,一位排队点餐的小哥在队伍里直接晕倒砸在地上,引发了一阵惊慌。店员拨打了求助电话,机场的专业急救人员赶过来处理了此事。

经过了似乎一个世纪的等待,我们终于在下午四点多开始登机,在 16:51 起飞。这次我成功要到了一个有效的 T-Mobile 手机号,能在机上免费上网。飞行的过程当然是无聊的,并且由于此前的等待显得更为冗长。我醒醒睡睡,盯着面前的飞行里程,已经不知道时间过了多久。中途 KAUST 的同学给我发消息说果然还是没赶上下一程,UA 准备了机场的希尔顿酒店给他们住——待遇确实不错,但当然还是不要延误比较好。落地前两个多小时吃饭的时候(我选择了一份很难吃的炒蛋),有队员发现我们的票号里的第二程已经被改成了落地第二天 15:15 的 CA926,从国航 App 的确也能查到行程了。落地后,廊桥前面挂着一大串目的地的名字,看来 UA 确实坑到了不少人,而地勤也是早有准备。小半个飞机的人在到达厅前排队领取 UA 提供的酒店券、餐券和改签过的下一程行程单。由于成田机场过夜会关闭,酒店在机场外,我们也因此获得了一张日本 shore pass。提取完行李(早就被放在转盘边了),办理了边检和海关手续,我们正式来到了行程中未计划的城市——东京(其实是千叶县),由大巴车拉到了机场边的日航成田饭店。

抵达酒店已经晚上十点半了,酒店明显对这类情况也有预案,延长了晚餐的时间在等着我们。虽然吃的品种不多,但终于见到了熟悉的东亚菜系,还是让大家倍感亲切。吃完办理入住,我分到的房间是 747,在这种情景下倒是也挺应景。由于第二天的航班是下午出发,大家都决定第二天白天要抓紧时间去东京城区玩一圈,珍惜意外获得的机会。由于要赶第二天的早班电车,大家剩下的的睡觉时间都只有六个多小时。然而时差还是无情地击中了我,我早上五点多就辗转反侧无法入睡,干脆爬起来又写了几张明信片。早餐有中国料理和西餐可选,我们当然是选择了前者。匆匆吃完、退房,坐着早上 6:15 大巴,我们又回到了成田机场的航站楼。我和明书还有两位队员一路,剩下的几个人一路,还有同学因为遇到了手机故障,选择在酒店没有出门。

但计划总是赶不上变化,没想到机场的行李寄存柜并没有前一天晚上我们搜索看到的多,大部分柜子还是满着的状态,所以我们在寄存行李上多花了一些时间。后面在办理游客的 Welcome Suica 时,又遇到了大家的所有信用卡全部无法使用的情况(不愧是你啊,霓虹)。我们不得不折返去 ATM 取现,又掏手续费,又浪费了时间。总之当我们坐上京急的“Access Express”前往市区时,已经是七点四十多了(有部分同学去坐了 Skyliner,但我觉得这个特急券花得太不值了)。列车一路驶过千叶县和东京都的郊区,窗外是初升的太阳,甚至还能模模糊糊地看到富士山。最终我们在快一个小时后抵达了浅草站,开始了短暂的东京之旅。

既然是浅草站,那首先去的肯定是浅草寺。或许是太早了,又是周日,寺门口的小商店都没怎么开门。我在一个面向晴空塔的路口发现了被一块显眼的贴满 sticker 的路牌,也给它贴上了一个 TUNA logo。天上频繁地有飞机飞过,看起来应该是在羽田机场的航路上。浅草寺内部颇为热闹,大殿前有山形县村山市的中学生在进行民俗表演,周围还有农民摆摊卖当地土特产,有萝卜、白菜、芋头之类的。我们购买了一些纪念品(我当然是买了明信片),没有在寺里逛太久,就从旁边出去了,打算在东京随意地进行一些 city walk,目标是上野公园和秋叶原。路过浅草邮局时,我去买了邮票、寄出了凌晨写的明信片,还要到了纪念戳。此后我们就顺着上野的方向一路走过去,见到了著名的首都高。从天桥跨过上野站时,山手线刚好有几辆车进出站,给我贡献了几张经典机位的照片。上野动物园的门口还留着弯弯曲曲的蛇形通道,但熊猫香香已经回到了成都,也就没有那么多人排队了。从上野公园离开后,去秋叶原的路其实大部分沿着山手线的高架,底下有很多热闹的小市场。秋叶原当然和各种打卡朋友圈、影视作品中给我的印象完全一样,只是最显眼的广告片俨然已经变成了原神。很遗憾,由于航班时间限制,我们没有太多时间去到楼里仔细逛,只好在附近找了一家评分还不错的拉面店吃午饭。吃完饭,坐上东京地下铁直通到京急线的电车,又花了一个多小时回到了机场,结束了匆匆的东京行。

回到机场,我几乎恰好花完了 Suica 里面的钱,对此感到颇为得意。其实我并没有事先算过,只是恰好命中了地铁的某个换乘优惠,否则就要面临余额不足(大概差 70 日元)的窘境了。在等其他同学前来集合取行李的同时,我去了成田机场五楼的展望台——日本的大机场几乎都会有这样的设施,真是让人羡慕。这天的天气恰好还不错,能见度很好,整个机场的靠跑道一侧清晰可见。但我也没有太多时间,看了几眼就得跑下楼办理登机托运,随后再次通过边检、海关,出境日本。路过免税店,又买了一些白色恋人之类的零食后,我们登上了国航相当有历史的 777-300ER,开始了四个多小时的最后一程。机上的配餐是一份食之无味的乌冬面和一些日式的冷餐。我勉强吃了一些,也睡不着,大部分时间都在发呆。飞机进入中国的时候刚好是日落,但我在中间一排的靠过道座位上,只能透过靠窗旅客关上一半的窗户从侧面观赏。

从我们离开酒店起,到落地止;在经历了四十多个小时的波折后,我们终于回到了中国。

P.S. 回程的延误最后让我申请到了 1200 元的顶格延误险赔偿,和 UA 客服谈心之后又获得了 $200 的无条件代金券。

总结

这一年作为 advisor 参与了两场超算比赛,与作为队员时的感受和心态都完全不同。ASC24 刚刚公布了决赛名单,清华并没有入选。我无法掩盖自己的失望,所以也没有更多可说的了。在可见的将来我大概也不会再有这样的经历了,那就祝清华大学超算队一切顺利吧。