安装MPICH并运行第一行代码

目录

安装MPICH

试运行代码

进阶Python版


 

安装MPICH

1、官网-下载地址:

MPICH | High-Performance Portable MPI

 2、放入Linux中,解压:

tar -xvf mpich-4.0.2.tar.gz

3、配置安装:

cd mpich-4.0.2/
./configure

如果没有 Fortran 编译器,则可以避免构建 MPI Fortran 库:

./configure --disable-fortran

(此处配置等待较久...)

如果报错说“Aborting because C++ compiler does not work.”,就安装下编译器:

sudo apt install g++

4、编译安装:

make; sudo make install

(此处编译等待更久...) 

如果报错说无make指令,就安装下cmake:

sudo apt install cmake

5、验证安装是否完成:

mpiexec --version

 安装完成。

试运行代码

1、待运行的源文件demo.c:

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

int main(int argc, char** argv) {
  // 初始化MPI环境。
  // MPI Init的两个参数目前没有被MPI实现使用,但是为了以防将来实现可能需要这些参数。
  MPI_Init(NULL, NULL);

  // 通过调用以下方法来得到所有可以工作的进程数量
  int world_size;
  MPI_Comm_size(MPI_COMM_WORLD, &world_size);

  // 得到当前进程的rank
  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);

  // 打印一条带有当前进程名字,rank以及整个 communicator 的大小的 hello world 消息。
  printf("Hello world from processor %s, rank %d out of %d processors\n",
         processor_name, world_rank, world_size);

  // 释放 MPI 的一些资源. 在此之后不能再进行MPI调用
  MPI_Finalize();
}

2、再编写makefile:

EXECS=demo
MPICC?=mpicc

all: ${EXECS}

demo: demo.c
	${MPICC} -o demo demo.c

clean:
	rm ${EXECS}

3、然后编译:

make

 注意:如果想要在好几个节点的集群上面跑这个 MPI 程序的话,就需要配置一个 host 文件(不是 /etc/hosts)。如果在笔记本或者单机上运行的话,可以跳过下面这一段。

需要配置的 host 文件会包含你想要运行的所有节点的名称。为了运行方便,你需要确认一下所有这些节点之间能通过 SSH 通信,并且需要根据[设置认证文件这个教程](http://www.eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html)配置不需要密码的 SSH 访问。 我的 host 文件看起来像这样:

host_file:

cetus1:2
cetus2:2
cetus3:2
cetus4:2

(冒号后面的数字表示每个处理器有的核数,也可以不加“冒号和后面的数字”)

应该设置一个叫 MPI_HOSTS 的环境变量,把它指向 host 文件所在的位置。如果单机跑的话就不用设置这个环境变量。

export MPIRUN=/home/kendall/bin/mpirun
export MPI_HOSTS=host_file

4、然后运行:

单机下:

mpirun -n 4 ./demo

或者多机时:

mpirun -n 4 -f host_file ./demo

进阶Python版

上面的MPICH使用C和C++开发,但其实也有Python绑定版,对大部分同学来说这个会更友好。

Python版MPICH库名为:mpi4py,文档推荐:

11. 使用Python的mpi4py模块 — python-parallel-programming-cookbook-cn 1.0 文档

使用起来简单直观多了。

1、安装mpi4py库:

首先也要先安装上面的MPICH,然后:

pip3 install mpi4py

(可能会卡主比较久...)

2、编写helloWorld_MPI.py:

from mpi4py import MPI

comm = MPI.COMM_WORLD
rank = comm.Get_rank()
print("hello world from process ", rank)

3、然后运行:

mpiexec  -n 5 python3  helloWorld_MPI.py

mpirun -np 3 python3 mpi_helloworld.py

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小锋学长生活大爆炸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值