MPICH4.0.2
搭建PSRS(Parallel Sorting by Regular Sampling)算法运行环境。
环境
Windows10
Ubuntu22.04
VMWare
下载
cd ~
wget https://www.mpich.org/static/downloads/4.0.2/mpich-4.0.2.tar.gz
tar xfz mpich-4.0.2.tar.gz
mkdir libraries
mv mpich-4.0.2 ~/libraries
mkdir ~/mpich-install
安装
#新建临时文件夹,后面会自动删掉
mkdir /tmp/username/mpich-4.0.2
cd /tmp/username/mpich-4.0.2
/home/username/libraries/mpich-4.0.2/configure --disable-fortran -prefix=/home/username/mpich-install 2>&1 | tee c.txt
cat c.txt
sudo apt install g++
sudo apt install make
make 2>&1 | tee m.txt
cat m.txt
make install 2>&1 | tee mi.txt
cat mi.txt
环境变量
vi ~/.bashrc
export MPI_ROOT=/home/username/mpich-install
export PATH=$MPI_ROOT/bin:$PATH
export MANPATH=$MPI_ROOT/man:$MANPATH
source ~/.bashrc
测试单机环境
which mpicc
which mpiexec
mpichversion
mpicc --version
cd ~/libraries/mpich-4.0.2/examples/
mpicc -o cpi cpi.c
mpirun -np 2 /home/username/libraries/mpich-4.0.2/examples/cpi
准备多机环境
- 克隆一个虚拟机,并修改主机名
sudo vim /etc/hostname
sudo vim /etc/hosts
reboot
- 修改hosts
vi /etc/hosts
192.168.93.131 node1
192.168.93.132 node2
3.安装ssh
# 如果只有agent,说明没有安装openssh-server
ps -e|grep ssh
sudo apt-get install openssh-server
4.配置ssh
在node1操作即可。
ssh-keygen -t rsa
ssh username@node2
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub | ssh username@node1 'cat >> ~/.ssh/authorized_keys'
# 免密登录到自己
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh username@node1
cat ~/.ssh/id_rsa.pub | ssh username@node2 'cat >> ~/.ssh/authorized_keys'
# 免密登录到自己
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5.关闭防火墙,允许MPI通信
sudo ufw status
# sudo ufw enable
sudo ufw disable
配置MPI多机环境
cd ~
mkdir mpi
cd mpi
vim nodefile4
node1:2
node2:2
cd ~/libraries/mpich-4.0.2/examples/
mpicc -o cpi cpi.c
scp /home/username/libraries/mpich-4.0.2/examples/cpi username@node2:/home/username/libraries/mpich-4.0.2/examples/cpi
# 测试配置
mpiexec -f ~/mpi/nodefile4 -n 4 ~/libraries/mpich-4.0.2/examples/cpi
参考:
[1]: https://www.mpich.org/downloads/
[2]: https://www.mpich.org/static/downloads/4.0.2/mpich-4.0.2-installguide.pdf
[3]: https://www.mpich.org/documentation/manpages/
请指教!