《并行程序设计》实验指导书之四_第1页
《并行程序设计》实验指导书之四_第2页
《并行程序设计》实验指导书之四_第3页
《并行程序设计》实验指导书之四_第4页
《并行程序设计》实验指导书之四_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《并行程序设计》实验指导书之四实验4.1构建基于WINDOWS平台的MPI并行集群环境实验目的1.掌握面向IntelMPILibrary建立Windows并行集群环境的方法;2.掌握VisualStudio*.NET*集成开发环境开发MPI程序配置方法;3.掌握MPI程序设计的基本编写、编译与运行方法实验要求1.熟练掌握C++语言;。2、掌握VisualStudio*.NET*集成开发环境的使用;3、掌握MPI程序设计的基本概念。实验内容实验步骤:一、配置电脑环境。1.基本网络设置:关闭杀毒软件、计算机防火墙,将小组里所有计算机连接到同一个交换机上,查看每台计算机ip,使用ping命令测试,保证互相之间能够ping通。2.网络连接设置:由于需要在cluster上运行同一个程序,为了实现相互之间能连接成功,要在每台电脑上登录同一个管理员帐号。先到计算机管理下的本地用户和组里创建一个账户haomeng,设置密码为haomeng,(默认账户也可以,需要设置密码)接下来将其设置成管理员帐号:进入控制面板\用户帐户和家庭安全\用户帐户\管理帐户\更改帐户,将账户类型修改为管理员,让这个账户进入登录状态(并不是一定要在这个账户下进行实验,只需让其进入登录状态)。要注意需要保证小组内每台电脑有相同的管理员账户和密码。二、单机上编译运行简单的test程序1.打开test工程2.在库中添加C:\ProgramFiles\Intel\MPI\3.1\ia32\lib;3.将C:\ProgramFiles\Intel\MPI\3.1\ia32\lib里面的.dll文件添加到C:\WINDOWS\system32中4.使用intel编译器编译,生成.exe文件5.执行smpd–installsmpd-starthydra_service–installhydra_service–startmpiexec–register设置电脑账户和密码。6.使用mpiexec.exe-n<#ofprocesses>test.exe执行命令,执行成功的话能看到相应的HelloWorld输出信息。//mpiexec.exe-n1test.exe7.运行mpi程序(共有窗口和命令行两种方式,但本次实验主要使用命令行方式运行)。Intel(R)MPI提供一个命令行工具程序mpiexec.exe,该程序帮助用户以非常灵活的方式支持MPI应用。本节对这个工具的使用进行简要说明。mpiexec的命令行常见格式(详细格式可以参考mpiexec-?返回的帮助,下面格式的尖括号为解释):格式1:mpiexec-n<#ofprocesses>myprog.exe格式2:mpiexec-host<hostname>myprog.exe格式3:mpiexec-machinefile<machinefile>myprog.exe用-n设置本地机上的进程数,myprog.exe指可执行文件(可包含路径),若程序还有别的命令行参数,根据需要添加到该命令行后面。用-host设置程序执行的主机,如以下命令将会运行可执行文件a.exe在主机lab01上:mpiexec-hostlab01a一个machinefile是一个包含集群中所有主机名,各主机运行进程数等信息的列表,空行和以“#”开头的行都将被忽略。通过重复主机名将会在该主机上增加一个进程,或者直接按格式:<hostname>:<numberofprocesses>.描述每个主机所包含的进程数。如以下file1和file2是等效的。file1:file2:host1host1:2host1host2:2host2host3host2host3注:上面运行命令作为参考。具体在运行的时候建议通过以下两种方式运行:mpiexec-hosts2LAB012LAB023myporg.exe其中,hosts后的参数为主机数,后面必须跟着特定数目的主机名称(像这里2个主机,LAB01和LAB02)。主机后面的可选参数为该主机上运行的进程数目。主机名称可以在cmd中使用hostname命令获得。要注意,多机运行时每台机器上的.exe文件必须放到相同的目录下。8.编译并运行test程序,成功后记录结果并进行检查:mpiexec-n<#ofprocesses>d:\test.exe9.除了使用wmpiexec窗口程序运行mpi程序,还可以使用BuildEnvironmentforIntel(R)ClusterToolkit3.1命令行运行。要求尝试多种命令形式,如:mpiexec-hosts4LAB012LAB022LAB032LAB043d:\test.exe//mpiexec-hosts2192.168.xx.xx2192.168.xx.xx2d:\test.exe等等。实验4.2N体问题MPI并行程序剖析与性能分析实验目的1.掌握MPI程序设计的基本编写、编译与运行方法;2.掌握Window群机环境下N体问题的并行程序设计方法;3.掌握利用加速比、运行时间、效率等测度分析并行程序性能实验要求1.熟练掌握C++语言;。2、掌握VisualStudio*.NET*集成开发环境的使用;3、掌握MPI程序设计的基本概念。实验原理N体问题是研究物体之间相互作用力产生的效果的问题(例如天体间通过引力相互吸引)。这个问题的目标是确定太空中通过引力相互作用的天体的位置和运动,涉及到的物理知识是牛顿定律。质量为ma和mb的两个物体相互间的引力由下式给出:其中G是引力常数,r是物体间的距离。每个物体都会依据这个定律受其它物体的影响,所有力都会被累加(要考虑每个力的方向)。在受力的情况下,一个物体将根据牛顿第二定律加速:其中m是物体质量,F是物体所受的力,a是得到的加速度。因此所有物体都会由于这些力的作用移动到新的位置并获得新的速度。要得到精确的数值描述,需要使用微分方程。然而,对于超过三个物体的系统的N体问题还没有确切的近似解。使用计算机仿真时,我们使用特定时间的值,t0,t1,t2等等,时间间隔取得尽可能短以获得最精确的解。不妨设时间间隔为△t,则对于一个质量为m的特定物体,其所受力为:新的速度为:其中vt+1为物体在时刻t+1的速度,vt为物体在时刻t的速度。如果物体以速度v移动了△t时间,则位置变化为:其中xt为物体在时刻t的位置。一旦物体移动到新的位置,所受的力就会发生变化,计算过程也要重复。在一个时间间隔△t内的速度实际上并不是一个准确的常数,因此得到的仅是一个近似解。要注意以上所涉及的力F,位置x和速度v都是向量。在进行计算时必须被分解为三个方向。N体问题的串行算法研究:总的引力N体算法可以由以下算法描述:for(t=0;t<tmax;t++){/*foreachtimeperiod*/for(i=0;i<n;i++){/*foreachbody*/F=Force_routine(i);/*computeforceonithbody*/v[i]new=v[i]+F*dt/m;/*computenewvelocityand*/x[i]new=x[i]+v[i]new*dt;/*newposition*/}for(i=0;i<n;i++){/*foreachbody*/x[i]=x[i]new;/*updatevelocityandposition*/v[i]=v[i]new;}}外层的for循环计算每一个时间步,在每个时间步内n个物体更新了速度和位置。内层的两个for循环计算每一个物体所受到的力及其新的位置和速度。内层第一个for循环内的函数Force_routine(i)计算其它所有物体作用于第i个物体的引力之和,它的时间复杂性是O(n)。因此在这个算法中n个物体更新一次时间复杂性是O(n2)。N体问题的并行实现:这个算法使用SPMD(单程序多数据流)计算模型,每个进程将执行相同的代码。假设有m个计算资源,每个资源上启动一个进程,表示进程的标号是0、1、2、……m-1,每个进程分配的物体数是n0、n1、n2、……n(m-1),其中n0+n1+n2+……+n(m-1)=n。每个进程主要有两个数组localparticles、allparticles、sendbuf、recvbuf,其中localparticles用于保存分配给本进程的物体的信息;allparticles用于保存应用程序中所有物体的信息;sendbuf用于保存发送到下一个进程的物体;recv用于保存从前一个进程接受的物体。算法描述获取分配给本进程的物体的初始信息localparticles获取应用程序中所有物体的信息allparticlesfor(每一个时间步){计算所有物体对分配给本进程的物体的作用力并据此更新localparticles的本进程的物体的信息将本进程信息localparticles保存到发送缓冲区sendbuffor(i=0;i<m-1;i++)//对每个进程{sendsendbufto本进程的下一个进程;用sendbuf中的信息更新allparticles中的部分信息;recvrecvbuffrom本进程的前一个进程;}使所有进程在此处同步}算法中外层for循环计算每一个时间步,在每个时间步内所有参与的进程并行执行,所有进程都结束时所有n个物体速度和位置都被更新了。在外层for的循环体内,首先计算所有物体对本地物体的作用力,据此更新关于本地物体的信息;内层for循环使得每个进程都获得了所有物体的更新后的信息,实现了进程之间的合作,为下一次迭代做好准备;最后通过显示设置栅栏使所有进程同步。加速比和效率加速比和效率是最传统的并行算法评价标准,它们体现了在并行机上运用并行算法求解实际问题所能获得的好处。并行算法的加速比定义为:Sp=Ti/TpTi表示最优串行算法在单处理机上的运行时间,Tp表示p台处理机的计算时间。并行算法的效率定义为:Ep=Sp/PP为处理机台数。如果按照某种条件,如保持每台处理机的计算规模,并行算法加速比与处理机的台数成正比,则称该并行算法在该条件下,在该并行机上具有线性加速比实验内容1.在VS中打开nbody工程,配置好MPI运行环境,编译并运行项目;2.进行如下实验并记录数据(实验报告中给出数据并绘图)实验一:单机上,数据规模为4000时,随每机进程数变化的运行时间;进程数12345时间1.3485941.0802150.9986610.6720420.815603实验二:相同数据规模为4000,随每机进程数变化的运行时间每机进程数单机双机三机四机11.3485940.6813210.6338900.44366221.0802150.3773660.3066290.23207830.9986610.4618960.3972140.30591640.6720420.5015730.4606100.468220实验三:每机1个进程,随数据规模变化的n-body并行程序运行时间。粒子数n单机双机三机四机100.0000180.0002140.0022470.003273500.0003230.0043210.0049630.0007011000.0008770.0023470.0024750.0025475000.0213020.0147560.0132460.00814210000.0836580.0412250.0411720.03241520000.3325860.1954210.1475230.11472330000.7541070.4014730.3653110.22714240001.3314600.7132880.6210470.4153673.根据记录的数据计算加速比与效率(给出数据并绘图)实验一:单机上,粒子数为4000,随进程数变化加速比(Sp)统计进程数2345678910加速比1.251.352.011.652.121.962.202.312.25实验二:粒子数为4000,随每机进程数变化的加速比每机进程数双机三机四机422.863.524.6532.162.513.2641.341.461.44实验三:每机1个进程,随数据规模变化的n-body并行程序加速比和效率n-body并行算法的加速比(Sp)统计表粒子数n双机三机四机100.0841120.0080100.005499500.0747510.0650810.4607701000.3736680.3543430.3443265001.4436161.6081832.61631010002.0293022.0319142.58084220001.7018942.2544682.89903530001.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论