【无标题】CentOS安装Mpich

0 官方支持

在网上找了一堆安装方法,但都以失败告终,所以严格按照官方文档进行安装最后成功部署了,以本文做个笔记,以防日后踩坑

官方文档:https://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1-installguide.pdf
以及入门安装文档: https://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1-README.txt

安装参数:

OS: CentOS 7
MPI: MPICH 3.2

1 安装过程

1.1 编译器升级

首先需要安装编译器,推荐使用yum进行安装

sudo yum install make                           
sudo yum install gcc                                 
sudo yum isntall gcc-c++

1.2 下载安装包并解压

  1. 官网上找到要下载的安装包,我这边用的是mpich-3.2.1 (stable release)
wget http://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1.tar.gz
  1. 解压

    tar xzf mpich-3.2.1.tar.gz
  2. 创建安装目录
    官方建议在/home/[USERNAME 用户名]/(即 ~/目录)下创建 mpich-install目录,如下

    mkdir ~/mpich-install

1.3 配置安装

  1. 进入下载mpich解压的目录, 注意:以下操作均在下载目录下进行,并非上一步创建的安装路径

  2. 运行configure 命令进行安装

    ./configure --prefix=~/mpich-install 2>&1 | tee c.txt

    官方文档 中给出了出错的解决方法,报错建议当第一手资料参考

  3. make 生成

    make 2>&1 | tee m.txt

    这时间应该比较长

  4. install 安装

    make install 2>&1 | tee mi.txt

1.4 环境变量配置

到这一步基本上已经安装好了,但是会发现mpiccmpiexec等指令依旧无法使用,那是因为没有配置环境变量

  1. 打开~/.bashrc环境变量文件,加入下面变量

    export PATH=/home/[USERNAME]/mpich-install/bin:$PATH

    注意:这里的路径是安装路径

  2. 然后使用下面命令让环境变量生效

  3. 执行: find / -name .bashrc 找到 .bashrc文件

    source ~/.bashrc

2 测试

  1. 现在mpich已经部署好了,可以直接用了,官方给出了测试程序,在解压缩下的examples 目录

    cd ./examples
    mpiexec -n 8 ./cpi

    输出结果:

     

  2. 试例输出结果

  3. 自测程序
    编辑hello.c文件

#include <mpi.h>
#include <stdio.h>
#include <math.h>

int main (int argc, char **argv)
{
  int myid, numprocs;
  int namelen;
  char processor_name[MPI_MAX_PROCESSOR_NAME];

  MPI_Init (&argc, &argv);
  MPI_Comm_rank (MPI_COMM_WORLD, &myid);
  MPI_Comm_size (MPI_COMM_WORLD, &numprocs);
  MPI_Get_processor_name (processor_name, &namelen);
  fprintf (stderr, "Hello World! Process %d of %d on %s\n", myid, numprocs, processor_name);
  MPI_Finalize ();
  return 0;
}

使用以下命令运行

mpicc -o hello hello.c        # 编译 如果`c++`使用`mpicxx`
mpirun -np 4 ./hello

 


版权声明:本文为sinat_22510827原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。