简单组建linux集群及并行编译vasp过程

简单组建linux集群及并行编译vasp过程我们现在主要是用做高性能计算,下面就是我的集群的组建过程。

集群的硬件环境:做一个集群,节点机器的硬件最好相同,这样计算的效率就会高很多,同时组建集群也相对容易。

以下是我的机器的配置情况(全新,组装)另外要说的是,我们的节点机没有配置显示器,全部工作由服务器完成。

连接就是通过交换机连接,和一般局域网连接相同。

服务器:P4 3.2,内存2 G ,硬盘:160G ,显示器,网卡:2个千兆网卡(money:8千多)节点(10台): P4 3.2,内存:2 G,硬盘:80G ,网卡:千兆网卡(5千多每台)华为24口千兆交换机(4千多)集群软件环境:建一个简单的集群,其实并不难,主要配置nis,nfs,rsh,mpi 就好了。

推荐大家看一本书《微机集群组建、优化和管理》车静光著,机械工业出版社。

我的集群,采用suse9.3,操作系统其实也很重要,这次试了很多操作系统,redhat9,rhas4无法识别网卡,rocks无法安装,如果硬件没有什么问题,建议大家可以试下rocks cluster这个集群系统,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.253 hostname:node0 域名:node0.cluster节点机器:192.168.1-192.168.1.10 hostname:node1-node10 域名:node*.cluser掩码:255.255.255.03.服务器的配置3.1.Nfs设置NFS(NetWork File System)是一种使用比较多的网络文件系统,它以它的安装容易,使用方便得到很多Linux爱好者的使用。

在使用NFS时,我们把需要共享的分区或者文件按照一定的规范共享出去,想使用这个资源的机器使用mount 命令把共享的资源加载到自己的系统上,然后就可以像使用自己的本地文件系统一样方便。

进入图形yast-network-nfs server,之后开始配置,点击add directory:之后设置两个共享目录, /home,/usr/local/,然后加入共享这两个目录的主机通配符192.168.1.0/255.255.255.0 rw,root_squash, sync。

其实配置nfs就是修改/etc/exports 文件,你也可以直接修改成/home/ 192.168.1.1/255.255.255.0(rw,root_squash,sync)/usr/local 192.168.1.1/255.255.255.0(rw,root_squash,sync)Ok,NFS就这样配置好了。

3.2 NIS的配置NIS(Network Information Service)是实现网络上各Linux机器之间的重要数据分享。

这些数据包括用户帐号,密码,组文件,主机文件,等等。

在集群中我们要做到单一的镜象就需要NIS的一些服务。

比如我们不需要在每个节点上建立各自的用户,而是在master上建立一个用户以后,就同时在其它的节点上能够访问到这个用户。

下面是我的配置过程:Yast-network-nis server-create nis master server之后填入nis domain name,就是域名,我们填node0.Cluster,之后一些信息一般选默认就可以了,之后要配置hosts:netmask:255.255.255.255 network:127.0.0.1netmask:255.255.0.0 network:192.168.0.0ok,之后完成,进入/var/yp目录,执行make就最后完成nis的配置。

注意的是如果你新建用户了,要注意执行make命令更新nis信息。

最后启动网络服务yast-network-start service进入设置,开启shell,login 两项服务。

3.3 rsh的配置注意修改这两个文件/etc/hosts /etc/hosts.equiv 所建立用户的.rhosts,这个文件和/hosts.equiv文件内容设置相同。

Hosts的文件信息,最后修改成:127.0.0.1 localhost192.168.1.253 node0.cluster node0192.168.1.1 node1.cluster node1192.168.1.10 node10.cluster node10Hosts.equiv:Node0Node1Node10把所有节点的信息输入到这两个文件,等节点机器的配置好后,你就可以用命令rlogin node*,登陆节点机器,这样就可以对节点机器进行操作了。

节点机器的配置配置nis,nfs的情况基本和服务器类似,只是进入yast的时候选择的是nis客户端,和nfs客户端即可,这里不再详细说明。

之后启动rsh服务,启动过程,编辑/etc/xinetd.d/rsh 将其中内容“disable=yes”改成“disable=no”,重新restart xinetd,激活rsh #chkconfig –level 345 rsh on#/etc/rc.d/xinetd restart,这样就配置好rsh了,Lam-mpi的编译安装使用。

(1)到lam-mpi官方网站下载最新的源代码,注意不要下载rpm格式的,要自己编译tar.gz格式的(2)用“tar zxvf lam-7.1.1.tar.gz”解压(3)进入该目录配置编译信息(后面编译vasp中的makefile有)./configure—prefix =/usr/local/lam-7.1.1 ――with CFLAGS=―O ―with –fc=ifort ―― with ―f77flags=―O ―without ―romio几点说明,前面是配置lam-mpi的安装路径/usr/local/lam-7.1.1,指定的编译器是intel的fortran编译器ifort(4)然后执行make进行编译,最后执行make install安装,ok成功安装lam -mpi之后最好把/usr/local/lam-7.1.1/bin加入到搜索路径中,具体做法vi编辑/etc/profile找到#make path more comfortable#if test ………thenPATH=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/usr/local/lam-7.1.1/bin Ok, 这样就设置好路径了,注意的是服务器和节点机器都要设置,因为我们是通过nfs共享lam。

之后新建一个文件,lamhosts,输入node0,执行lamboot -lamhosts如果显示有lam的相关信息,那说明安装成功。

之后顺便说一下lam的使用的几个命令,注意执行lam不能在root下操作1)新建一个文件,说明要使用并行计算的几个机器,vi lamhosts加入你要计算的机器,比如node0 node1 node2 …每个机器一行2) lamboot -v lamhosts 启动lam-mpi3) mpirun - np * program *为你运行机器的台数,progran为并行程序,在vasp中我就直接运行mpirun -np 10 vasp4)运行结束,记得wipe -v lamhosts 释放机器,否则节点机器无法关机,我经常忘记执行这个命令,导致关机的时候无法正常关机.。

Ifc8.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 的共享目录中Tar zxvf vasp.4.5.tar.gz tar zxvf vasp.4.lib.tar.gz3. cd vasp.4.libcp makefile.linux_ifc_P4 makefilevi makefile 把当中的编译命令ifc改为ifort,在8.0中的命令是ifort不是ifc之后执行make命令得到libdmy.a。

4. cd vasp.4.5cp makefile.linux_ifc_P4 makefilevi makefile 把前面第50行的FC=IFC部分用#注释掉,第80-82的cpp部分也注释掉之后就是136行blas=/usr/local/lib/libgoto_prescott32p-r1.00.so-lsvmlLAPACK用139行vasp自带的lapack,把第166行和167行有关FFT3D的行前加上注释号,如下面的#FFT3D = fft3dfurth.o fft3dlib.o#FFT3D = fftw3d.o fft3dlib.o /opt/libs/fftw-3.0.1/lib/libfftw3.a 之后把202,203行mpi部分fc=mpif77的#去掉把212行有关CPP的行前的注释号去掉把226和227行有关SCA的行,加上注释号把239和243行有关FFT3D的行,改成如下的内容:# FFT: fftmpi.o with fft3dlib of Juergen FurthmuellerFFT3D = fftmpi.o fftmpi_map.o fft3dlib.o# fftw.3.0.1 is slighly faster and should be used if available#FFT3D = fftmpiw.o fftmpi_map.o fft3dlib.o/opt/libs/fftw-3.0.1/lib/libfftw3.a把这些都修改后,保存,再make得到vasp的可执行程序,为了和串行区别之后我把vasp修改为vaspmpi,copy到/bin中去。

合集下载

64位并行vasp安装过程总结

64位并行vasp安装过程总结

采用IFC编译器,MKL数据库对V ASP编译的过程1.准备系统为Open suse linux-10.3 x86-64或Open suse linux-11.0 x86-64V ASP源代码(vasp.4.6.tar.gz和vasp.4.lib.tar.gz),mkl数据库(l_mkl_p_9.1.023.tar),ifc 编译器(l_fc__pl_9.1.036.tar.gz)。

我们将以上安装所需文件都放在/root/vasp目录下并解压2.Ifc编译器安装先解压tar –zxvf l_fc_c_9.1.036.tar.gz 得到l_fc_c_9.1.036.文件夹进入l_fc__pl_9.1.036文件夹找到install.sh文件执行./install.sh开始安装ifc,安装过程都选用默认的路径(/opt/intel/fc/9.1.036)安装安装完毕,进入/opt/intel/fce/9.1.036/bin目录执行cp ifort /binifc安装完成3.mkl的安装进入l_mkl_p_9.1.023.tar所在目录tar –zxvf l_mkl_p_9.1.023.tar进入解压得到的目录l_mkl_p_9.1.023进入install文件夹,可以看到一个可执行的文件install./install.sh默认安装即可,默认目录为/opt/intel/mkl/9.1.023二、安装MPICH2(在节点root目录下)1、解压缩#tar -zxvf mpich2-1.0.1.tar.gz或者#gunzip -c mpich2-1.0.1.tar.gz|tar xf mpich2-1.0.1.tar2、创建安装目录#mkdir /usr/MPICH-instsll3、进入mpich2解压目录#cd mpich2-1.0.14、默认安装目录#./configure5、编译#make6、安装#make install7、退出到root目录#cd ..8、通过编辑.bashrc文件修改环境变量#vi .bashrc修改后的.bashrc文件如下:8.设置环境变量编辑root下的.bashrc# .bashrc# User specific aliases and functionsalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'PATH="$PATH:/usr/local/bin" (安装mpich2要添加的路径)# Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrcfiexport LD_LIBRARY_PATH=/opt/intel/mkl/9.1.023/lib/em64t:/opt/intel/fce/9.1.036/lib. /opt/intel/fce/9.1.036/bin/ifortvars.sh (新添加路径)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/mkl/9.1.023/lib/em64t (新添加路径)9、测试环境变量设置#which mpd#which mpicc#which mpiexec#which mpirun#which mpif9010、修改/etc/mpd.conf文件,添加内容为secretword=myword#vi /etc/mpd.conf添加secretword=myword设置文件读取权限和修改时间#touch /etc/mpd.conf#chmod 600 /etc/mpd.conf1、本地测试#mpd & 启动#mpdtrace 观看启动机器#mpdallexit 退出三。

vasp编译

vasp编译

(1)准备1.sudo apt-get install g++sudo apt-get install build-essentialsudo apt-get install gcc-multilibsudo apt-get install libstdc++5sudo apt-get install openjdk-6-jre-headlesssudo apt-get install ia32-libssudo apt-get install lib32stdc++6sudo apt-get install libc6-dev-i386sudo apt-get install g++-multilibsudo apt-get install gfrotran1 2 3 tar -2. xzvf xxx #xxx 指压缩包的名称 cd 解压后目录 ./install.sh##########安装过程很简单,安装提示就行########安装完成后,修改环境变量1 vi ~/.bashrc在末尾添加source /opt/intel/bin/compilervars.sh intel64 (64位版本)source /opt/intel/bin/compilervars.sh ia32 (32位版本)1 source ~/.bashrc4. 编译mpi首先下载mpich2的安装文件1 2 3 4 5 6 tar mpich2压缩包cd 文件夹./configure --prefix=安装目录 f77=ifort f90=ifort fc=ifortmakemake installvi ~/.bashrc笔者安装目录在/opt/mpich2,也可以放在其他文件夹中,注意执行make install 用户需要有写入权限在文件最后写入如下代码1 2 3 4 #mpi2 startPATH=/usr/local/mpich2-1.2.1p1/bin:$PATHexport PATH#mpi2 end再source 一下1 source ~/.bashrc5.编译fftw1 2 3 4 5 tar 安装文件cd 文件夹./configure --prefix=安装目录 F77=ifort F90=ifort GCC=ifortmakemake install all6.编译vasp准备 vasp.5.2.tar.gz vasp.5.lib.tar.gz首先编译的是vasp.lib1 2 3 4 5 tar xzvf vasp.5.2.tar.gztar xzvf vasp.5.lib.tar.gzcd vasp.5.libcp makefile.linux_ifc_P4 makefilevi makefile修改19行的 ifc –>ifort1 make如果出现 error { gcc:error trying to wxec ‘f951′ :execvp : No such file or directory }这是gcc 的一个BUG ,解决方法是安装gfortran1 sudo apt-get install gfortran然后再重新编译接着编译vasp1 2 3 4 cd ../cd vasp.5.2cp makefile.linux_ifc_P4 makefilevi makefile主要有如下几个改动1 2 3 4 5 6 7 8 9 10 11 12 1row:53 FC=ifc-->FC=ifortrow:129 BLAS= /opt/libs/libgoto/libgoto.so-->#BLAS= /opt/libs/libgoto/libgoto.sorow:132 LAPACK= ../vasp.5.lib/lapack_double.o-->#LAPACK= ../vasp.5.lib/lapack_double.o row:135后添加新行MKLINCLUDE=/opt/intel/mkl/include/MKLPATH=/opt/intel/mkl/lib/intel64/BLASLAPACK=-L/opt/intel/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -l iomp5 -lpthread#LIB = -L../vasp.5.lib -ldmy \../vasp.5.lib/linpack_double.o $(LAPACK) \$(BLAS)LIB = -I$(MKLINCLUDE) -L$(MKLPATH) \-L../vasp.5.lib -ldmy \$(BLASLAPACK) \../vasp.5.lib/linpack_double.o31 4 1 5 1 6 1 7 1 8 #158 ff3d后加入库的目录(根据安装ff3d的位置来)FFT3D = fft3dfurth.o fft3dlib.o /usr/local/lib/libfftw3.a然后make,如果没有编译错误那应该是编译成功了,会产生一个vasp的可执行文件。

VASP5.4编译过程说明

VASP5.4编译过程说明

V ASP5.4编译1.编译器安装:parallel_studio_xe_2011_sp1_update2_intel64.tgz解压安装即可,./install.sh:安装中使用的激活码为L3FN-2VRGKX7K安装完设置环境变量:For csh/tcsh:$ source install-dir/bin/compilervars.csh intel64For bash:$ source install-dir/bin/compilervars.sh intel64测试是否成功:which icc/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/iccwhich ifort/opt/intel/composer_xe_2011_sp1.9.293/bin/intel64/ifort2.安装openmpi:openmpi-1.4.5.tar.gz解压,然后输入./configure CC=icc CXX=icpc F77=ifort FC=ifort 指定编译器之后依次执行make,make install安装完成后,加入如下三个环境变量:export PATH=/usr/local/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/lib/openmpi:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH具体路径找自己的,其中少了第三个路径的话可以编译文件,但是运行编译后的文件会说找不到库函数。

建议安装完成之后进入解压文件夹(不是安装目录)下的example文件夹中测试程序,输入make之后会自动编译,完成之后输入mpirun –np 8 hello_f90,如果安装正确,会出现:Hello, world, I am 0 of 8Hello, world, I am 1 of 8Hello, world, I am 2 of 8Hello, world, I am 3 of 8Hello, world, I am 4 of 8Hello, world, I am 5 of 8Hello, world, I am 6 of 8Hello, world, I am 7 of 88是服务器的cpu数量。

linux编译方法

linux编译方法

linux编译方法随着信息技术的发展,Linux操作系统在各个领域中得到了广泛应用。

为了能够更好地使用和开发Linux,对于Linux的编译方法有着深入的了解是十分必要的。

本文将介绍Linux的编译方法,包括准备工作、编译过程以及常见问题的处理。

一、准备工作在进行Linux编译之前,需要进行一些准备工作来保证编译的顺利进行。

1.1 环境搭建首先,需要确保你的系统已经安装了必要的软件和工具,比如gcc编译器、make工具等。

可以通过运行以下命令来检查软件是否已经安装:```shellgcc --versionmake --version```如果显示相应软件的版本号,则表示已经安装成功。

1.2 获取源代码在开始编译之前,需要先获取源代码。

通常情况下,你可以从开源项目的官方网站或者代码托管平台上下载源代码。

通过以下命令可以从远程仓库中克隆代码到本地:```shellgit clone <repository_url>```其中`<repository_url>`是代码仓库的URL地址。

二、编译过程在准备工作完成后,就可以进行Linux的编译了。

下面介绍一般的编译过程。

2.1 配置首先,在源代码所在的目录中运行以下命令来进行配置:```shell./configure```配置命令会检查系统环境,并生成一个Makefile文件,用于后续的编译。

2.2 编译配置完成后,运行以下命令进行编译:make```编译命令会根据Makefile文件中的规则,将源代码编译为可执行文件或者库文件。

2.3 安装编译完成后,可以运行以下命令来进行安装:```shellmake install```安装命令会将编译生成的文件复制到系统指定的目录中,使得这些文件可以被系统正常调用和使用。

三、常见问题处理在进行Linux编译的过程中,可能会遇到一些常见的问题。

下面列举一些常见问题及其解决方法。

3.1 缺少依赖库在编译过程中,可能会提示缺少某些依赖库。

LINUX内核模块编译步骤

LINUX内核模块编译步骤

LINUX内核模块编译步骤编译Linux内核模块主要包括以下步骤:1.获取源代码2.配置内核进入源代码目录并运行make menuconfig命令来配置内核。

该命令会打开一个文本菜单,其中包含许多内核选项。

在这里,你可以配置内核以适应特定的硬件要求和预期的功能。

你可以选择启用或禁用各种功能、设备驱动程序和文件系统等。

配置完成后,保存并退出。

3. 编译内核(make)运行make命令开始编译内核。

这将根据你在上一步中进行的配置生成相应的Makefile,然后开始编译内核。

编译的过程可能需要一些时间,请耐心等待。

4.安装模块编译完成后,运行make modules_install命令将编译好的模块安装到系统中。

这些模块被安装在/lib/modules/<kernel-version>/目录下。

5.安装内核运行make install命令来安装编译好的内核。

该命令会将内核映像文件(通常位于/arch/<architecture>/boot/目录下)复制到/boot目录,并更新系统引导加载程序(如GRUB)的配置文件。

6.更新GRUB配置文件运行update-grub命令来更新GRUB引导加载程序的配置文件。

这将确保新安装的内核在下次启动时可用。

7.重启系统安装完成后,通过重启系统来加载新的内核和模块。

在系统启动时,GRUB将显示一个菜单,你可以选择要启动的内核版本。

8.加载和卸载内核模块现在,你可以使用insmod命令来加载内核模块。

例如,运行insmod hello.ko命令来加载名为hello.ko的模块。

加载的模块位于/lib/modules/<kernel-version>/目录下。

如果你想卸载一个已加载的内核模块,可以使用rmmod命令。

例如,运行rmmod hello命令来卸载已加载的hello模块。

9.编写和编译模块代码要编写一个内核模块,你需要创建一个C文件,包含必要的模块代码。

VASP5.4.4编译

VASP5.4.4编译

VASP5.4.4编译之前根据sobereva⽼师的视频写过名为的随笔,笔者亲⾃实践过,编译的也没问题,测试作业也正常,但是后来发现这样编译的vasp仍有问题,运⾏内存会不断增长,⼤概半⼩时后,mem到达了最⼤值,然后使⽤swap继续增长,mem和swap全⽤光了之后,作业直接断掉。

于是乎笔者使⽤较新的编译器(parallel_studio_xe_2020_update4_cluster_edition)试了⼀下,并参考了的makefile.include 以及使⽤了fftw,这样编译出来的vasp⽬前没出现问题。

parallel_studio_xe的安装同,然后将. /opt/intel/parallel_studio_xe_2020.4.912/psxevars.sh加⼊ /etc/profile 后重启终端,出现了Intel(R) Parallel Studio XE 2020 Update 4for Linux*Copyright 2009-2020 Intel Corporation.然后which icc ifort icpc mpiifort发现都能找的到,开始编译fftw,此处为 fftw-3.3.9./configure -prefix=/opt/fftw339 CC=icc F77=ifort MPICC=mpiicc -enable-mpimakemake install最后进⾏vasp编译,在此列出我的makefile.include供参考# Precompiler optionsCPP_OPTIONS= -DHOST=\"LinuxIFC\"\-DMPI -DMPI_BLOCK=8000 \-Duse_collective \-DscaLAPACK \-DCACHE_SIZE=4000 \-Davoidalloc \-Duse_bse_te \-Dtbdyn \-Duse_shmem\-DlibbeefCPP = fpp -f_com=no -free -w0 $*$(FUFFIX) $*$(SUFFIX) $(CPP_OPTIONS)FC = mpiifortFCL = mpiifort -mklFREE = -free -names lowercaseFFLAGS = -assume byterecl -w -heap-arrays 64OFLAG = -O2 -xhostOFLAG_IN = $(OFLAG)DEBUG = -O0MKL_PATH = /opt/intel/compilers_and_libraries_2020.4.304/linux/mkl/lib/intel64/BLAS =-L$(MKL_PATH) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64LAPACK =BLACS =SCALAPACK =OBJECTS = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d.o /opt/fftw339/lib/libfftw3_mpi.aINCS =-I/opt/fftw339/includeBEEF = -L/home/zhu/software/beef/lib -lbeefLLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) $(BEEF)OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.oOBJECTS_O2 += fft3dlib.o# For what used to be vasp.5.libCPP_LIB = $(CPP)FC_LIB = $(FC)CC_LIB = iccCFLAGS_LIB = -OFFLAGS_LIB = -O1FREE_LIB = $(FREE)OBJECTS_LIB= linpack_double.o getshmem.o# For the parser libraryCXX_PARS = icpcLIBS += parserLLIBS += -Lparser -lparser -lstdc++# Normally no need to change thisSRCDIR = ../../srcBINDIR = ../../bin#================================================# GPU StuffCPP_GPU = -DCUDA_GPU -DRPROMU_CPROJ_OVERLAP -DUSE_PINNED_MEMORY -DCUFFT_MIN=28 -UscaLAPACK OBJECTS_GPU = fftmpiw.o fftmpi_map.o fft3dlib.o fftw3d_gpu.o fftmpiw_gpu.oCC = iccCXX = icpcCFLAGS = -fPIC -DADD_ -Wall -openmp -DMAGMA_WITH_MKL -DMAGMA_SETAFFINITY -DGPUSHMEM=300 -DHAVE_CUBLAS CUDA_ROOT ?= /usr/local/cuda/NVCC := $(CUDA_ROOT)/bin/nvcc -ccbin=iccCUDA_LIB := -L$(CUDA_ROOT)/lib64 -lnvToolsExt -lcudart -lcuda -lcufft -lcublasGENCODE_ARCH := -gencode=arch=compute_30,code=\"sm_30,compute_30\" \-gencode=arch=compute_35,code=\"sm_35,compute_35\" \-gencode=arch=compute_60,code=\"sm_60,compute_60\"MPI_INC = $(I_MPI_ROOT)/include64/PS:笔者控制变量,将PSXE2020换成PSXE2019,还是会出现之前的问题,并没有测试使⽤fftw与否的影响。

vasp.5.2编译过程

Vasp.5.2编译⒈正常安装ifort编辑器(如vasp.4.6安装过程)修改环境变量# .bashrc# User specific aliases and functions# Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrc#IFORT=/home/usr1/intel/PATH="/home/usr1/intel/fce/9.0/bin":${PATH}PATH="/home/usr1/intel/idbe/9.0/bin":${PATH}export PATHMANPATH="/home/usr1/intel/fce/9.0/man":${MANPATH}MANPATH="/home/usr1/intel/idbe/9.0/man":${MANPATH}export MANPATHLD_LIBRARY_PATH="/home/usr1/intel/fce/9.0/lib":${LD_LIBRARY_PATH}export LD_LIBRARY_PATH#INTEL_LICENSE_FILE="/home/usr1/intel/licenses":$INTEL_LICENSE_FILEexport INTEL_LICENSE_FILE#fi⒉安装mkl⑴过程如vasp.4.6的过程⑵编译mkl的FFTW函数库:进入到opt/intel/mkl/xxxx/interfaces/fftw3xf(默认安装)的路径,在root权限下在终端键入make libem64t compiler=intel。

加入环境变量# .bashrc# User specific aliases and functions# Source global definitionsif [ -f /etc/bashrc ]; then. /etc/bashrcLD_LIBRARY_PATH="/opt/intel/mkl/10.0.1.014/lib/em64t":${LD_LIBRARY_PATH}INCLUDE="/opt/intel/mkl/10.0.1.014/include":${INCLUDE}export INCLUDE#fi⒊安装openmpi⑴解压文件,在终端中进入openmpi-xxxx(代表版本)的目录。

VASP编译


1、解压文件:
[root@yanshanwenbin* opt] tar jxvf Filename.tar.bz2
2.进入openmpi解压文件夹
[root@yanshanwe opt]: cd openmpi-1.6.5
3.安装前的配置问题。需要配置一个安装路径以及编译的程序。
export PATH=/opt/intel/impi/4.1.1.036/include64:$PATH
#source /etc/profile.d/paths.sh
!!!!!!到此VASP需要的文件安装完成##########
四.VASP编译
1.VASP.5.l的都是最新版本
在下载过程中提供邮箱获取序列号,从2011版ifort编译器开始已经自带MKL数学库,因此不需要在另外安装MKL数学库
一.ifort安装
1.下载ifort编译器(Intel非商业版)l_fcompxe_2013.4.183.tgz
export LD_LIBRARY_PATH=/opt/intel/composer_xe_2013.4.183/mkl/lib/intel64/:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/opt/intel/composer_xe_2013.4.183/compiler/lib/intel64/:$LD_LIBRARY_PATH
############makefile####################################
.SUFFIXES: .inc .f .F
#-----------------------------------------------------------------------

Vasp编译测试

Vasp编译三种情况(mkl+ifort,goto+ifort,goto2+ifort)Xuliang 2010-2-7安装编译环境:Cluster: rocks5.2(内核是centos5.2) dell opetix 960 四核酷睿Q960 8G内存,千兆交换机。

CentOS5.2+mkl 10.0.1.014+mpich 1.2.7+ifort 10.1.015三种情况下不同在于选用不同的blas库而已,下面蓝色有标注说明选用goto2+ifort+mpich速度几乎是前面两种的2倍(串行和并行),具体可以看下面的表格测试数据)。

有人测试5.2的说明附录在最后。

1、先编译得到intel的libfftw3xf_intel.a (不知道有没有人对比过不同fft对速度的影响)超级用户:cd /opt/intel/mkl/10.1.0.015/interfaces/fftw3xfmake libem64t compiler=intel2、Mpich 和intel编译器前面已经装好。

3、gotoblas库的编译:GotoBLAS2-1.13.tar.gz GotoBLAS-1.26.tar.gz编译goto2如下:解压后在目录下:make BINARY=64 FC=ifort CC=icc TARGET=CORE2编译goto如下:修改Makefile.rule:C_COMPILER = INTEL F_COMPILER = INTEL BINARY64 = 1然后./ quickbuild.64bit4、vasp编译过程:(红色为修改部分)Install VASP lib 修改如下:.SUFFIXES: .inc .f .F#-----------------------------------------------------------------------# Makefile for Portland Group F90/HPF compiler# the makefile was tested only under Linux on Intel platforms# however it might work on other platforms as well## this release of vasp.4.lib contains lapack v2.0# this can be compiled with pgf90 compiler if the option -O1 is used## Mind: one user reported that he had to copy preclib.F diolib.F# dlexlib.F and drdatab.F to the directory vasp.4.4, compile the files# there and link them directly into vasp# for no obvious reason these files could not be linked from the library##-----------------------------------------------------------------------# C-preprocessorCPP = icc -E -P -C $*.F >$*.fCC=iccFC=ifortCFLAGS = -OFFLAGS = -O3 -align -xT#FFLAGS = -I/opt/intel/mkl/10.0.1.014/include/fftw -FR -lowercase -assume byterec l $(OFLAGS)FREE = -FRDOBJ = preclib.o timing_.o derrf_.o dclock_.o diolib.o dlexlib.o drdatab.o#-----------------------------------------------------------------------# general rules#-----------------------------------------------------------------------libdmy.a: $(DOBJ) lapack_double.o linpack_double.o lapack_atlas.o-rm libdmy.aar vq libdmy.a $(DOBJ)# files which do not require autodoublelapack_min.o: lapack_min.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_min.flapack_double.o: lapack_double.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_double.flapack_single.o: lapack_single.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_single.flapack_atlas.o: lapack_atlas.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_atlas.flinpack_double.o: linpack_double.f$(FC) $(FFLAGS) $(NOFREE) -c linpack_double.flinpack_single.o: linpack_single.f$(FC) $(FFLAGS) $(NOFREE) -c linpack_single.f.c.o:$(CC) $(CFLAGS) -c $*.c.F.o:$(CPP)$(FC) $(FFLAGS) $(FREE) $(INCS) -c $*.f.F.f:$(CPP).f.o:$(FC) $(FFLAGS) $(FREE) $(INCS) -c $*.fCompile VASP parallel general-k verision by mpich.SUFFIXES: .inc .f .F#-----------------------------------------------------------------------# Makefile for Portland Group F90/HPF compiler# the makefile was tested only under Linux on Intel platforms# however it might work on other platforms as well## this release of vasp.4.lib contains lapack v2.0# this can be compiled with pgf90 compiler if the option -O1 is used## Mind: one user reported that he had to copy preclib.F diolib.F# dlexlib.F and drdatab.F to the directory vasp.4.4, compile the files# there and link them directly into vasp# for no obvious reason these files could not be linked from the library##-----------------------------------------------------------------------# C-preprocessorCPP = icc -E -P -C $*.F >$*.fCC=iccFC=ifortCFLAGS = -OFFLAGS = -O3 -align -xT#FFLAGS = -I/opt/intel/mkl/10.0.1.014/include/fftw -FR -lowercase -assume byterecl $(OFLAGS)FREE = -FRDOBJ = preclib.o timing_.o derrf_.o dclock_.o diolib.o dlexlib.o drdatab.o#-----------------------------------------------------------------------# general rules#-----------------------------------------------------------------------libdmy.a: $(DOBJ) lapack_double.o linpack_double.o lapack_atlas.o-rm libdmy.aar vq libdmy.a $(DOBJ)# files which do not require autodoublelapack_min.o: lapack_min.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_min.flapack_double.o: lapack_double.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_double.flapack_single.o: lapack_single.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_single.flapack_atlas.o: lapack_atlas.f$(FC) $(FFLAGS) $(NOFREE) -c lapack_atlas.flinpack_double.o: linpack_double.f$(FC) $(FFLAGS) $(NOFREE) -c linpack_double.flinpack_single.o: linpack_single.f$(FC) $(FFLAGS) $(NOFREE) -c linpack_single.f.c.o:$(CC) $(CFLAGS) -c $*.c.F.o:$(CPP)$(FC) $(FFLAGS) $(FREE) $(INCS) -c $*.f.F.f:$(CPP).f.o:$(FC) $(FFLAGS) $(FREE) $(INCS) -c $*.f[********************.6.34]$lsmakefile.4.6 vasp.4.6 vasp.4.libmakefile.lib vasp.4.6.tar.gz vasp.4.lib.tar.gz[********************.6.34]$moremakefile.4.6.SUFFIXES: .inc .f .f90 .F#-----------------------------------------------------------------------# Makefile for Intel Fortran compiler for P4 systems## The makefile was tested only under Linux on Intel platforms# (Suse 5.3- Suse 9.0)# the followin compiler versions have been tested# 5.0, 6.0, 7.0 and 7.1 (some 8.0 versions seem to fail compiling the code) # presently we recommend version 7.1 or 7.0, since these# releases have been used to compile the present code versions## it might be required to change some of library pathes, since# LINUX installation vary a lot# Hence check ***ALL**** options in this makefile very carefully#-----------------------------------------------------------------------## BLAS must be installed on the machine# there are several options:# 1) very slow but works:# retrieve the lapackage from # and compile the blas routines (BLAS/SRC directory)# please use g77 or f77 for the compilation. When I tried to# use pgf77 or pgf90 for BLAS, V ASP hang up when calling# ZHEEV (however this was with lapack 1.1 now I use lapack 2.0) # 2) most desirable: get an optimized BLAS## the two most reliable packages around are presently:# 3a) Intels own optimised BLAS (PIII, P4, Itanium)# /software/products/mkl/# this is really excellent when you use Intel CPU's## 3b) or obtain the atlas based BLAS routines# /# you certainly need atlas on the Athlon, since the mkl# routines are not optimal on the Athlon.# If you want to use atlas based BLAS, check the lines around LIB= ## 3c) mindblowing fast SSE2 (4 GFlops on P4, 2.53 GHz)# Kazushige Goto's BLAS# /users/kgoto/signup_first.html##-----------------------------------------------------------------------# all CPP processed fortran files have the extension .f90SUFFIX=.f90#-----------------------------------------------------------------------# fortran compiler and linker#-----------------------------------------------------------------------FC=ifort# fortran linkerFCL=$(FC)#-----------------------------------------------------------------------# whereis CPP ?? (I need CPP, can't use gcc with proper options)# that's the location of gcc for SUSE 5.3## CPP_ = /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -P -C## that's probably the right line for some Red Hat distribution:## CPP_ = /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/cpp -P -C## SUSE X.X, maybe some Red Hat distributions:CPP_ = ./preprocess <$*.F | /usr/bin/cpp -P -C -traditional >$*$(SUFFIX)#-----------------------------------------------------------------------# possible options for CPP:# NGXhalf charge density reduced in X direction# wNGXhalf gamma point only reduced in X direction# avoidalloc avoid ALLOCA TE if possible# IFC work around some IFC bugs# CACHE_SIZE 1000 for PII,PIII, 5000 for Athlon, 8000-12000 P4# RPROMU_DGEMV use DGEMV instead of DGEMM in RPRO (depends on used BLAS)# RACCMU_DGEMV use DGEMV instead of DGEMM in RACC (depends on used BLAS)#-----------------------------------------------------------------------#CPP = $(CPP_) -DHOST=\"LinuxIFC\" \-Dkind8 -DNGXhalf -DCACHE_SIZE=12000 -DPGF90 -Davoidalloc \# -DRPROMU_DGEMV -DRACCMU_DGEMV#-----------------------------------------------------------------------# general fortran flags (there must a trailing blank on this line)#-----------------------------------------------------------------------FFLAGS = -FR -lowercase -assume byterecl#-----------------------------------------------------------------------# optimization# we have tested whether higher optimisation improves performance# -axK SSE1 optimization, but also generate code executable on all mach.# xK improves performance somewhat on XP, and a is required in order# to run the code on older Athlons as well# -xW SSE2 optimization# -axW SSE2 optimization, but also generate code executable on all mach.# -tpp6 P3 optimization# -tpp7 P4 optimization#-----------------------------------------------------------------------#OFLAG=-O3 -xTOFLAG=-O3 -xT -static-intel -static -mtune=core2 -fp-model strictOFLAG_HIGH = $(OFLAG)OBJ_HIGH =OBJ_NOOPT =DEBUG = -FR -O0INLINE = $(OFLAG)#-----------------------------------------------------------------------# the following lines specify the position of BLAS and LAPACK# on P4, V ASP works fastest with the libgoto library# so that's what I recommend#-----------------------------------------------------------------------# Atlas based libraries#A TLASHOME= $(HOME)/archives/BLAS_OPT/A TLAS/lib/Linux_P4SSE2/#BLAS= -L$(A TLASHOME) -lf77blas -latlas# use specific libraries (default library path might point to other libraries)#BLAS= $(A TLASHOME)/libf77blas.a $(A TLASHOME)/libatlas.a# use the mkl Intel libraries for p4 ()# mkl.5.1# set -DRPROMU_DGEMV -DRACCMU_DGEMV in the CPP lines#BLAS=-L/opt/intel/mkl/lib/32 -lmkl_p4 -lpthread#BLAS= -L/opt/intel/mkl/10.0.1.014/lib/em64t -lmkl_em64t -lmkl_core -lmkl_intel_lp64 -lmkl_intel_thread \-lmkl_sequential -lmkl_solver_lp64 -lmkl_solver_lp64_sequential –lguide(注明:这样是mkl编译)# mkl.5.2 requires also to -lguide library# set -DRPROMU_DGEMV -DRACCMU_DGEMV in the CPP lines# even faster Kazushige Goto's BLAS# /users/kgoto/signup_first.html#BLAS= /opt/libs/libgoto/libgoto_p4_512-r0.6.soBLAS= /home/samuel/soft/lib/GotoBLAS/libgoto_penrynp-r1.26.so (注:这个是goto编译) #BLAS= /home/samuel/soft/lib/GotoBLAS2/libgoto2_core2p-r1.13.so (注:这个是goto2编译)# LAPACK, simplest use vasp.4.lib/lapack_doubleLAPACK= ../vasp.4.lib/lapack_double.o# use atlas optimized part of lapack#LAPACK= ../vasp.4.lib/lapack_atlas.o -llapack -lcblas# use the mkl Intel lapack#LAPACK= -lmkl_lapack#-----------------------------------------------------------------------#LIB = -L../vasp.4.lib -ldmy \../vasp.4.lib/linpack_double.o $(LAPACK) \$(BLAS)# options for linking (for compiler version 6.X, 7.1) nothing is requiredLINK =# compiler version 7.0 generates some vector statments which are located# in the svml library, add the LIBPA TH and the library (just in case)#LINK = -L/opt/intel/compiler70/ia32/lib/ -lsvml#-----------------------------------------------------------------------# fft libraries:# V ASP.4.6 can use fftw.3.0.X ()# since this version is faster on P4 machines, we recommend to use it#-----------------------------------------------------------------------#FFT3D = fft3dfurth.o fft3dlib.o#FFT3D = fftw3d.o fft3dlib.o /opt/libs/fftw-3.0.1/lib/libfftw3.a#===================================================================== ==# MPI section, uncomment the following lines## one comment for users of mpich or lam:# Y ou must *not* compile mpi with g77/f77, because f77/g77# appends *two* underscores to symbols that contain already an# underscore (i.e. MPI_SEND becomes mpi_send__). The pgf90/ifc# compilers however append only one underscore.# Precompiled mpi version will also not work## We found that mpich.1.2.1 and lam-6.5.X to lam-7.0.4 are stable# mpich.1.2.1 was configured with# ./configure -prefix=/usr/local/mpich_nodvdbg -fc="pgf77 -Mx,119,0x200000" \# -f90="pgf90 " \# --without-romio --without-mpe -opt=-O \## lam was configured with the line# ./configure -prefix /opt/libs/lam-7.0.4 --with-cflags=-O -with-fc=ifc \# --with-f77flags=-O --without-romio## please note that you might be able to use a lam or mpich version# compiled with f77/g77, but then you need to add the following# options: -Msecond_underscore (compilation) and -g77libs (linking)## Please do not send me any queries on how to install MPI, I will# certainly not answer them#===================================================================== ==#-----------------------------------------------------------------------# fortran linker for mpi: if you use LAM and compiled it with the options# suggested above, you can use the following line#-----------------------------------------------------------------------FC=/opt/mpich/intel/bin/mpif90FCL=$(FC)#-----------------------------------------------------------------------# additional options for CPP in parallel version (see also above):# NGZhalf charge density reduced in Z direction# wNGZhalf gamma point only reduced in Z direction# scaLAPACK use scaLAPACK (usually slower on 100 Mbit Net)#-----------------------------------------------------------------------CPP = $(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \-Dkind8 -DCACHE_SIZE=16000 -DPGF90 -Davoidalloc -DNGZhalf \-DMPI_BLOCK=8000 -DRPROMU_DGEMV -DRACCMU_DGEMV#CPP = $(CPP_) -DMPI -DHOST=\"LinuxIFC\" -DIFC \-Dkind8 -DNGZhalf -DCACHE_SIZE=4000 -DPGF90 -Davoidalloc \# -DMPI_BLOCK=500 \## -DRPROMU_DGEMV -DRACCMU_DGEMV#-----------------------------------------------------------------------# location of SCALAPACK# if you do not use SCALAPACK simply uncomment the line SCA#-----------------------------------------------------------------------#BLACS=$(HOME)/archives/SCALAPACK/BLACS/#SCA_=$(HOME)/archives/SCALAPACK/SCALAPACK#SCA= $(SCA_)/libscalapack.a \#$(BLACS)/LIB/blacsF77init_MPI-LINUX-0.a $(BLACS)/LIB/blacs_MPI-LINUX-0.a $(BLACS)/LIB/blacsF77init_MPI-LINUX-0.aSCA=#-----------------------------------------------------------------------# libraries for mpi#-----------------------------------------------------------------------LIB = -L../vasp.4.lib -ldmy \../vasp.4.lib/linpack_double.o $(LAPACK) \-L/opt/intel/mkl/10.0.1.014/lib/em64t \-lmkl_em64t -lguide -lpthread -lm \$(BLAS)# $(SCA) $(BLAS)# FFT: fftmpi.o with fft3dlib of Juergen FurthmuellerFFT3D = fftmpi.o fftmpi_map.o fft3dlib.o \/opt/intel/mkl/10.0.1.014/lib/em64t/libfftw3xf_intel.a# fftw.3.0.1 is slighly faster and should be used if available#FFT3D = fftmpiw.o fftmpi_map.o fft3dlib.o /opt/libs/fftw-3.0.1/lib/libfftw3.a#-----------------------------------------------------------------------# general rules and compile lines#-----------------------------------------------------------------------BASIC= symmetry.o symlib.o lattlib.o random.oSOURCE= base.o mpi.o smart_allocate.o xml.o \constant.o jacobi.o main_mpi.o scala.o \asa.o lattice.o poscar.o ini.o setex.o radial.o \pseudo.o mgrid.o mkpoints.o wave.o wave_mpi.o $(BASIC) \nonl.o nonlr.o dfast.o choleski2.o \mix.o charge.o xcgrad.o xcspin.o potex1.o potex2.o \metagga.o constrmag.o pot.o cl_shift.o force.o dos.o elf.o \tet.o hamil.o steep.o \chain.o dyna.o relativistic.o LDApU.o sphpro.o paw.o us.o \ebs.o wavpre.o wavpre_noio.o broyden.o \dynbr.o rmm-diis.o reader.o writer.o tutor.o xml_writer.o \brent.o stufak.o fileio.o opergrid.o stepver.o \dipol.o xclib.o chgloc.o subrot.o optreal.o davidson.o \edtest.o electron.o shm.o pardens.o paircorrection.o \optics.o constr_cell_relax.o stm.o finite_diff.o \elpol.o setlocalpp.oINC=vasp: $(SOURCE) $(FFT3D) $(INC) main.orm -f vasp$(FCL) -o vasp $(LINK) main.o $(SOURCE) $(FFT3D) $(LIB) makeparam: $(SOURCE) $(FFT3D) makeparam.o main.F $(INC)$(FCL) -o makeparam $(LINK) makeparam.o $(SOURCE) $(FFT3D) $(LIB) zgemmtest: zgemmtest.o base.o random.o $(INC)$(FCL) -o zgemmtest $(LINK) zgemmtest.o random.o base.o $(LIB) dgemmtest: dgemmtest.o base.o random.o $(INC)$(FCL) -o dgemmtest $(LINK) dgemmtest.o random.o base.o $(LIB)ffttest: base.o smart_allocate.o mpi.o mgrid.o random.o ffttest.o $(FFT3D) $(INC) $(FCL) -o ffttest $(LINK) ffttest.o mpi.o mgrid.o random.o smart_allocate.o base.o $(FFT3D) $(LIB)kpoints: $(SOURCE) $(FFT3D) makekpoints.o main.F $(INC)$(FCL) -o kpoints $(LINK) makekpoints.o $(SOURCE) $(FFT3D) $(LIB)clean:-rm -f *.g *.f *.o *.L *.mod ; touch *.Fmain.o: main$(SUFFIX)$(FC) $(FFLAGS)$(DEBUG) $(INCS) -c main$(SUFFIX)xcgrad.o: xcgrad$(SUFFIX)$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcgrad$(SUFFIX)xcspin.o: xcspin$(SUFFIX)$(FC) $(FFLAGS) $(INLINE) $(INCS) -c xcspin$(SUFFIX)makeparam.o: makeparam$(SUFFIX)$(FC) $(FFLAGS)$(DEBUG) $(INCS) -c makeparam$(SUFFIX)makeparam$(SUFFIX): makeparam.F main.F## MIND: I do not have a full dependency list for the include# and MODULES: here are only the minimal basic dependencies# if one strucuture is changed then touch_dep must be called# with the corresponding name of the structure#base.o: base.inc base.Fmgrid.o: mgrid.inc mgrid.Fconstant.o: constant.inc constant.Flattice.o: lattice.inc lattice.Fsetex.o: setexm.inc setex.Fpseudo.o: pseudo.inc pseudo.Fposcar.o: poscar.inc poscar.Fmkpoints.o: mkpoints.inc mkpoints.Fwave.o: wave.inc wave.Fnonl.o: nonl.inc nonl.Fnonlr.o: nonlr.inc nonlr.F$(OBJ_HIGH):$(CPP)$(FC) $(FFLAGS) $(OFLAG_HIGH) $(INCS) -c $*$(SUFFIX)$(OBJ_NOOPT):$(CPP)$(FC) $(FFLAGS) $(INCS) -c $*$(SUFFIX)fft3dlib_f77.o: fft3dlib_f77.F$(CPP)$(F77) $(FFLAGS_F77) -c $*$(SUFFIX).F.o:$(CPP)$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX).F$(SUFFIX):$(CPP)$(SUFFIX).o:$(FC) $(FFLAGS) $(OFLAG) $(INCS) -c $*$(SUFFIX)# special rules#-----------------------------------------------------------------------# these special rules are cummulative (that is once failed# in one compiler version, stays in the list forever)# -tpp5|6|7 P, PII-PIII, PIV# -xW use SIMD (does not pay of on PII, since fft3d uses double prec)# all other options do no affect the code performance since -O1 is used#-----------------------------------------------------------------------fft3dlib.o : fft3dlib.F$(CPP)$(FC) -FR -lowercase -O1 (注明:这里去掉了-tpp7)-xT -prefetch- -unroll0 (注明:这里去掉了-e95 )-vec_report3 -c $*$(SUFFIX)fft3dfurth.o : fft3dfurth.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)radial.o : radial.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)symlib.o : symlib.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)symmetry.o : symmetry.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)dynbr.o : dynbr.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)broyden.o : broyden.F$(CPP)$(FC) -FR -lowercase -O2 -c $*$(SUFFIX)us.o : us.F$(CPP)$(FC) -FR -lowercase -O1 -c $*$(SUFFIX)wave.o : wave.F$(CPP)$(FC) -FR -lowercase -O0 -c $*$(SUFFIX)LDApU.o : LDApU.F$(CPP)$(FC) -FR -lowercase -O2 -c $*$(SUFFIX) V asp编译测试:CentOS5.2+mkl 10.1.0.015+openmpi 1.3.2+ifort 11.0.074编译vasp5.2安装编译环境:Cluster简况:xeon 5420, 12G ram, 千兆交换机。

vasp编译

(1)准备1.sudo apt-get install g++sudo apt-get install build-essentialsudo apt-get install gcc-multilibsudo apt-get install libstdc++5sudo apt-get install openjdk-6-jre-headlesssudo apt-get install ia32-libssudo apt-get install lib32stdc++6sudo apt-get install libc6-dev-i386sudo apt-get install g++-multilibsudo apt-get install gfrotran1 2 3 tar -2. xzvf xxx #xxx 指压缩包的名称 cd 解压后目录 ./install.sh##########安装过程很简单,安装提示就行########安装完成后,修改环境变量1 vi ~/.bashrc在末尾添加source /opt/intel/bin/compilervars.sh intel64 (64位版本)source /opt/intel/bin/compilervars.sh ia32 (32位版本)1 source ~/.bashrc4. 编译mpi首先下载mpich2的安装文件1 2 3 4 5 6 tar mpich2压缩包cd 文件夹./configure --prefix=安装目录 f77=ifort f90=ifort fc=ifortmakemake installvi ~/.bashrc笔者安装目录在/opt/mpich2,也可以放在其他文件夹中,注意执行make install 用户需要有写入权限在文件最后写入如下代码1 2 3 4 #mpi2 startPATH=/usr/local/mpich2-1.2.1p1/bin:$PATHexport PATH#mpi2 end再source 一下1 source ~/.bashrc5.编译fftw1 2 3 4 5 tar 安装文件cd 文件夹./configure --prefix=安装目录 F77=ifort F90=ifort GCC=ifortmakemake install all6.编译vasp准备 vasp.5.2.tar.gz vasp.5.lib.tar.gz首先编译的是vasp.lib1 2 3 4 5 tar xzvf vasp.5.2.tar.gztar xzvf vasp.5.lib.tar.gzcd vasp.5.libcp makefile.linux_ifc_P4 makefilevi makefile修改19行的 ifc –>ifort1 make如果出现 error { gcc:error trying to wxec ‘f951′ :execvp : No such file or directory }这是gcc 的一个BUG ,解决方法是安装gfortran1 sudo apt-get install gfortran然后再重新编译接着编译vasp1 2 3 4 cd ../cd vasp.5.2cp makefile.linux_ifc_P4 makefilevi makefile主要有如下几个改动1 2 3 4 5 6 7 8 9 10 11 12 1row:53 FC=ifc-->FC=ifortrow:129 BLAS= /opt/libs/libgoto/libgoto.so-->#BLAS= /opt/libs/libgoto/libgoto.sorow:132 LAPACK= ../vasp.5.lib/lapack_double.o-->#LAPACK= ../vasp.5.lib/lapack_double.o row:135后添加新行MKLINCLUDE=/opt/intel/mkl/include/MKLPATH=/opt/intel/mkl/lib/intel64/BLASLAPACK=-L/opt/intel/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -l iomp5 -lpthread#LIB = -L../vasp.5.lib -ldmy \../vasp.5.lib/linpack_double.o $(LAPACK) \$(BLAS)LIB = -I$(MKLINCLUDE) -L$(MKLPATH) \-L../vasp.5.lib -ldmy \$(BLASLAPACK) \../vasp.5.lib/linpack_double.o31 4 1 5 1 6 1 7 1 8 #158 ff3d后加入库的目录(根据安装ff3d的位置来)FFT3D = fft3dfurth.o fft3dlib.o /usr/local/lib/libfftw3.a然后make,如果没有编译错误那应该是编译成功了,会产生一个vasp的可执行文件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档