我有两台树莓派,要搭成一个集群,一个是两者之间要能够实现免密登录,另一个是用mpi看看能不能用两台树莓派同时跑一个程序用来检验两者之间能否免密登录。
一、安装mpich
选择第一个下载即可。或者可以直接sudo apt-get install mpich,连环境变量都配好了。
可以在主机上下载,然后用winscp直接上传即可。
接下来cd mpich
tar -xvzf mpich-3.3.1.tar.gz
在mpich文件中现在有两个东西,可以ls查看,一个是mpich-3.3.1,另一个是刚才的压缩文件,然后创建安装文件夹,
mkdir mpich-install
cd 进入mpich-3.3.1,指定安装路径,
./configure -prefix=/home/pi/mpich/mpich-install
接下来安装即可,
make 2>&1 | tee m.txt
make install |& tee mi.txt
接下来添加环境变量,我直接把官方文档放在下面了,
不同的shell有不同的安装方式,而树莓派应该用的是bash,
所以直接
PATH=/home/pi/mpich/mpich-install/bin:$PATH
export PATH
并且我发现pi3比pi4慢了太多,,像安装这种东西我觉得还是参考官方文档会很顺。
安装成功后进入mpich-3.3.1中的example,然后输入
mpirun -n 4 ./cpi
输出如下:
二、SSH免密登录
因为一台当成主节点,另一台当成子节点,所以只要把主节点的公钥给子节点即可。
先配置hosts文件
sudo vim /etc/hosts
将两者的ip对应起来:
XXX.XXX.XXX.XXX pi3
XXX.XXX.XXX.XXX pi4
接下来生成公私钥:
sudo apt-get install ssh
ssh-keygen -t rsa
一路回车,
接下来直接用一条命令把pi4的公钥拷给pi3,
如下所示:
ssh-copy-id -i id_rsa.pub pi@pi3
可以实现主节点对子节点的免密登录。
验证方式,建立一个machinefile,这个还是可以看官方文档,官方文档写得很详细了。
新建一个machinefile
我是这样写的,因为两个树莓派都是4核所以我开8个进程,
然后输入
mpiexec -n 8 -f machinefile ./examples/cpi
这里面的machinefile名字可以随意,但一定要写出它的位置,不然程序就只会在当前文件夹下寻找。
注意:集群中节点下mpich的安装路径必须是一样的!
两者都必须具有同样位置的machinefile和hosts文件
否则可能会报错:
也就是两个节点并未连接。
然后我就可以开始做作业了。。我心好累。