基于centos7的MPI高性能运算环境搭建

2025-10-19 11:43:12

1、1系统采用CentOS-7-x86_64-DVD-1511.iso

系统安装参见引用

2、3 Intel® Parallel Studio XE 2015安装

参考2013的安装

http://www.bkjia.com/Linuxjc/913104.html

3、3 InfiniBand的驱动的安装

(使用普通网卡的请跳过本步骤)

Mellanox的网站下载InfiniBand的驱动如上图

http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers

下载其中对应系统版本的驱动文件tgz或者iso,如果是iso就挂载

mount -o ro,loop MLNX_OFED_LINUX********.iso /mnt

如果是tgz就解压

tar –zxvf MLNX_OFED_LINUX********.tgz

并到相应的文件夹

执行./mlnxofedinstall –all

会报错,根据提示yum安装所需要依赖的文件包。

以上步骤在所有节点上都要进行。另外注意,主机选用—all选项,从机可以只选正常的basic,但是为了简单。我在这里都用了—all 安装了子网管理器  和HPC的所有内容。

4.启动openibd并设为开机启动:

service openibd start

chkconfig openibd on

5.启动子网管理器opensmd并设为开机启动:

service opensmd start

chkconfig opensmd on

6.查看HCA端口状态,若State为Active,则表示正常。

ibstat

7.还可以用如下命令查看HCA端口:

hca_self_test.ofed

8.重启系统

1、禁止防火墙和selinux

# systemctl disable firewalld

# systemctl stop firewalld

修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效

2、各节点之间域名名互相解析(hosts)

分别修改2台主机名分别为node1和node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。

Node1如下

#vi /etc/hostname

node1

#systemctl restart network.service

Node2与之类似。

 Hosts文件

配置两台台主机的主机表,在/etc/hosts中加入

192.168.1.11node1

192.168.1.12 node2

3、各节点之间时间同步

在node1和node2分别进行时间同步,可以使用ntp实现。 

[root@node1 ~]# ntpdate 172.16.0.1

需要联网在时间正确情况下省去问题不大

4,各节点之间配置ssh的无密码密钥访问。

下面的操作需要在各个节点上操作。

# ssh-keygen -t rsa -p

!然后一路enter

# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名

过程中要输入对方机器的密码。

两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名

在node1上#ssh node2 测试是否无密码登陆node2;node2同样。

1、1,安装 NFS 服务器所需的软件包:

centos 5 :

#yum install nfs-utilsportmap

centos 6之后 :

#yum install nfs-utilsrpcbind

2,编辑exports文件,添加从机

#vim /etc/exports

/home 192.168.1.* (rw,no_root_squash,no_all_squash,sync)

这样192.168.1.12可以挂载NFS服务器上的/home目录到自己的文件系统中。

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

/home为共享的目录,使用绝对路径。

192.168.1.12/255.255.255.0(rw,no_root_squash,no_all_squash,sync)为客户端的地址及权限,地址可以是一个网段,一个IP地址例如192.168.1.2/49或者是一个域名,域名支持通配符,如:*.youxia.com,地址与权限中间没有空格,权限说明:

rw:read-write,可读写;

ro:read-only,只读;

sync:文件同时写入硬盘和内存;

async:文件暂存于内存,而不是直接写入内存;

no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。

root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;

all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;

anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;

anongid:匿名用户的GID值。

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

3,启动nfs服务

先为rpcbind和nfs做开机启动:

Centos7:

#systemctl enable rpcbind.service

#systemctl enable nfs-server.service

然后分别启动rpcbind和nfs服务:

centos 5

# serviceportmap start

# servicenfs start

centos6:

# servicerpcbind start

#service nfs start

Centos7

#systemctl start rpcbind.service

#systemctl start nfs-server.service

确认NFS服务器启动成功:

#rpcinfo -p

检查 NFS 服务器是否挂载我们想共享的目录 /home

# exportfs

/home           192.168.1.12/255.255.255.0

4,在从机上安装NFS 客户端

首先是安裝nfs,同上

先为rpcbind做开机启动:

#systemctl enable rpcbind.service

然后启动rpcbind服务:

#systemctl start rpcbind.service

注意:客户端不需要启动nfs服务

检查 NFS 服务器端是否有目录共享:

# showmount -e  node1

Export list for node1:

/home 192.168.1.12/255.255.255.0

在从机上使用 mount 挂载服务器端的目录/home(或者home下的某个目录)到客户端某个目录下:

例如:

#mkdir /home/share

#mount -t nfs4 node1:/home/share/home/share

#df -h 查看是否挂载成功

想在客户机上实现开机挂载,则需要编辑/etc/fstab:

      #vi /etc/fstab

加上192.168.1.11:/home/share /home/share nfs defaults 0 0     

例如我现在的fstab文件

# /etc/fstab

# Created by anaconda on Wed Jun 22 01:50:37 2016

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/centos-root /    xfs  defaults    0 0

UUID=ae96b13e-1a14-4266-91ab-6a27bb543e27/boot                   xfs  defaults  0 0

/dev/mapper/centos-home /home     xfs     defaults     0 0

/dev/mapper/centos-swap swap    swap    defaults    0 0

192.168.1.11:/home/share /home/share nfs defaults 0 0

1、MPI配置

首先设置环境变量

在/etc/profile.d下建立一个.sh文件例如:cat /etc/profile.d/mpi.sh

source /opt/intel/impi/5.0.1.035/intel64/bin/mpivars.sh mpi

PATH=$PATH:/opt/intel/impi/5.0.1.035/intel64/bin

在两台机器上都要进行

运行时用mpirun命令

例如mpirun –n4 –machinefile/machinefile ./ex

4进程数,命令选项–machinefile 后跟file的绝对路径

./ex 为进程

Machinefile可写成类似

# cat /machinefile

node1:2    #意为在结点1两个进程

node2:2    #意为在结点2两个进程

 

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢