MPI综合实验答题.docx
文本预览下载声明
MPI综合实验报告
目前三次MPI实验已经结束,结合之前所写的实验报告,对总体的实验内容做一个总结。
参考资料:
MPI简介
多线程是一种便捷的模型,其中每个线程都可以访问其它线程的存储空间。因此,这种模型只能在共享存储系统之间移植。一般来讲,并行机不一定在各处理器之间共享存储,当面向非共享存储系统开发并行程序时,程序的各部分之间通过来回传递消息的方式通信。要使得消息传递方式可移植,就需要采用标准的消息传递库。这就促成的消息传递接口(Message Passing Interface, MPI)的面世,MPI是一种被广泛采用的消息传递标准[1]。
与OpenMP并行程序不同,MPI是一种基于消息传递的并行编程技术。消息传递接口是一种编程接口标准,而不是一种具体的编程语言。简而言之,MPI标准定义了一组具有可移植性的编程接口。各个厂商或组织遵循这些标准实现自己的MPI软件包,典型的实现包括开放源代码的MPICH、LAM MPI以及不开放源代码的Intel MPI。由于MPI提供了统一的编程接口,程序员只需要设计好并行算法,使用相应的MPI库就可以实现基于消息传递的并行计算。MPI支持多种操作系统,包括大多数的类UNIX和Windows系统。
三次实验总结
第一次实验:
实验要求:配置好MPI运行的基本环境,测试MPI的基本通信程序。
程序:
#include stdafx.h#include mpi.hvoid main( void ){ MPI_Status status; char string[]=xxxxx; int myid; MPI_Init(NULL,NULL); MPI_Comm_rank(MPI_COMM_WORLD,myid); if(myid==2) MPI_Send(HELLO,5,MPI_CHAR,7,1234,MPI_COMM_WORLD); if(myid==7){ MPI_Recv(string,5,MPI_CHAR,2,MPI_ANY_TAG,MPI_COMM_WORLD,status); printf(Got %s from P%d,tag %d\n,string,status,status.MPI_SOURCE,status.MPI_TAG); } MPI_Finalize();}
运行环境配置过程:(这个是在根据网上的环境配置教程做的)
安装软件MPICH2,本次操作安装在C:\Program Files\MPICH2文件夹中。
打开安装好的MPICH2目录,打开bin文件夹中的wmpiregister.exe文件,进行注册。
填入本机的用户名和密码。
建立一个控制台应用程序空文档,MY MPI,
输入程序
4、添加库和包含文件
打开Tool-Options对话框
选择项目和解决方案下的VC++目录一栏,如下图所示:
分别添加包含文件C:\Program Files\MPICH2\include
和库文件C:\Program Files\MPICH2\lib
取消预编译头
打开Project-Property,设置框如下图所示
展开C/C++项,选择与编译头,在创建/使用预编译头中选择 :不使用预编译头
6、打开Project-Property,设置框如下图所示
将配置属性中的常规项中的字符集设置成未设置
展开连接器中输入项,在附件依赖项中添加mpi.lib
自定义多线程运行
打开MPICH2安装目录显得mpiexec.exe
装入运行产生的.exe文件并选择线程数,运行结果如下图所示
第二次实验
实验要求:MPI实验第二部分
1. 了解计算粒度、问题规模(计算负载)、并行程度概念;
2. 测试基于MPI的Pi并行计算程序;
3. 完成实验报告(MPI程序代码、运行结果截屏、实验分析总结)
在这次的实验过程中,我们的程序是通过数值方法计算 的值来观察运行时间。
程序:
#include stdafx.h
#include stdio.h
#include mpi.h
static long num_steps = 100000;
void main(int argc, char* argv[])
{
int i_start, i_end, i, myid, numprocs;
double pi, mypi, x, step, sum = 0.0;
double start, end;
MPI_Init(argc, argv);
MPI_Comm_size(MPI_COMM_WORLD, numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, m
显示全部