在ubuntu终端中,先执行下面命令:
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install gfortran
cd ~/software
sudo tar -zxvf mpich-4.0a1.tar.gz
sudo chmod 777 mpich-4.0a1 #去除文件夹上面的锁
/home/用户名/software/mpich 为自定义的配置文件夹
cd ~/software/mpich-4.0a1/
sudo ./configure --disable-fortran --with-device=ch4:ofi --prefix=/home/用户名/software/mpich-4.0a1/mpich-install 2>&1 | tee c.txt
然后进行安装
sudo apt install autoconf
autoconf
sudo apt install make
sudo make # 漫长等待,不要急
sudo make install
sudo gedit ~/.bashrc
.bashrc
文件后,在末尾添加export MPI_ROOT=/home/ming/software/mpich-4.0a1/mpich-install #这一步对应你自己的安装地址
export PATH=$MPI_ROOT/bin:$PATH
export MANPATH=$MPI_ROOT/man:$MANPATH
source ~/.bashrc
运行一个实例:
mpirun -n 10 ./examples/cpi
ps -e |grep ssh
若只发现了ssh-agent,那么说明只有客户端,需要安装服务端程序,执行下述命令安装
sudo apt-get install openssh-server
# 开启
service sshd start
# 关闭
service sshd stop
# 重启
service sshd restart
sudo vim /etc/ssh/sshd_config
sudo apt install vim #若提示sudo: vim:找不到命令,则运行该命令
需要将如下的三个配置取消注释,如果没有的话主动添加进去就行了
重启生效
service sshd restart
ssh localhost(127.0.0.1)
,然后输入系统登陆密码,不出问题的话应该就可以正确地登陆到本机了。#生成公钥和,使用rsa加密
ssh-keygen -t rsa
#利用公钥生成授权文件
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#添加至信任
ssh-add
ssh 账户名@ip
在所有用户名,密码相同的基础上,修改所有节点的主机名,比如第一个节点叫node1,第二个节点叫node2
sudo vim /etc/hostname
同一局域网下所有虚拟机,使用桥接,可以相互ping通。
sudo vim /etc/hosts
ip1 node1
ip2 node2
请参考本文3.1和3.2 SSH安装和配置
生成公钥和私钥,请参考本文3.3 免密登录本机
本文默认:node1为主节点。
scp ~/.ssh/id_rsa.pub node1用户名@node1:~/.ssh/id_rsa.pub.node2
cat ~/.ssh/id_rsa.pub.node2 >> ~/.ssh/authorized_keys #公钥加入到认证文件
scp ~/.ssh/authorized_keys node2用户名@node2:~/.ssh/authorized_keys #将认证文件传回每个子节点
这一步是为了在所有节点共享可执行文件。不是必须操作。
mkdir /home/ming/mpi_share
sudo apt-get install nfs-kernel-server
sudo apt-get install rpcbind
不妨选节点node1,其他节点为NFS客户端。修改主节点exports文件
sudo gedit /etc/exports
打开文件后,在文件的最后附上所有同步的客户端的虚拟机的ip和权限,如下:
/home/ming/mpi_share node1(rw,sync,no_root_squash,no_subtree_check)
/home/ming/mpi_share node2(rw,sync,no_root_squash,no_subtree_check)
重启NFS
sudo /etc/init.d/nfs-kernel-server restart
使其能共享NFS服务器的共享目录
sudo mount -t nfs node1:/home/ming/mpi_share /home/ming/mpi_share
ip为主节点地址,冒号后跟的是主节点共享目录,最后的路径是该节点的共享目录
每次节点启动时都需重新执行挂载命令,如果想开机自动挂载:将把上述指令写到 /etc/rc.local
文件中。
cd ~/software/mpich-4.0a1
touch machinefile # 新建文件
machinefile文件里,应该配置,主机名:线程数,可以通过命令 nproc ,查看CPU线程数
node1:4
node2:4
运行
mpiexec -n 8 -f machinefile examples/cpi
可以将自己编写的代码,放到共享文件夹中,然后经过编译,执行。
C文件
mpicc xxx.c -o xxx
mpirun -n 8 ./cpi
C++文件
参考链接: