在Centos7下搭建mpi环境,走了很多弯路,现在整理出一套醉简便的方法,分享给大家,希望可以帮助到需要的人
提示:以下是本篇文章正文内容
sudo yum install nano
sudo yum install net-tools
sudo yum install gcc
sudo yum install gcc-c++
sudo yum install gcc-gfortran
更新yum库
yum update
下载相关依赖包
yum install wget -y
yum install gcc gcc-c++ gcc-fortran kernel-devel -y
CentOS7版本后防火墙默认使用firewalld,因此在CentOS7中关闭防火墙使用以下命令:
$ sudo systemctl stop firewalld.service
$ sudo systemctl disable firewalld.service
$ sudo nano /etc/selinux/config
注释下面两行:
#SELINUX=enforcing
SELINUX=disabled
#SELINUXTYPE=targeted
设置后需要重启才能生效。
$ sudo reboot -f
$ /usr/sbin/sestatus
/这里以两台机器组成一个集群为例
$ sudo nano /etc/sysconfig/network-scripts/ifcfg-ens33
保存并关闭文件。
$ sudo systemctl restart network.service
修改机器名称:
第一台机器的机器名为Node1
第二台机器的机器名为Node2
在每台机器的终端窗口中,执行命令:
$ sudo nano /etc/sysconfig/network
在/etc/hosts文件中存放的是域名与IP的对应关系;
$ sudo nano /etc/hosts
192.168.190.145 Node1
192.168.190.146 Node2
注:请将原文件最上面的第二行127.0.1.1 删除掉或者原内容全部删除(每台机器都要做)
假设两台机器分别为Node1,Node2
在Node1机器上,进入~/.ssh目录,输入命令:ssh-keygen -t rsa,然后连续四下回车
在Node2上重复上述操作
要想让这两台机器无密码登录,需要更改一下必要的文件的权限(所有节点都要更改):其实只要保证authorized_keys的文件权限为600或者644
$ chmod 755 ~
$ chmod 755 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub
在node01机器上输入命令
ssh-copy-id -i Node1
然后输入对应密码,再输入
ssh-copy-id -i Node2
在Node2机器上重复上述操作,输入命令:ssh-copy-id -i Node1,然后输入对应密码,再输入:ssh-copy-id -i Node2
分别在Node1和Node2上执行如下命令
$ ssh Node2
$ ssh Node1
这时会发现不需要输入密码,直接就ssh连接上了这两台机器。
cd /
mkdir software
cd /software
wget http://www.mpich.org/static/downloads/3.4.1/mpich-3.4.1.tar.gz
tar -zxvf mpich-3.4.1.tar.gz
cd /
mkdir mpich-install
cd /software/mpich-3.4.1
./configure --prefix=/mpich-install --with-device=ch4:ofi 2>&1 | tee c.txt
------------ps:下边两步要运行很久,可以泡杯咖啡休息等待哦-----------
make
make install
vim ~/.bashrc
在最底层添加:
export MPICH=/mpich-install
export PATH=$MPICH/bin:$PATH
并:wq保存配置退出vim
令环境变量生效
source ~/.bashrc
mpirun-version