有梦想的人才有青春——专访ASC大赛冠军队

谁说长得好看的人才有青春?在采访2013届亚洲大学生超算竞赛(Asia Student Supercomputer challenge,以下简称ASC2013)冠军——清华大学“梦之队”的时候,笔者深深地体会到了一点——有梦想的人才真正有青春。

【图1】ASC亚洲大学生超算大赛冠军队——清华大学梦之队(左4为上届队长,左6为带队老师黄小猛,右1为这次大赛的队长)

在黄小猛老师(清华大学超算参赛队伍的带队老师)的带领下,记者走进一清华实验楼里的一间小屋,最先映入眼帘的是一张单人床,上面放着简单的被褥,还有一个圆桌摆在屋子的正中央,占据了小屋的大半部分面积……这就是清华大学“梦之队”的工作室?ASC2013冠军队就是在这么简陋的环境下诞生的?就在这样一个与想象中相去甚远的场所中,在满是疑惑的思绪中,开始了采访……

在介绍采访内容之前,笔者认为有必要先简单介绍一下ASC大赛的背景和比赛规则:

ASC亚洲大学生超级计算机竞赛是由中国倡议成立,日本、俄罗斯、韩国、新加坡、泰国、中国台湾、中国香港等国家和地区的超算专家和机构联合发起和组织,是与美国SC、德国ISC大学生超算大赛并驾齐驱的全球三大超算赛事之一,2013年是第一届。中国大陆高校的前两名可获得参加6月份在德国举行的ISC13国际大学生超级计算机竞赛资格。

各参赛队由6名在校大学生组成,参赛学生必须为具有该校正式学籍的全日制在校本科生。每支参赛队伍可配一名指导老师。参赛队伍需按照竞赛评审委员给出的统一命题,在规定时间内独立完成超算系统方案、测试、优化工作并提交书面报告,由评审委员会统一评定。

各参赛队伍需要在3000瓦的总功耗约束条件下构建小型超算系统,并调试达到其最高运算性能。在应用考核上设置了五个应用进行测试和优化:用于测试超级计算机系统浮点性能的Linpack测试、研究生物分子体系的分子动力学应用GROMACS等四个国际常用应用测试,以及组委会特别设置的“基于期权定价应用BSDE”的MIC众核并行优化试题。其中前两道题是可以自由选择计算平台,只有BSDE是必须使用MIC架构进行并行优化。

从参赛队伍的组建到比赛的结束,仅有三个月的时间,这三个月的时间里,要完成参赛队伍的组件、架构选择、应用调优、测试等过程。选人组队,当然是竞赛的第一步!

梦之队——一支具有“对抗性”和“策略性”的队伍

在交流的过程中,记者发现,清华大学参赛队伍是一个充满“对抗性”和“策划性”的队伍。

策划性,主要是因为在比赛的每一个环节,清华都经过了非常强的策划手段,包括队员选拔、架构选择、应用调优等方面,这些策略后文都会提到。

对抗性,是因为清华的这6名队员每一个都是实力非常强,在编程方面具有非常丰富的经验,有的甚至从初中就开始编程,并且团队协作非常之默契。队长徐持衡、负责硬件和系统的金昊衠、王欣亮、王凝枰(唯一一个大三的,其他都是大四的)、骆可强,去年参赛队的队长担任黄小猛老师的助手。“参赛队员每天在这边工作的时间差不多14个小时左右,从早上到晚上一两点钟”,黄老师告诉记者,他说的“这边”就是采访的那间小屋。

从队员的组成来看,清华的队员们都是计算机专业的本科生。然而,从比赛的应用来看,物理、航空航天等专业的学生可能更熟悉比赛的应用程序。当记者问到,有没有考虑过选择其他专业的学生做队员时,黄小猛表示,“从比赛夺冠的角度来说,只有计算机系的最好。因为就算是搞物理的,真把应用本身看懂了,再把代码调优了,三年时间也未必能做到。而我们只有三个月的时间,那只能是尽我们所能做到比别人强一点点”。

穷举法确定架构——GPU是最优组合

主办方规定BSDE应用必须使用MIC架构进行并行优化,因此,不涉及到硬件平台的选择方面,主要的工作集中在软件调优。还有其他的四个应用,如何选择计算平台?这才是难点所在!

可以用纯CPU计算,也可以用CPU加上GPU或者是MIC,还可以用CPU+GPU+MIC,到底该如何选择? 3000W的功耗也限制了计算节点的数量,如何才能在有限的功耗范围内实现最高的计算速度?在计算平台的选择上,清华大学采用了穷举法,在3000W的功耗范围内,对所有可能的组合进行测试,光是确定平台就花了两到三周的时间。

“最终,我们带了10块GPU卡参赛”,黄小猛在采访中谈到,“我们最先想到的是4块MIC+6块GPU,带几台CPU,后来没装,因为功耗比划不来,在规定的能耗之内效率上不去,没有达到我们期望的必胜的效率。”

“MIC经常会莫名其妙的变成互联MIC,我们拿到的是被动散热的卡,一旦温度过高后,就会限频,限频后温度降下来,频率却没法回到原来那么高,会比原来更慢一些。还存在散热的问题,因为那个MIC卡是3000瓦的被动散热,一般情况下被动散热不可以做到那么高。另外,服务器跟MIC卡之间也不是特别兼容”,其中一个队员补充道,“MIC跟GPU的编程模式不太一样, GPU的编程模式需要自己指定,英特尔的MIC是自动指定,并且完全不知道bug出在哪,性能不好也完全不知道怎么回事”。

事实上,尽管其他四个可以自由选择平台的应用都采用了GPU+CPU的机器,但其中真正用到GPU加速的只有OpenCFD和Linpack两个,另外两个应用——WRF和Gromacs只是把GPU放进去了,主要是因为这两个题目非常复杂,国外也没把它改成GPU版。

赛场策略——稳中取胜

“田忌赛马”的故事告诉我们,队伍的实力并不一定和比赛的结果成正比,比赛的结果很大一部分程度取决于战略。尽管清华梦之队实力非凡,但策略方面,也绝对不输旁人。

当时比赛有五个应用,其中有一个应用是比较开放的,代码量比较小,方便大家去调整代码,做特别大的优化。

在那个应用我们优化到了几万倍,然而,这种方法也存在着风险——因为方法相对来说比较激进,可能会被组委会的人质疑,比如说算法去掉了一些部分或者算的不精确。究竟是不是该采取这样激进的办法?

经过综合衡量,梦之队决定采用稳中制胜的策略。“因为当时我们的成绩已经算领先一部分了,于是我们采取更保守的策略稳中取胜。结果比下来发现有人比我们更快,于是后来我们不担心这个事情了,大家都很开心地把比赛比完了”,一个队员告诉记者,脸上洋溢着回味和自豪笑容。

梦之队,一只充满梦想和希望的队伍,在他们的身上,我问到了青春的气息。