在linux虚拟机中配置多节点MPI.docx

上传人:b****2 文档编号:3391615 上传时间:2023-05-05 格式:DOCX 页数:15 大小:1.01MB
下载 相关 举报
在linux虚拟机中配置多节点MPI.docx_第1页
第1页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第2页
第2页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第3页
第3页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第4页
第4页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第5页
第5页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第6页
第6页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第7页
第7页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第8页
第8页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第9页
第9页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第10页
第10页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第11页
第11页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第12页
第12页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第13页
第13页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第14页
第14页 / 共15页
在linux虚拟机中配置多节点MPI.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

在linux虚拟机中配置多节点MPI.docx

《在linux虚拟机中配置多节点MPI.docx》由会员分享,可在线阅读,更多相关《在linux虚拟机中配置多节点MPI.docx(15页珍藏版)》请在冰点文库上搜索。

在linux虚拟机中配置多节点MPI.docx

在linux虚拟机中配置多节点MPI

计算机科学与技术系

 

实验报告

 

课程名称:

并行计算及编程

实验项目:

在linux虚拟机中配置多节点MPI

专业班级:

姓名:

学号:

实验时间:

批阅时间:

指导教师:

成绩:

兰州交通大学《并行计算及编程》课程实验报告

实验名称:

在linux虚拟机中配置多节点MPI

一、实验目的

在linux虚拟机中配置多节点MPI,完成以下任务(2选1):

1、矩阵-向量乘法;

2、数据积分法求圆周率π

二、实验内容

(1)分别用串行程序和MPI并行程序实现

(2)比较并行和串行程序的执行时间

(3)计算并行程序相对于串行程序的加速比

三、实验环境

Windows10,CentOS

四、实验过程(包括程序设计说明,实验步骤,经调试后正确的源程序,程序运行结果)

1 下载安装VMwareWorkstation

图1下载安装VMwareWorkstation

2 下载并安装Linux系统,这里我用的是CentOS,我开了两台虚拟机,centos6和centos664。

保证台虚拟机都可以上网,且可以ping通。

我的两个虚拟机的网络地址分别是192.168.20.128和192.168.20.129

图2保证都可上网

图3第一台的网络地址

图4第二台的网络地址

图5可以ping通

3 两个虚拟机中添加同名用户在不同节点中需要有同名的用户以方便SSH连接node1和node2中以root用户执行下列命令

图6修改主机名。

node1和node2

图7分别再两个虚拟机中添加用户mpiuser

图8记住要设置密码才可使用

图9设置成功

图10此时在第一台虚拟机中ping第二台依旧可以ping通

4 保障两台虚拟机是互通的

图11dns域名

5 实现免密码SSH登陆,当前节点为node1,用户为mpiuser,工作目录为~家目录

图12当前节点为node1,用户为mpiuser,工作目录为~

图13建立本身的信任连接

图14

图15设置node2生成.ssh文件夹

图16scpnode1:

~/.ssh/*./拷贝node1上的.ssh文件夹到node2

图17设置node2拷贝node1上的hosts文件到node2

图18sshnodesshnode1

遇到问题:

node2的ssh连接我好像是还没有设置好,依旧需要密码连接才可以。

6 配置MPI运行环境

官方网站下载其中的mpich-3.2.tar.gz

此处遇到问题,在下载时:

图19

遇到问题:

该问题在嵌入式作业中同样出现过,但我在改时,遇到了gedit的命令问题,实在是解决不了。

我用共享内存的方式在windows中下载好,放在共享文件中。

最开始使用的是rar文件,但Linux中需要安装RARforLinux,我就直接在共享文件中解压了。

图20共享文件

然后安装时又发现又各种问题,之后我又再次在官网下载了(之前一直中途失败,具体原因不明)

图21官网下载好

7 解压并进入目录

图22解压tarxvfmpich-3.2.tar.gz

图23cdmpich-3.3.2./configure–prefix=/usr/local/mpich

遇到问题:

图23运行出错

图24

解决问题:

图25解决问题:

将图23命令改为此命令

图26解决问题:

成功!

configurationcompleted

遇到问题:

在node2时用了图25的命令,但显示其他错误:

图27少了C++的编译器

解决问题:

图28下载GCC编译器

但依旧不可以,所以之后我全部一次安装好C的编译器

图29解决问题

图30解决问题

之后node2的安装成功!

图31解决问题

图32make编译

图33makeinstall安装

8 设置环境变量

图34设置环境变量~/.bashrc

图35更新环境变量

至此MPI安装完成!

9 mpi多节点配置

图36新建一个配置文件

图37修改其中内容为

10 用示例程序进行测试

单节点测试:

遇到问题:

图38出现问题

遇到问题:

之后我就去改正环境变量,然后改错了!

我的所有超级用户下的linux命令都不可以用了。

所以要返回修改在超级用户下,用全路径的方式去修改!

/usr/bin/gedit~/.bashrc

图39重新修改环境变量,之后在用source~./bashrc来更新

图40mpicc命令成功

图41单节点测试成功

-np表示numberofprocessors,即进程数,N自己取值

图42都在节点1上

图43都在节点2上

多节点测试:

图44多节点测试

如上,在两个节点上分别运行了两个进程,配置过程结束。

实验结果:

(二)数据积分法求圆周率π

1.源程序(串行):

#include

#include

#include

staticlongnum_steps=10000000;//定义所分的块数

intmain(intargc,char**argv){

inti;

doublex,sum=0.0,pi;

clock_tstart_time,end_time;

start_time=clock();

doublestep=1.0/(double)num_steps;

for(i=0;i

{

x=(i+0.5)*step;

sum=sum+4.0/(1.0+x*x);}

pi=step*sum;

end_time=clock();

printf("Piis%.16f\n",pi);

printf("Walltime=%e\n",end_time-start_time);

return0;

}

结果:

图45

2.源程序(并行):

#include

#include

#include

staticlongnum_steps=10000000;//定义所分的块数

/*计算f(x)=4.0/(1+x*x)*/

doublef(doublea){

return(4.0/(1.0+a*a));}

voidmain(intargc,char**argv){

intn,myid,np,i;/*定义变量*/

doublemypi=0,pi,x,s_time,e_time;

MPI_Init(&argc,&argv);/*初始化MPI*/

MPI_Comm_size(MPI_COMM_WORLD,&np);

MPI_Comm_rank(MPI_COMM_WORLD,&myid);

if(myid==0){/*进程0获得划分矩阵的个数n*/

n=num_steps;

s_time=MPI_Wtime();

}

MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);/*进程0将n进行广播*/

for(i=myid+1;i<=n;i+=np){

x=((double)i+0.5)/(double)n;

mypi+=f(x)/(double)n;}

MPI_Reduce(&mypi,&pi,1,MPI_DOUBLE,/*进程0归约求和*/MPI_SUM,0,MPI_COMM_WORLD);

if(myid==0){

printf("PIis%.16f\n",pi);/*打印结果*/

printf("Walltime=%f\n",MPI_Wtime()-s_time);}

MPI_Finalize();

}

结果:

图46

通过串行和并行程序运行结果可得:

加速比=15.262/3.681995≈4.145

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2