在Windows和Linux下如何配置MPI
MPI(英语:Message Passing Interface,缩写MPI)是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性。当下MPI仍为高性能计算的主要模型。
在WIndows下和Linux下配置MPI的方法有所不同,本文将详细讲述如何在这两个操作系统下安装MPI并配置和运行一个简单的C++实例。
Windows
以下实例为WIN11+Visual Studio 2022
下载安装MPICH,点击下载。这里下载的是微软官方的MPI工具,打开后有两个工具包,都要下载安装,前后顺序无要求。
安装。
点击.exe文件,建议安装到C盘默认路径;
点击.msi文件,建议安装到C盘默认路径;打开cmd命令,输入
set MSMPI
配置visual studio
第一步:
- 创建新项目或者打开您现有的项目。
- 打开属性页面,选择Debug或Release的X64模式。
第二步:
- VC++目录→ 包含目录 追加
你的路径\Microsoft SDKs\MPI\Include
。 - VC++目录→ 库目录 追加
你的路径\Microsoft SDKs\MPI\Lib\x64。
第三步:
- 设置附加包含目录
$(MSMPI_INC);$(MSMPI_INC)\x64。
- C/C++ → 预处理器 → 预处理定义 末尾追加
;MPICH_SKIP_MPICXX。
- C/C++ → 代码生成 → 运行库 选择
多线程调试/MTd
或者多线程/MT。
第四步:
链接器→输入→附加依赖项 追加
;msmpi.lib。
链接器→所有选项→附加库目录
$(MSMPI_LIB64)。
最后点击确定就OK了!
编译&运行测试
编译后运行程序,需要注意的是,MPI程序不能直接运行,否则只会识别一个处理器。
正确的指令是:
mpiexec.exe -n your_processor_number your_code_name
运行示范程序如下:
#include
#include int main(int argc, char** argv) { // 初始化 MPI 环境 MPI_Init(NULL, NULL); // 通过调用以下方法来得到所有可以工作的进程数量 int world_size; MPI_Comm_size(MPI_COMM_WORLD, &world_size); // 得到当前进程的秩 int world_rank; MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); // 得到当前进程的名字 char processor_name[MPI_MAX_PROCESSOR_NAME]; int name_len; MPI_Get_processor_name(processor_name, &name_len); // 打印一条带有当前进程名字,秩以及 // 整个 communicator 的大小的 hello world 消息。 printf("Hello world from processor %s, rank %d out of %d processors\n", processor_name, world_rank, world_size); // 释放 MPI 的一些资源 MPI_Finalize(); } 成功,Enjoy!
Linux
以下实例为Ubuntu20.04.4 LTS + gcc 4.7.5
MPICH是一种最重要的MPI实现它可以免费从http://www.unix.mcs.anl.gov/mpi/mpich取得 更为重要的是 MPICH是一个与MPI规范同步发展的版本 每当MPI推出新的版本就会有相应的MPICH的实现版本 目前MPICH的最新版本是MPICH-4.0.2,具体请参看MPICH官网:www.mpich.org
首先要知道的是 MPI 并不是一种编程语言,只是一种并行库,用来指示编译器自己的程序中哪些地方需要并行,哪些地方正常串行等等。目前常用的有 MPICH 和 OPENMPI 两个 MPI 库,这里选择 MPICH 来进行安装。
其次, MPICH 最好从源码编译,这样一来可以得到和自己机器相匹配的最优性能,二来会避免今后可能出现的一些错误(网上有人测试过直接安装 Debian 自带的 MPICH 包,结果安装过程没问题,编译程序,运行程序会出现一些错误,可能与机器相关吧)
下载
MPICH最新版本目前为 4.0.3, 下载地址为:https://www.mpich.org/downloads/
进入到 MPICH 的下载目录,然后解压文件:
tar zxvf mpich-4.0.3.tar.gz
然后切换至 MPICH 的源文件目录,运行configure
,并指定安装目录。
cd mpich-4.0.3
./configure --prefix=/opt/mpich4.0.3
- 编译与运行:
configure
完成之后,直接$ make
可编译 MPICH 源文件目录下的所有文件,接着# make install
就可以将 MPICH 安装在指定的安装目录。
注意:过程中如果报错“could not determine the size of a Fortran INTEGER“,如果无需再Fortran代码中使用MPI,则执行如下命令即可:
./configure --prefix=/opt/mpich4.0.3 --enable-fortran=none
- 环境变量设置
将下列语句添加到$HOME/.bashrc
# MPICH 4.0.3
export PATH=$PATH:/opt/mpich4.0.3/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/mpich4.0.3/lib