作者:Forwil
链接:https://www.zhihu.com/question/32242368/answer/66384622
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
ASC世界大学生超级计算机竞赛 == Asia Supercomputer Community Student Supercomputer Challenge,由亚洲超算协会发起,目前已经举办了4届(12~15),每年好像都是浪潮公司掏钱赞助。
初赛一般在前年年底开始报名,当年一月份放出初赛试题。一般是1 benchmark + 1 applications + 1 MIC(Intel Xeon Phi) program。初赛历时2个月左右,要求提交一份全英文的proposal,介绍参赛学校的超算情况,介绍组织参赛经历,应用分析和优化策略等。初赛会要求在给定功耗(一直都是3kW)下设计一个超算集群,当然不会要求每个比赛队伍都真的拿钱去买机器来组集群。然后就1 benchmark 和 1 applications 给出应用分析,鼓励参赛队在自己学校的超算平台上对benchmark和applications进行优化。
一般初赛的benchmark都是linpack,世界top500的超算集群就是用linpack的性能(G/Tflops)来排名的。ASC15初赛时把benchmark换成了HPCC,实际上HPCC = HPL(High performance Linpack)+ 一些奇奇怪怪的硬件性能测试。并且在决赛的时候HPCC被换成了HPL,因此linpack测试应该是每年都会有的一个项目。
初赛给的application一般是工业级的并行程序,比如ASC15就是分子动力学的NAMD,一般的工业级应用都是十万百万行代码级别的,想要做代码级优化其实比较难。优化一般侧重于编译参数,运行参数和数学库blas的重新链接上,对于IO密集型的应用可以考虑并行读写或者ramdisk等一些tricky小方法。
MIC程序优化是ASC比赛的一个很重要的项目,会给一份不长的串行或者并行效率不高的子程序,这个子程序一般是大型应用的一个热点函数。比如ASC15中SKA的Gridding,核心循环只有不到10行左右3个嵌套循环。MIC优化可以做的工作很多,算法优化、缓存优化、向量化、改写汇编都是常见的。当然MIC编程的坑很多,我不是负责MIC应用的我就不多说了。一般MIC程序优化这个项目是占分最多的。
每年的3月初提交完初赛proposal之后大概一个月后主办方就公布晋级决赛的16支队伍,往年都是8支大陆队8支海外队,大陆队伍一般比较强,如清华、国防科大、上交、华科、中山几乎每年都进决赛。海外队伍相对较弱,不过也有像台湾清华、南洋理工这样可以冲击冠亚军的队。
公布完晋级决赛的队伍之后,一般会释出2个新的application,今年决赛多的两个应用是wrf-chem(天气预测中的化学反应),palabos(流体力学),优化思路和NAMD类似。而后也会公布决赛的比赛具体项目和计分方式,但是会保留一个secret application到决赛最后一天公布,最后总决赛的项目就由初赛的3个+决赛前公布的2个+secret 1个 一共 6个应用组成。
总决赛一般分4天,前两天搭建软硬件环境,比赛方会提供服务器和MIC加速卡,使用GPU的队伍就需要自己带过去装了,第三天测试Linpack+两个application,第四天测试最后一个app和secret app。自组的平台要求运行时的功耗不能超过3kW。而MIC应用会单独在赛方提供的平台上测试。
总决赛的奖金挺多的,除了MIC应用之外其他的包括linpack都是每个1w,MIC应用2.718w(叫e-prize奖)。总分冠军10w,亚军5w。
至于比赛比的东西,更倾向于操作系统+体系结构方面的知识,相比于ACM比的算法+数据结构+灵光一现,ASC竞赛的“计算机血统“更浓一些,工程性也强很多,这一点我比较喜欢。