在Windows和Linux下如何配置MPI


在Windows和Linux下如何配置MPI

MPI(英语:Message Passing Interface,缩写MPI)是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性。当下MPI仍为高性能计算的主要模型

在WIndows下和Linux下配置MPI的方法有所不同,本文将详细讲述如何在这两个操作系统下安装MPI并配置和运行一个简单的C++实例。

Windows

以下实例为WIN11+Visual Studio 2022

  1. 下载安装MPICH,点击下载。这里下载的是微软官方的MPI工具,打开后有两个工具包,都要下载安装,前后顺序无要求。

  2. 安装。

    点击.exe文件,建议安装到C盘默认路径;
    点击.msi文件,建议安装到C盘默认路径;

    打开cmd命令,输入set MSMPI

  3. 配置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了!

  4. 编译&运行测试

    编译后运行程序,需要注意的是,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 包,结果安装过程没问题,编译程序,运行程序会出现一些错误,可能与机器相关吧)

  1. 下载

    ​ MPICH最新版本目前为 4.0.3, 下载地址为:https://www.mpich.org/downloads/

  2. 进入到 MPICH 的下载目录,然后解压文件:

tar zxvf mpich-4.0.3.tar.gz

然后切换至 MPICH 的源文件目录,运行configure,并指定安装目录。

cd mpich-4.0.3
./configure --prefix=/opt/mpich4.0.3
  1. 编译与运行: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
  1. 环境变量设置

将下列语句添加到$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

文章作者: Luo Xiao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Luo Xiao !
  目录