Hadoop课程实验和报告——MPI安装和测试实验报告
Hadoop课程实验和报告——MPI安装和测试实验报告 本文档主要介绍了MPI(Message Passing Interface)的安装和测试实验报告,涵盖了MPI环境的安装和设置、MPI环境验证测试、样例程序运行测试等几个方面。 一、MPI环境的安装与设置 在本实验中,我们使用的MPI版本是MPICH2,可以从Microsoft官方网站下载。下载完成后,我们需要安装MSMpiSetup.exe和msmpiskd.msi两个文件。MSMpiSetup.exe用于安装MPI运行环境,而msmpiskd.msi用于支持MPI程序的编写和编译。 在安装完成后,我们需要在VS2012中进行配置,主要是设置头文件和依赖文件。这里需要注意的是,附加依赖项如果不加以设置,则需要在代码中加入#pragma comment(lib, "msmpi.lib")以达到指定动态库的目的,避免链接错误。 二、MPI环境验证测试 在配置完成后,我们可以建立源文件,输入测试代码,以验证MPI环境是否正确安装和配置。测试代码如下: ```c #include <stdio.h> #include <mpi.h> int main(int argc, char argv){ int num, rk; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &num); MPI_Comm_rank(MPI_COMM_WORLD, &rk); printf("Hello world from Process %d of %d\n",rk,num); MPI_Finalize(); return 0; } ``` 三、样例程序运行测试 在MPI环境验证测试完成后,我们可以使用MPI进行并行计算。下面给出两个样例程序: Test1——启动多个线程,非零号线程均向零号线程发送消息,零号线程负责接收消息并打印输出。 ```c #include <stdio.h> #include <mpi.h> int main(int argc, char argv){ int myid,numprocs, source; MPI_Status status; char message[100]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); if (myid != 0) /* 其他进程,向 0 进程发送 HelloWorld 信息*/ { strcpy_s(message, "Hello World!"); MPI_Send(message,strlen(message)+1, MPI_CHAR, 0,99,MPI_COMM_WORLD); } else /* 0 进程负责从其他进程接受信息并输出*/ { for (source = 1; source < numprocs; source++){ MPI_Recv(message, 100, MPI_CHAR, source, 99,MPI_COMM_WORLD, &status); printf("I am process %d. I recv string '%s' from process %d.\n",myid,message,source); } } MPI_Finalize(); return 0; } ``` Test2——计算一个数列的各元素的开平方之和,假设开启了n个线程,其中0号线程负责数据的分发和结果的收集。 ```c #include <stdio.h> #include <mpi.h> int main(int argc, char argv){ int myid,numprocs, i; double sum, data[100]; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); if (myid == 0) /* 0 号线程负责数据的分发和结果的收集*/ { for (i = 0; i < 100; i++) { data[i] = i; } for (i = 1; i < numprocs; i++) { MPI_Send(data, 100, MPI_DOUBLE, i, 99,MPI_COMM_WORLD); } sum = 0.0; for (i = 1; i < numprocs; i++) { MPI_Recv(&sum, 1, MPI_DOUBLE, i, 99,MPI_COMM_WORLD, &status); printf("Sum of square root of data from process %d is %f\n",i,sum); } } else /* 非零号线程负责计算*/ { MPI_Recv(data, 100, MPI_DOUBLE, 0, 99,MPI_COMM_WORLD, &status); sum = 0.0; for (i = myid - 1; i < 100; i += numprocs - 1) { sum += sqrt(data[i]); } MPI_Send(&sum, 1, MPI_DOUBLE, 0, 99,MPI_COMM_WORLD); } MPI_Finalize(); return 0; } ``` 本实验报告详细介绍了MPI环境的安装和设置、MPI环境验证测试、样例程序运行测试,并提供了两个样例程序供读者参考。
剩余13页未读,继续阅读
- 粉丝: 8
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 聊天系统项目全套技术资料100%好用.zip
- putty,linux客户端工具
- 丹佛丝堆垛机变频器参数配置起升、运行、货叉
- redhat-lsb-core,安装磐维数据库,安装oracle数据库等常用的依赖包
- lsb-release,安装磐维数据库,安装oracle数据库等常用的依赖包
- glibc-devel,安装磐维数据库,安装oracle数据库等常用的依赖包
- redhat-lsb-submit-security,安装磐维数据库,安装oracle数据库等常用的依赖包
- 可以在mac下开发的微雪esp32触摸屏开发板的支持包
- redhat-lsb-core,安装磐维数据库,安装oracle数据库等常用的依赖包
- redhat-lsb-core,安装磐维数据库,安装oracle数据库等常用的依赖包