特等奖!南科大计算机系本科生参赛队在全国大学生计算机系统能力大赛斩获佳绩

发布时间:2023-09-21

5-1.jpg

近日,2023全国大学生计算机系统能力大赛落下帷幕。经过激烈的角逐,我校本科生郑英炜、王炳臻、邬一帆和严文谦组成的参赛队荣获2023全国大学生计算机系统能力大赛编译系统设计赛(华为毕昇杯)(Risc-V赛道)特等奖!指导老师为刘烨庞助理教授。其中郑英炜、王炳臻和邬一帆为大四本科生,严文谦为大三本科生。佳绩的获得来源于他们不懈的坚持与努力、积极的探索与尝试、充分的团结与协作以及导师悉心的指导。祝贺他们!

5-3.png

5-4.png

队员代表在大赛颁奖典礼上发表获奖感言:

很荣幸我们CMMC队获得了特等奖,这离不开队员们的努力(熬夜爆肝),以及刘烨庞老师的精心指导。然而,我们认为获奖最关键的因素是选对了技术侧重点。


首先,我们听从了刘老师的建议,在编译器测试方面投入了大量时间。我们的编译器经受住了来自csmith的上千万次测试的考验,在上千个回归测试中生成出与GCC/LLVM媲美的指令序列。此外,我们编写了多个单元测试,并尝试使用形式化验证工具。这确保了我们的编译器在进行大量激进优化后仍然能够保持正确性,同时也使我们在决赛中能够快速发现并修复编译隐藏样例时出现的问题。


其次,我们编写了基于微架构感知的代码生成系统。我们注意到,往届队伍虽然有较为现代的架构设计,但是只重视中端而忽视了后端。我们仔细研究了评测平台CPU的软件优化手册,并在后端专门针对微架构优化指令序列。这包括从前端的分支预测、指令预取、乱序发射、寄存器重命名、指令融合,到后端各指令的延迟与吞吐,再到内存子系统的数据预取、cache、TLB。这些因素都是设计编译器时需要考虑的。可以说,造优化编译器之前得先学会造现代CPU(强烈推荐学习Computer Architecture: A Quantitative Approach)。


最令人惊喜的是,在优化生成代码序列的过程中,我们发现了多个在特定微架构上明显快于GCC/LLVM的模式。我们已将相关补丁提交至LLVM上游,部分补丁已被接受。


遗憾的是,受比赛规则的限制,我们没有能够进一步探索基于超参数搜索的PGO方法。我们认为这类方法在深度学习编译器(比如AutoTVM)中应用广泛,具有很强的现实意义。希望未来组委会能够考虑将编译分为插桩-训练-最终代码生成三阶段,让选手们进一步探索程序性能的极限。


最后,我们感谢组委会成员的辛勤付出,他们保障了比赛的顺利进行,也给了我们展示自身能力的机会。我们期待未来能有更多的同学参加系统能力大赛,也希望更多的同学能积极参与开源系统软件的开发(我们在LLVM/LuaJIT等你来玩)。


大赛网站:https://compiler.educg.net