新闻 图说CPC赛事通知新网直通车 新网会客厅

CPC故事丨多喝热水多看文档

浏览次数:2737 发布时间:2019-10-11-09:10:16

队伍名称:多喝热水多看文档队

指导老师:山东大学刘卫国教授

第三届国产CPU并行应用挑战赛已经结束,我们在这次比赛中收获了很多,也发现了自己的不足,回想整个过程,确实有很多东西值得我们记忆。参加CPC大赛似乎已经成为了我们山东大学软件学院高性能计算与大数据处理实验室的传统,尤其是对于我们这些刚刚进入高性能领域的“新人”,CPC大赛提供了一个很好的平台,是一个学习以及锻炼自我的好机会。

比赛过程远没有想象中那么轻松,初赛时,我们以为自己已经使出浑身解数,却只是勉强进入复赛。相比于初赛,复赛给我留下的印象更加深刻,有了初赛的经验教训,我们在复赛表现地更具耐心,也更加关注细节,过分关注计算热点却使我们忽略了“大局观”,没有从程序的整体出发考虑优化方式。正是这一次又一次的踩坑,让我们在比赛过程中不断进步。

除了专业知识与技能的提高,这次比赛让我们认识到看待问题角度与态度的重要性。虽然说“术业有专攻”,但面对一个并行优化问题,研究其他领域的同学却能给我们提出非常宝贵的建议。不被思维定势所限制,跳出我们常用的优化方式的圈子,往往能够发现新奇有效的奇招。

复赛的过程其实更像是一个不断挑战自我的过程,我们不知道其他队伍的情况,只能一直坚持,不到最后一刻不放弃。每当我们有了明显提升,欣喜之余我们又会陷入苦恼:下一步还能怎么做?这是对我们心性的磨练,虽然直到比赛前一天晚上我们都有或多或少的提升,但是事实证明,我们还有很大的提升空间。现在回想起来,我们在比赛后半段,确实比前面有所松懈,忽略了很多本该想到的问题,我们确实还不够沉稳。

除了这些,前辈们为了推广国产CPU所做出的努力也让我们感慨万分。比如我们在比赛过程中经常用到的性能测试工具,享受着它带给我们的便捷的同时,也让我们想到:正是他们一点一滴的努力让国产CPU平台在慢慢地进步,完善并推广国产平台似乎离我们没那么远,这也是我们每一个了解它的人应该肩负起的责任。

最后,再次感谢CPC大赛主办方提供这个让我们收获颇丰的机会,谢谢你们为推广国产CPU所做出的努力,希望国产CPU并行应用挑战赛越办越好,国产CPU越来越好!

优化介绍

本次比赛中,我们在photoNs-2.0项目中使用了通信与计算分离、通信优化、热点函数从核计算、模拟计算函数、去除重复计算等优化手段。

在原程序中,进程与进程之间的粒子受力情况需要按通信-计算的模式计算27轮,这种通信与计算混杂在一起的方式会造成很多资源空等。为此我们将通信和计算完全分离开来,先完成所有的通信操作,再进行一次计算。除此之外,我们还将提取出的27轮独立的通信操作融合成1次通信操作。使用以上手段,我们在解决了原项目中空等问题的同时,还将计算独立出来,方便了后续对计算热点的优化。

通信优化完成后,项目的耗时完全转移到计算上,我们首先将计算函数进行了从核优化,但是效果并不显著,在确定是从核调用erfc函数和exp函数导致性能瓶颈之后,我们利用erfc和exp的推导公式对计算进行了实现,并进行了向量化,取得了不错的效果。之后我们针对项目中数据较为集中部分进行了函数拟合,利用拟合得出的线性展开式对计算进行模拟,最终经向量化之后在符合精度的同时获得了优异的性能提升。

最后,我们发现原程序中粒子对间的受力计算,每次只会更新其中的一个粒子,这样计算一个粒子对的受力就要进行两次计算,且两次计算的过程相同。在此基础上,我们将粒子对间的计算从原先的两次降低为一次,降低了一半的计算量,使得计算时间有了大幅度的降低。

经过上述手段优化之后,在8/64/512进程的算例分别获得了63/94/107倍的加速效果。




版权所有 国产CPU并行应用挑战赛