AE3-422高性能计算课程作业截止日期:2019年3月20日-17:00说明完成此作业时请注意以下事项:在开始设计和实现代码之前,请仔细阅读所有任务并提前计划。您可以使用所提供的Linux环境中可用的任何工具和库。您提交的代码必须在提供的Linux环境中正确编译和运行。定期将您的代码备份到单独的计算机系统上;不允许因人为或计算机错误导致的数据丢失。1IntroductionThe目标本课程的目的是编写并行数字代码,使用有限差分法找到二维广义Burgers方程的解。Burgers的强形式'方程由下式给出:t+((a+bu)·)u=c?2u,(1)其中u=(u,v)和a=(ax,ay),b和c是常数。这取决于初始和边界条件,u(x,y,0)=f(x,y),on(2)u(x,y,t)=g(x,y),on(3)式1可以展开为ast+(ax+bu)x+(ay+bv)y=c(4)Burgers方程是非线性波浪运动与线性扩散相结合的结果,是分析非线性平流扩散联合效应的最简单模型。已发现该方程描述了各种现象,例如湍流和通过在粘性流体中传播的冲击波流动的近似理论。12有限差分法离散化为了求解方程1,空间和时间需要离散化。对于此作业,我们将在离散化时间导数时使用显式(前向)时间积分方案。显式积分方案:(5)在此作业中,定义域定义为:={(x,y):L/2≤x≤L/2,L/2≤y≤L/2}(6)t=0时的初始条件为:(8)边界条件为:g(x,y,t)=0,on,t>0(9)3测试用例你的代码应该是tested使用以下四个测试用例:一个不稳定的扩散问题(a=0,b=0,c=1);x(ax=1,ay=0,b=0,c=0)中的线性平流问题;y(ax=0,ay=1,b=0,c=0)中的线性平流问题;一个广义的Burgers问题(ax=1.0,ay=0.5,b=1.0,c=0.02)。对所有测试用例使用L=10的域大小。在下一页继续...2任务本课程作业的目标是编写一个高性能的并行C++代码,它将解决上述的generalisedBurgers方程。提供了一个模板代码来帮助您入门并帮助您构建代码。下载此代码并对其进行编辑以完成以下任务。扩展提供的模板代码以求解广义Burgers方程,最初是串行的:(a)实现Model.h中声明的模型类,根据需要解析和存储所有参数。用户提供的参数应从命令行读取,并在适当的地方进行验证我吃了。[5%](b)编写一个名为Burgers的新类,它具有公共成员函数,其中:[20%]在时间t=0设置初始速度场;时间对速度场从t=0到t=T(最终时间)进行积分;将速度场写入文件。计算由(c)给出的速度场的能量完成提供的主要功能以使用类并使用前三个测试用例进行验证。[5%]创建一个Makefile来构建和运行你的C++代码。[5%](a)创建一个目标编译来编译你的代码。(b)创建目标diff、advx、advy和burg来执行你为四个测试用例编译的代码。(c)更新你的makefile以添加一个干净的目标这会删除编译期间生成的文件。(d)在您的makefile中定义适当的默认规则和所有目标规则。使用两个进程将您的C++程序与MPI并行化。[15%](a)将域分成两半以并行求解等式1。(b)使用f验证您的并行代码前三个测试用例。(c)更新您的makefile并添加目标diffp、advxp、advyp和burgp,以使用每个测试用例的参数在两个进程中并行运行代码。使用更大的数字将C++程序与MPI并行化进程数P=Px×Py,其中Px≥1和Py≥1由用户在命令行上提供。划分域,使x和y方向分别分为Px和Py部分。验证您的代码。[30%]写一份简短的报告(最多3页),其中包括[15%](a)串行和并行验证C++代码的定量证据。(b)第四个测试用例的解决方案图,在大小为10×10的网格上,每个方向有2001个网格点,最终时间为T=1,时间步长为4000。(c)对代码性能的分析以及您在其开发过程中执行的任何优化。演示使用良好的编程习惯[5%](a)生成你的日志使用以下命令进行Git版本控制:gitlog--name-status>repository.log(b)适当地记录您的源代码。3提交和评估提交作业时,请确保包括以下内容:编译所需的所有文件和运行您的C++代码:–执行所有任务的单个C++程序的源文件。即编译和运行代码所需的所有.cpp和.h文件。–用于编译和运行代码的Makefile,包括任务中指定的所有目标。您的三页报告(仅限PDF格式)。任务6中生成的git日志(repository.log)。这些文件应以单个tar.gz存档文件的形式提交给BlackboardLearn。要生成你的tar.gzarchive,将所有要提交的文件放在一个目录中(例如ae3-422-assessment)并从它上面的目录运行以下命令:tar-cvzfsubmission.tar.gzae3-422-assessmentYoumaymakeunlimited提交和最后一个子截止日期前的任务将被评估。任务结束比赛!(完全可选)最大化代码的效率和执行速度对于高性能计算应用程序至关重要。代码设计的许多方面都会影响性能,例如操作顺序、内存布局和循环顺序。作为一项额外的挑战,您可以选择让您的代码包含在AE3-422性能挑战中!我们将在大型并行计算机系统上以串行和并行方式运行您的代码,并测量其性能。注意:提交必须成功解决第四个验证案例,并且您需要成功完成任务4才能参加并行竞赛。选择参加比赛完全是可选的,参加(或不参加)不会影响您对该模块的分数。在您的作业被标记和反馈h后,将对参加比赛的参赛作品进行评估和排名asbeen返回。WX:代码帮助
