updated asc26
This commit is contained in:
40
source/_posts/One-Last-ASC.md
Normal file
40
source/_posts/One-Last-ASC.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: 其作始也简,其将毕也必巨 - 回顾64-bit Brainstorm三年ASC征程
|
||||
date: 2026-05-30 10:10:31
|
||||
tags: [竞赛, 生活, 学习, ASC]
|
||||
---
|
||||
|
||||
我的最后一次ASC之旅终于结束了,回望过去如今我想表达的唯有感激,不仅是对与我并肩作战的队友,还有参赛过程中其他战队的朋友们,以及辛苦付出的组委会老师们。正好借着这次机会,我也想回顾一下这三年来的ASC参赛经历,分享一些个人的感悟和体会。
|
||||
|
||||
### ASC24:从零开始的挑战
|
||||
2023年年末,一位在网上认识的神秘学长lzd突然发给我一张海报,说是有个非常好玩的比赛正在校队招新,感觉我很适合参加让我也来试试。其实当时我刚从ACM校队招新大败而归不知道自己适合什么样的比赛,于是让我试试那我就试一下好了,结果这一试直接进入了64-bit Brainstorm战队并开启了我长达三年的ASC之旅。
|
||||
|
||||
那个时候毕竟才大一懂的也不多,进入超算队后我听从学长的建议花了一个多月去自学MPI和CUDA编程。经过一段时间学习准备,ASC24的预赛赛题发布了,根据任务安排,我和另一位学长hxh分配到了OpenCAEPoro这个多相多组分渗流模拟科学计算程序的优化任务。依稀记得当时因为这个程序本身依赖较多还要手动构建不少软件导致我们花了三天才成功把这个程序的baseline跑起来,这让我第一次真正接触到了科学计算程序的复杂性和挑战性。之后我们又花了数周时间对这个程序进行了性能分析和优化,xh学长负责算法优化进行了一些手动循环展开和向量化以及一些算子库的高性能版本替代,我则负责一些算子的GPU移植工作并提供了快速fallback回CPU的开关以防万一,预赛阶段我们最终实现的加速比只有1.2x不过好在也顺利进入了决赛。
|
||||
|
||||
决赛阶段是我最难忘的部分,我第一次见识到了完整的小型集群搭建维护流程,lzd学长简直像个超人一样什么都懂,他和cyq学长双人完成了整个集群的部署,系统方面有什么问题找他都能解决,功耗过高他也有各种办法来控制,甚至CAE这道题当时构建失败我还在排查原因时他也能一眼发现是我把一个头文件位置写错了,真是太厉害了。终于到了OpenCAEPoro测例发布这天,不出意外的是又出意外了,决赛case可以说相当刁钻记得当时很多团队都卡在第一个测例无法运行结果,后面几个测例由于规模远远超过预赛测例导致我们的GPU版本直接崩溃,危急情况下,我和xh学长迅速做出决定马上fallback回CPU版本把结果运行出来,在运行后几个测例的同时,我们也在空闲节点排查第一个测例的问题,结果发现只要把我们选用的nvhpc编译链完全回退到gcc就能正确成功运行第一个测例了。最后结果也是非常出人意料,我们只是把所有测例运行完了实际没有特别明显的优化却在这道题上取得了第二名的成绩只略逊于台湾清华大学,通过赛后交流才知道有些队伍虽然有很快的加速比但是因为精度无法通过所以没能拿到相应的分数。
|
||||
|
||||
这一年我们的总成绩是rank 5,是历年来最好的一次,大家都非常开心,晚宴阶段我也认识了非常多其他学校的新朋友并约定来年再见。值得一提的是,这一年由于AI工具还没发展起来,不管是程序排错还是性能优化我们都还是古法处理,现在身处Agent时代回想起来那段人工手动处理问题的经历真的是非常不易。
|
||||
|
||||
### ASC25:遭遇挫折的成长
|
||||
|
||||
时间转眼来到2024下半年,在新学期的战队招新中我们又迎来了三位优秀的新队员分别是wlx, yx和zqr。此时lzd学长面临毕业,由hxh和我作为老队员和三位新队员组建了一支新的超算团队出征ASC25。这一年我正值大二课业最为繁重的时候,因此在ASC25赛题发布后我被分配到的任务只有集群运维和HPL/HPCG基准测试工作。为了尽可能更多地参与贡献,我在课余时间也耗费了不少精力研究系统调优并产生了一些自以为不错的方案,结果却是埋下了非常深的隐患让我赛后十分后悔。
|
||||
|
||||
这一年我给集群选用的Linux发行版是Intel出品的Clear Linux(非常戏谑的是ASC25结束后不久Intel就宣布终止此项目并关闭了Clear Linux官网),当时我由于网络上的一些宣传过于迷信这个发行版的性能表现却忽视了其兼容性带来的问题,预赛阶段我们的机时大部分分给了AlphaFold和m5c两个赛题,直到最后才进行HPL/HPCG测试,这时候我才发现Clear Linux软件源里提供的IB驱动和nvidia-peermem模块完全不兼容并且没有办法修复,而Nvidia官方的IB驱动也不支持Clear Linux无法在这个发行版上安装,为了解决这个问题我最终配置了Rocky + Clear这个非常抽象的双系统方案,虽然最终解决了兼容性问题但也为队友们的工作造成了不少麻烦。好在hxh和wlx都非常给力,至少在预赛阶段我们的AlphaFold和m5c赛题都有亮眼表现,以不错的成绩再次进入了决赛。
|
||||
|
||||
来到青海大学,我们从一开始就各种问题不断,先是装完机发现IB起不来,排查了快一个小时发现是Clear Linux起不了opensm服务只能单开一个节点用Rocky Linux启动。而后又是HPL测试结果一直异常,我们只能用双机跑出正常结果超过双机就会性能暴跌。最后更严重的是功耗不知为何完全不听话一直压不下来即便我给所有核心都调整频率至最低。结果就是决赛正式运行阶段的两天我们整个过程都非常崩溃,虽然有五个节点但是大部分赛题我们都只能用三节点来跑才能控制功耗不会超出4KW限制。赛后我感到非常自责,觉得自己在系统选择和功耗控制的失误给整个团队带来了很大的麻烦和压力,这一年是我们表现最差的一年排名直接倒数,除了wlx负责的AlphaFold表现不错之外其他赛题得分都非常惨淡。当时队长xh非常难受我却没脸去安慰他,感觉自己拖了大家的后腿,好在队友们都非常理解和包容我,原本我打算今年结束就从超算队退役,但是带着这份歉意我还是决定明年ASC26干回来争取用一个更好的结果来弥补。在AI方面,相比去年这一年的不同是我们在网上发现了一个叫Deepseek V2.5的国产大语言模型,其性能丝毫不逊于同期国外的大模型,我们第一次感受到了AI工具在报错分析和代码优化方面的巨大帮助。
|
||||
|
||||
### ASC26:Agent时代的思考
|
||||
|
||||
终于来到了2025年下半年,我们在新学期的战队招新中又迎来了三位新队员分别是和我同级的dyz,计算机学院大一的qhy以及电子科学学院大二的chb。这一年是我们人力资源最为丰富的一年,lzd回归指导超算队,hxh和wlx也分别被清华大学和上海交大录取,他们作为外援继续参与到超算队的工作中,同时我们另一支参加ISC的超算队也提供了不少帮助。
|
||||
|
||||
这一次我的工作依旧包括系统运维和基准测试,同时还和chb一起负责了AMSS-NCKU数值相对论模拟程序的优化工作。在系统方面由于去年的经验教训我直接选择了Rocky Linux 10作为我们的操作系统,它在兼容性和稳定性方面都非常可靠没有问题。而在程序优化方面,Agent时代的到来也对我们的工作流带来了前所未有的改变,我们可以把精力更多的放在性能分析和优化思路的探索上,具体的实现细节则可以交给AI工具来完成,这大大提高了我们的效率和创新能力。在AMSS-NCKU的优化过程中,我们通过perf和vtune等工具分析了程序的性能瓶颈,发现问题主要集中在通信和访存上,而这些问题最终又主要由低效的插值函数引起,于是在预赛阶段我们针对MPI和polint相关函数做了充分的针对性优化,包括选用点对点通信和异步通信,以及插值方面调换遍历顺序和提供快路径等,最终在预赛阶段对于GW150914测例我们的每步耗时从14s多降低到了3s多,取得了非常显著的加速效果。同时在世界模型赛题上dyz和qhy也表现优异,我们得以第三次闯入决赛来到无锡学院与各路优秀的同仁汇合继续切磋交流。
|
||||
|
||||
进入决赛阶段,我们在AMSS-NCKU的优化工作继续进行,但是当我们继续调整优化将步时压缩到了2.6s左右之后却陷入了一个瓶颈,即接下来我们无论再改动哪里耗时都不会降低了并且还会负优化,这对我和chb造成了巨大的困扰,接近两个礼拜我们都没有任何进展,并且由于没有明显进展汇报我们还被怀疑骄傲自满,躺平摆烂以及没有理解赛题,好在有学长的鼓励支持我还是坚持了下来尽量忽略了不合理的外部干扰继续坚持工作,最终我和chb决定推翻原本思路基于现在的CPU版本进行完整的GPU重构,虽然这个决定工作量巨大但是我们觉得这是唯一有可能突破瓶颈的办法。AMSS程序本身有着大量参数支持,为了充分准备决赛测例我们自费了大量token来利用Agent进行移植工作。移植初期由于效果不明显我们还被质疑找错了方向,然而我和chb都对我们的GPU方案很有信心知道还有大量优化空间,最终我们在前往无锡前取得了巨大突破,GPU版本的每步耗时从2.6s降低到了0.8s多,满怀着信心和期待,我们踏上了前往无锡的旅程。
|
||||
|
||||
来到无锡学院,相比去年一切都显得有条不紊尽在掌握,我利用clonezilla顺利完成了现场四节点装机并且功耗也完全在可控范围内,测试阶段每个赛题都进行了充分测试不像去年磕磕绊绊。然而在正式阶段却没有我们预期的那么容易。首先是设备代差带来的劣势,导致我们在HPL/HPCG,UnifoLM-WMA和AMSS-NCKU上基本丧失了竞争力;同时由于大家都有了Agent加持,每个赛题都会出现超快版本导致很多团队只能拿到基础分但拿不到性能分,这在过去是完全不可想象的,从前的ASC哪怕优化做得没那么好但是只要能把所有测例运行完成都能拿到不错的分数,而现在只要优化水平不在第一梯队就基本拿不到分数。最终我们除了AMSS-NCKU以外其他赛题几乎全都没能够超过10分,也没能突破ASC24的排名记录。
|
||||
|
||||
虽然结果没有达到我们最初的预期,但是我觉得ASC26的经历依然非常宝贵并且令我满意。ASC的意义从来都不是最终排名,而是在优化过程中的技术积累,比赛过程中的团队协作,以及赛后交流中的友谊建立,这些都是无价的财富。通过这三年的ASC经历,我不仅提升了自己的技术能力,更重要的是结识了一群志同道合的朋友,收获了许多珍贵的回忆和经验。与此同时我们也充分认识到了自己和其他优秀团队之间的差距,这些差距既有技术层面的也有资源层面的,它们都为我们提供了未来努力的方向和动力。
|
||||
|
||||
最后,我想对所有支持和帮助过我们的人表达最诚挚的感谢。首先是我的队友们,与你们共事让我感到无比幸运和自豪,我从未觉得上大学开心过,除了在超算队和你们一起工作的时候。其次是我在其他高校超算队尤其是齐鲁工业大学,福州大学等认识的朋友们,与你们的交流和切磋让我受益匪浅,也让我感受到了ASC赛事的温暖和活力。最后是组委会的老师们,你们的辛勤付出和专业支持为大家提供了一个展示自我和提升自我的平台,非常感激你们的努力。比赛结束后碰到两位组委会老师还向我们告别说到希望明年再见,虽然明年我因为考研不可能再重回ASC赛场了,希望将来还是能有机会以非队员的身份继续参与到ASC的活动中来。
|
||||
|
||||
虽然我的ASC之旅已经结束了,但我相信在这个过程中建立的友谊和积累的经验将会伴随我们继续前行。在此衷心祝愿ASC赛事越办越好,培养出更多优秀的超算人才,也祝愿每一位为ASC辛勤工作的同学都能在未来的道路上取得更大的成功!
|
||||
@@ -115,3 +115,9 @@ NUMACTL_CPU_BIND = "taskset -c 4-55,60-111"
|
||||
过去参加比赛就没有一次是能够在限定功耗下启用所有核心不降频全力跑程序的,我不禁思考既然用不完何不将单核计算性能调优做到极致,牺牲一些核心处理杂活不参与计算,剩余的核心全力以赴跑程序不要受干扰最好也不要降频,这就是我的大致思路。
|
||||
|
||||
通过`nohz_full`与`isolcpus`实现核心隔离,配合`mitigations=off`释放硬件潜能,并利用`scx_tickless`进行用户态调度增强,我按照设想将这台Xeon 8480+服务器改造成了一个OS Noise几乎消除的专用计算平台。后续需要关注的问题是迁移服务器后如何快速重现这些调优配置,或者干脆设计动态调控脚本来根据硬件信息调整内核参数。另外还有多机运行也没有进行测试,未来会关注在MPI环境下验证这些调优措施的适用性。
|
||||
|
||||
---
|
||||
|
||||
### 赛后更新
|
||||
|
||||
散了吧孩子们,H100/H200已经杀死比赛了:(
|
||||
|
||||
Reference in New Issue
Block a user