跳转至

如何写Proposal

前言

《超算竞赛导引》是由赛事官方编写的指导书。本文就书中的一些有用、重点的内容作摘要整理,并根据笔者自身经验加以补充,以助刚入门的同学快速了解、上手超算竞赛。欲见详细内容请自行购买、借阅书籍。

  竞赛方案的要求将会随着竟赛细节的正式发布而公布。准备竞赛方案需要理论知识与实践动手能力的合理搭配。这份竞赛方案将被视为一份正式的设计报告,需清晰易懂地涵盖各种技术信息。竞赛报告应该包含不同的部分,以方便不同背景的读者阅读。

章节结构

  竞赛方案应该包含主体部分和为主体提供补充说明的附录。对于概念、实验结果等信息,最好能用图表等更直观的方式表现出来,以帮助读者或者评委理解。

图表的呈现

  接下来将介绍在方案中如何使用图表的形式将结果呈现出来。通过作图能够很好地反映出两个变量之间的关系(如加速比与CPU核数)。人们一般用x轴来表示自变量(如CPU核数),用y轴来表示因变量(如消耗时间)。坐标轴上应该标出尺度与单位来。图的范围应该以覆盖整个页面为宜。

  在图表中使用合适的字体有助于更美观的信息呈现。图中的对象与字体一般用来表示某一主题以及解释一些想法与概念等。在使用线条时,应使用彼此之间易于区分的线条。例如,如果用虚线来表示以太网连接,就不要再使用相同样式的虚线来表示其他的连接了。在图的范围内,合理地布局各个对象的分布对于信息更好地呈现来说至关重要。一般需要特别强调的对象会放到相对空白的区域以加以突出。空白区域一般都使用白色的背景而不使用黑色或者深色的背景。黑色的背景往往会产生阴影等效果,降低了图的可阅读性。

其他部分

在致谢部分,可以对一些提供过很大帮助,但在方案中没有提及的个人或者集体进行感谢等。

高性能计算活动简介

这一部分内容相对简单,需要选手介绍一下所在学校或者机构关于高性能计算的一些活动。可以介绍一套硬件系统和该系统的主要用途,还可以提供一些在系统上运行的规模较大应用的相关信息。 校赛Proposal不用写这个。

硬件设计与能效

  由于不同的集群的硬件资源可能不相同,所以在进行硬件设计时并不需要与软件应用部分直接挂钩。选手在硬件上跑任务的时候并不需要完全按照与理论设计一样的设置来进行。选手需要明白安装编译器与数学库的重要性,最好还能在一个小规模的集群上亲自试装一下。安装编译器与数学库是将来得到很好LINPACK测试结果的基础,

  选手可以在不同的硬件集群上进行测试。同时,最好还能介绍一下在测试的过程中做了哪些工作来保证系统在3kW规模下运行。一般可以使用功率计来获得能耗的相应信息。下表列出了功率与效率的相关细节。

核数 加速器 计算峰值/Gflops 能耗/W 效率/(Gflops/W)
24 1 K40 GPU 1440 700 2.057
18 1 K40 GPU 1364 635 2.148
12 1 K40 GPU 1253 570 2.198
6 1 K40 GPU 1116 500 2.232
4 1 K40 GPU 1046 475 2.202
2 1 K40 GPU 895 465 1.924

  服务器一般都会配有一些冗余的特性(如备用电源)用以保证在商用环境中的可靠性。还可以考虑使用一些节省功率的设备和水冷技术等来取得更好的性能输出。水冷装置的电源功率也应该在3kW能耗限制以下(在进行LINPACK测试的时候,可能需要牺牲一定的CPU核吞吐量以获得更好的浮点计算能力(ops).本章主要为了加深对硬件能耗效率的认识。最后所有优化后的配置参数和系统正常运行的证据都应以类似下表的形式给出。

节点数 核数 加速器 并行技术 N/NB P×Q ...
1 24 None OpenMp within node 87000/224 1×1 ...
1 24 1 Xeon Phi OpenMP within node,
offload to Xeon Phi
87000/1024 1×1 ...
1 24 1 K40 GPU OpenMP within node
CUDA to GPU
87000/1024 1×1 ...
2 48 1 Xeon Phi per node OpenMP within node,
MPI across nodes,
offload to Xeon Phi
123000/1024 1×2 ...
2 48 1 K40 GPU per node OpenMP within node,
MPI across nodes,
CUDA to GPU
123000/1024 1×2 ...

CPU,Intel Xeon E5-2695v2: 2.4 GHz × 12 cores × 2 socket × 8 flops/clock =460.8Gflops per node(每节点)。

MIC,Intel Xeon Phi 5110P: 1.053GHz × 60 cores × 16 flops/clock=1010.88Gflops per accelerator(每卡)。

GPU,NVIDIA Tesa K40:(根据说明书)=1430 Gflops per accelerator(每卡)。

^功耗是在电源插口使用功率计测得的。

(HPL/HPCG)LINPACK测试

LINPACK是用来测试高性能计算系统性能的重要指标。具体测试方法请见本站《HPL/HPCG安装与测试方法》。

应用软件

  首先需要从源代码中安装软件。下载的源代码中会伴有指导安装的说明文件,最好先花一段时间预读一下这些说明文件。另外也可以在一些开源软件开发网站上找到一些有用的信息来帮助程序的编译与安装。对于软件的安装来说,应该先从串行版本入手,完成编译、安装、测试等并得到正确的运行结果,这样有助于对整个安装过程的了解。接下来再开始并行的安装。对于新手来说,一开始安装并行版本会有一些困难,不过多练习几次就会慢慢掌握了。为了取得最好的性能结果,在编译的过程中可能要混合使用不同的编译器与MPI库函数。一般需要通过不断选代才能找到最佳的组合,所以取得最佳性能的过程很麻烦,但是结果是值得的。当然也可以在一些高性能计算指导网站上找到一些使用的信息作为调优的指导。在开始优化的时候,可以直接按照网站上的指导信息进行操作,以尽快地熟悉代码编译等过程。

配置文档

  在应用优化的层面,针对公布的题目,需要选手充分发挥他们的基本技能并与应用相结合。像LINPACK这样的测试文件往往用来加深对并行计算系统的理解,而真实应用可能需要更加全面的考虑。事实上,了解与应用相适应的实际需求(如内存、CPU与加速卡的计算能力)要比硬件本身计算能力有多强大更重要,即使拥有最先进的硬件设备,如果应用在设备上跑不起来,那性能也就无从谈起了。另外需要记录下对配置文件修改的信息并在提交的方案中加以体现,以便与原始的文件进行比较。

下面是一些建议。 1. 使用建议的参数进行安装 2. 找出影响性能的关键参数。如线程数、运行的处理器核数,以及其他运行程序的参数。 3. 对问题更深入得了解 4. 了解输入文件类型和应用描述 5. 讨论与结果分析

代码优化

  由于代码优化需要同时具备跨学科的知识,因此对分别来自科学学科和计算机学科的学生来说,都是一个极大的挑战。代码优化也是在评分过程中占比例最大的部分,所以必须引起足够的重视,事先进行重点的辅导。队员之间的紧密配合,对于代码优化的顺利完成至关重要。代码优化可以从程序入手直接优化,也可以重写数值算法。重写数值算法一般需要花费更多的精力,所以在重写之前一定要慎重考虑,根据程序情况和比赛规则来评估是否值 得重写算法还是直接优化。首先需要分析整个代码,可以先跑一遍测试程序,产生一组正确的输出。想要取得好的可扩展性能,就需要很好地掌握性能分析方法、了解不同架构硬件性能上的区别等(如CPU与GPU+MIC之间的区别)。这样就可以从一小段代码中找出制约性能的瓶颈,然后去逐步解决更大的瓶颈,最终提高整个应用的性能。下一步就需要记录不同阶段优化之后的性能情况。需要将不同的优化信息(如核数、编译器选项、配置参数等)整理成文,并写到方案报告中。最好还能涵盖代码优化前后的区别和性能优化前后的区别等,以方便进行比较。对优化结果分析并提出合理的解释是很重要的一个指标,可以体现出参赛队伍的技术水平。

项目书任务分配

  在准备项目书的时候,最好能将不同的章节合理地分配给不同的队员,这样就能同时进行准备,大大提高工作效率。队长需要发挥两个作用:负责完成任务的队员、负责激励队友的领袖。应该与指导老师以及培训人员保持紧密的联系,以确保进度,确保提交的内容合理并且专业。根据不同任务强度的不同,所需要花费的时间从10小时到200小时不等。

总结

  提交一份优秀的竟赛方案离不开团队合作。对于参加ASC的学生来说,比赛开始阶段确实会感觉到很困难,所以就应该先制定一个合理的训练提纲。队员的积极性高低也是决定队伍强弱、提交方案好坏的一个重要因素。另一个重要因素就是队员对基础知识、重点知识掌握的好坏。本章介绍的主要是建议与导引,是为第一次参加竞赛的参赛者提供帮助,告诉他们如何去制订计划、组队等。将竞赛方案以合理科学的方式呈现出来是取得高分的重要因素。技术说明和技术发现需要特别标注并合理地解释,简言之,以下几个建议会对读者提供定的帮助。 1. 掌握扎实的基础知识 2. 团队合作 3. 合理安排时间 4. 自学能力 5. 与指导老师、专家的建设性沟通。

回到页面顶部