并行计算_实验三_简单的MPI并行程序及性能分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深圳大学

实验报告

课程名称:并行计算

实验名称:简单的MPI并行程序及性能分析姓名:

学号:

班级:

实验日期:2011年11月18日、12月2日

一. 实验目的

1) 用MPI 实现简单的求π的程序 2) 对MPI 并行程序进行简单的性能

二. 实验环境

1) 硬件环境:32核CPU 、32G 内存计算机;

2) 软件环境:Linux 、Win2003、GCC 、MPICH 、VS2008;

4) Windows 登录方式:通过远程桌面连接192.168.150.197,用户名和初始密码都是自己的学号,在通过wmpiexec.exe 运行MPI 程序前,先需运行wmpiregister.exe 注册自己的账号(即自己的学号)。

三. 实验内容

1. 用MPI 实现求π的并行程序,写出代码。提示:π≈∑

-=++⨯10

2

)

5.0(11

4n i n

i n ,计算执行时间

用MPI_Wtime()函数。串行程序如下:

#include #include void main() { clock_t t=0; int i,num_steps; scanf("%d",&num_steps);

double x,pi,sum=0,step=1.0/num_steps; t-=clock();

for (i=0;i

}

pi=step*sum; t+=clock();

printf("PI is %f\nexecution time is %f\n",pi,t/1000.0);

}

答:

在windows 下使用Microsofe Visual Studio 编程,根据串行程序更改的并行程序,源代

码如下:

#include"mpi.h"

#include

#include

void main(int argc,char ** argv )

{

int i,rank,size,n=1000000000;

double x,pi,sum=0,step=1.0/n;

clock_t t=0;

MPI_Init(&argc,&argv);

MPI_Comm_rank(MPI_COMM_WORLD,&rank);

MPI_Comm_size(MPI_COMM_WORLD,&size);

t-=clock();

for(i=rank;i

{

x=(i+0.5)*step;

sum+=4/(1+x*x);

}

MPI_Reduce(&sum,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);

if(rank==0)

{

pi=step*pi;

t+=clock();

printf("PI is %.10f, run time is %10f\n",pi,t/1000.0);

}

MPI_Finalize();

}

2.分析上述程序的执行时间、加速比和效率:num_steps固定为109,节点数分别取1、2、4、8、16和32时,为减少误差,每项实验进行5次,取平均值作为实验结果。

答:串行执行时程序的执行时间为:T = 7.391s

加速比=顺序执行时间/并行执行时间

效率=加速比/节点数

表1 不同节点数下程序的执行时间(秒)

第1次 7.39 3.703 1.844 0.922 0.453 0.469 第2次 7.406 3.687 1.844 0.922 0.453 0.469 第3次 7.39 3.687 1.844 0.937 0.469 0.485 第4次 7.39 3.703

1.844 0.922 0.468 0.469 第5次 7.39 3.703 1.844 0.922 0.453 0.469 平均值

7.3932

3.6966

1.844

0.925

0.4592

0.4722

图1 不同节点数下程序的执行时间

图2 不同节点数下程序的加速比

图3 不同节点数下程序的效率

在问题规模不变的情况下,更改节点数后进行以下分析:

执行时间的分析:

随着节点数的增加,程序的执行时间减少,大概可以从结果中得出,随着节点书的增加一倍,执行时间减少一半,但是当节点数太多的时候,接近处理器个数,执行时间不会减少,因为需要等待所有处理器的完成,而所有的处理器不一定当前都空闲,所以需要等待时间。加速比的分析:

随着节点数的增加,程序的加速比增加,大概可以从结果中得出,随着节点书的增加一倍,加速相应的增加接近一倍。

效率的分析:

随着节点数的增加,不算增加到接近处理器个数,程序的效率没有明显变化,因为不同节点的计算都是独立的,最后只是通过消息的方式进行传递数值,代价较小,所以效率变化小。

3.分析上述程序的问题规模与效率的关系:固定节点数为4,让num_steps从105到1010之间变化。(为了减少时间,每项实验可只执行1次)

答:

由于在并行执行时,问题规模为105和106的运行时间太接近于0,这样根本测不出来,故以下分析只分析107到1010。

图4 不同问题规模下程序的效率

相关文档
最新文档