在树莓派上安装和运行MPICH3

本实验环境:

树莓派Raspberry Pi 3B

系统版本"Description: Raspbian GNU/Linux 10 (buster)"

镜像:"2019-09-26-raspbian-buster-full.img"

软件:Xshell

安装


  1. 在主目录 /home/pi 建立目录mpich3,并进入
~ $ mkdir mpich3
~ $ cd mpich3
  1. 在mpich3目录下建立子目录build(建立子目录build作为建置目录,用来存放建置时产生的档案,跟mpi原始码目录分开来,让原始码目录保持干净)
~/mpich3 $ mkdir build
  1. 建立安装目录(建立安装目录,之后会把建置好的东西(脚本档、执行档)放在这里)
~/mpich3 $ sudo mkdir /usr/local/bin/mpich32
  1. 下载MPICH3.2并解压
~/mpich3 $ wget http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz
~/mpich3 $ tar zxvf mpich-3.2.tar.gz
  1. 进入子目录build,执行指令configure并设定参数(--prefix:指令安装路径,默认为:/usr/local/bin)
~/mpich3 $ cd build
~/mpich3/build $ /home/pi/mpich3/mpich-3.2/configure -- prefix=/usr/local/bin/mpich32 2>&1 | tee log_c.txt

「2>&1」代表把标准错误导向标准输出,「| tee log_c.txt」则是把左边指令的标准输出丢给指令tee,tee除了会输出到屏幕,也会复制一份输出到档案log_c.txt,出问题时可到此查看

  1. 开始建置(可能花费不少时间)
~/mpich3/build $ make 2>&1 | tee log_m.txt
  1. 安装
~/mpich3/build $ sudo make install 2>&1 | tee log_i.txt
  1. 设定执行路径,使用vim修改~/.profile,在最后面加上
export PATH=”$PATH:/usr/local/bin/mpich32/bin”
  1. 执行指令确认可找到MPICH的执行档
~/mpich3/build $ cd
~ $ which mpicc
/usr/local/bin/mpich32/bin/mpicc
~ $ which mpiexec
/usr/local/bin/mpich32/bin/mpiexec

到这里MPICH算是安装成功了!

执行


测试执行范例程式计算π :

~ $ mpiexec -n 9 ./mpich3/build/examples/cpi
单人9线程测试计算π

多人执行


若想多台并行执行,需要让每台设备在同一网络下并且之间能够互相免密码SSH登入

1.生成公钥秘钥

~$ ssh-keygen -t rsa -C “raspberrypi@rasepberrypi”

2.查看网络所分给树莓派的ip

~$ ip addr show

如:本机192.168.43.126

3.将主机的公钥给其他三台,让主机可以免密登录其他设备

~$ sudo cat ~/.ssh/id_rsa.pub | ssh pi@192.168.43.126 “mkdir .ssh;cat >> .ssh/authorized_keys”

4.新建文件夹,把每台树莓派的ip地址填进去

~$ vim machinefile
192.168.43.64
192.168.43.126
192.168.43.46
192.168.43.160

5.运行

~ $ mpiexec -f machinefile -n 8 ./mpich3/build/examples/cpi
四台树莓派合作计算π
6.每个人的树莓派名称都是raspberrypi,修改hostname可以方面查看每个进程是谁在计算
~$ sudo vim /etc/hostname