简单组建linux集群及并行编译vasp过程Word文档下载推荐.docx
《简单组建linux集群及并行编译vasp过程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《简单组建linux集群及并行编译vasp过程Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
P43.2,内存:
2G,硬盘:
80G,网卡:
千兆网卡(5千多每台)
华为24口千兆交换机(4千多)集群软件环境:
建一个简单的集群,其实并不难,主要配置nis,nfs,rsh,mpi就好了。
推荐大家看一本书《微机集群组建、优化和管理》车静光著,机械工业出版社。
我的集群,采用suse9.3,操作系统其实也很重要,这次试了很多操作系统,redhat9,rhas4无法识别网卡,rocks无法安装,如果硬件没有什么问题,建议大家可以试下rockscluster这个集群系统,rocks集操作系统和集群于一体,安装完成并行环境就已经建立,而且还配备了pbs管理软件,非常简单,容易上手,只是我的硬件不太兼容,本来是想装rocks的,无奈,只有自己动手了。
Suse配置nis,nfs非常简单,因为suse强大的yast,就像window一样方便,只要鼠标轻点几下就ok。
1.Linux系统的安装,suse安装也非常简单,在此不想详细讲太多,主要是在分区的时候要注意,最要自己手动分区,对于服务器来说,最好能分一个独立的分区/home,因为节点机器要通过nfs共享服务器的/home。
注意的是一下几个软件包一定要安装nfs(nfs-utils),nis(ypbind),rsh(rsh-server)。
2.基本的网络配置(通过yast的网卡配置)
服务器的:
192.168.1.253hostname:
node0域名:
node0.cluster节点机器:
192.168.1-192.168.1.10hostname:
node1-node10域名:
node*.cluser
掩码:
255.255.255.0
3.服务器的配置
3.1.Nfs设置
NFS(NetWorkFileSystem)是一种使用比较多的网络文件系统,它以它的安装容易,使用方便得到很多Linux爱好者的使用。
在使用NFS时,我们把需要共享的分区或者文件按照一定的规范共享出去,想使用这个资源的机器使用mount命令把共享的资源加载到自己的系统上,然后就可以像使用自己的本地文件系统一样方便。
进入图形yast-network-nfsserver,之后开始配置,点击adddirectory:
之后设置两个共享目录,/home,/usr/local/,然后加入共享这两个目录的主机通配符192.168.1.0/255.255.255.0rw,root_squash,sync。
其实配置nfs就是修改/etc/exports文件,你也可以直接修改成
/home/192.168.1.1/255.255.255.0(rw,root_squash,sync)
/usr/local192.168.1.1/255.255.255.0(rw,root_squash,sync)
Ok,NFS就这样配置好了。
3.2NIS的配置
NIS(NetworkInformationService)是实现网络上各Linux机器之间的重
要数据分享。
这些数据包括用户帐号,密码,组文件,主机文件,等等。
在集群中我们要做到单一的镜象就需要NIS的一些服务。
比如我们不需要在每个节点上
建立各自的用户,而是在master上建立一个用户以后,就同时在其它的节点上能够访问到这个用户。
下面是我的配置过程:
Yast—network—nisserver—createnismasterserver之后填入nisdomain
name就是域名,我们填nodeO.CIuster,之后一些信息一般选默认就可以了,之后要配置hosts:
netmask:
255.255.255.255network:
127.0.0.1
255.255.0.0network:
192.168.0.0
ok,之后完成,进入/var/yp目录,执行make就最后完成nis的配置。
注意的是如果你新建用户了,要注意执行make命令更新nis信息。
最后启动网络服务yast—network-startservice进入设置,开启shell,login两项服务。
3.3rsh的配置
注意修改这两个文件/etc/hosts/etc/hosts.equiv所建立用户的.rhosts,这
个文件和/hosts.equiv文件内容设置相同。
Hosts的文件信息,最后修改成:
127.0.0.1localhost
192.168.1.253node0.clusternode0
192.168.1.1node1.clusternode1
192.168.1.10node10.clusternode10
Hosts.equiv:
Node0
Node1
Node10
把所有节点的信息输入到这两个文件,等节点机器的配置好后,你就可以用命令
rloginnode*,登陆节点机器,这样就可以对节点机器进行操作了。
节点机器的配置
配置nis,nfs的情况基本和服务器类似,只是进入yast的时候选择的是nis客户端,和nfs客户端即可,这里不再详细说明。
之后启动rsh服务,启动过程,编辑/etc/xinetd.d/rsh将其中内容“disable=yes”改成“disable=no”,
重新restartxinetd,激活rsh#chkconfig—level345rshon
#/etc/rc.d/xinetdrestart,这样就配置好rsh了,
Lam-mpi的编译安装使用。
(1)到lam—mpi官方网站www.lam-mpi.org下载最新的源代码,注意不要下载rpm格式的,要自己编译tar.gz格式的
(2)用“tarzxvflam-7.1.1.tar.gz”解压
(3)进入该目录配置编译信息(后面编译vasp中的makefile有)
./configure—prefix=/usr/local/lam-7.1.1withCFLAGS=—O—with
—fc=ifortwith—f77flags=—O—without—romio
几点说明,前面是配置lam-mpi的安装路径/usr/local/lam-7.1.1,指定的编译器是intel的fortran编译器ifort
(4)然后执行make进行编译,最后执行makeinstall安装,ok成功安装lam-mpi
之后最好把/usr/local/lam-7.1.1/bin加入到搜索路径中,具体做法vi编辑/etc/profile找到
#makepathmorecomfortable
#iftest,,,thenPATH=/usr/local/bin:
/usr/bin:
/usr/X11R6/bin:
/usr/local/lam-7.1.1/bin
Ok,这样就设置好路径了,注意的是服务器和节点机器都要设置,因为我们是通过nfs共享lam。
之后新建一个文件,lamhosts,输入nodeO,执行lamboot—lamhosts
如果显示有lam的相关信息,那说明安装成功。
之后顺便说一下lam的使用的几个命令,注意执行lam不能在root下操作
1)新建一个文件,说明要使用并行计算的几个机器,vilamhosts加入你要计算的机器,比如nodeOnode1node2,每个机器一行
2)lamboot—vlamhosts启动lam—mpi
3)mpirun—np*program*为你运行机器的台数,progran为并行程序,在vasp中我就直接运行mpirun—np1Ovasp
4)运行结束,记得wipe—vlamhosts释放机器,否则节点机器无法关机,我经常忘记执行这个命令,导致关机的时候无法正常关机.。
lfc8.0并行vasp的编译(参考了本论坛的[转帖]VASP程序的编译(valenhou))感觉vasp安装不同操作系统不同的版本情况有很大不一样,在suse中并行vasp4.6我编译不成功,并行vasp4.5成功,串行4.6也成功,在rhas4.0中串行vasp4.6无法成功编译,vasp4.5则没有问题,大家如果编译不成功的话,可以试试不同版本。
下面讲讲我的并行编译。
首先要安装好fortran的编译器ifc这个不详细讲了,重要是要配置好路径,节点机器也是同样问题,ifc可以通过nfs共享,节点机器只要设置好路径就好了。
1.下载数学库libgoto,我的是intel平台我下libgoto_prescott32p-r1.00.so,之后我把他放在vasp上一级目录/usr/local/lib中
2.解压vasp.4.5.tar.gz和vasp.4.lib.tar.gz,注意把vasp安装在usr/local
的共享目录中
Tarzxvfvasp.4.5.tar.gztarzxvfvasp.4.lib.tar.gz
3.cdvasp.4.lib
cpmakefile.linux_ifc_P4makefile
vimakefile把当中的编译命令ifc改为ifort,在8.0中的命令是ifort不是ifc
之后执行make命令得到libdmy.a。
4.cdvasp.4.5
vimakefile把前面第50行的FC=IFC部分用#注释掉,第80—82的cpp部分
也注释掉
之后就是136行bias=/usr/local/lib/libgoto_prescott32p-r1.00.so
-Isvml
LAPAC用139行vasp自带的lapack,
把第166行和167行有关FFT3D的行前加上注释号,如下面的
#FFT3D=fft3dfurth.offt3dlib.o
#FFT3D=fftw3d.offt3dlib.o/opt/libs/fftw-3.0.1/lib/libfftw3.a
之后把202,203行mpi部分fc=mpif77的#去掉
把212行有关CPP的行前的注释号去掉
把226和227行有关SCAB行,加上注释号
把239和243行有关FFT3D的行,改成如下的内容:
#FFT:
fftmpi.owithfft3dlibofJuergenFurthmueller
FFT3D=fftmpi.offt