科学计算软件编译安装方法说明 — BerkeleyGW篇 (提供免费测试 QQ 178068275)
官网:
http://www.berkeleygw.org/
下载:
需要注册下载软件。
1.什么是BerkeleyGW?
The BerkeleyGW Package is a set of computer codes thatcalculates the quasiparticle properties and the optical responses of a largevariety of materials from bulk periodic crystals to nanostructures such asslabs, wires and molecules. The package takes as input the mean-field resultsfrom various electronic structure codes such as the Kohn-Sham DFT eigenvaluesand eigenvectors computed with PARATEC, Quantum ESPRESSO, SIESTA,Octopus, orTBPW (aka EPM).
2.编译环境?
如果是串行版本,需要例如Intel Compiler或者GNU Compiler编译器,如果是并行版本,还额外需要例如mpich/openmpi等mpi的编译器。
3. 安装 Intel Compiler 编译器,设置编译环境
如果使用的是Intel的CPU,建议使用Intel的编译器。
详细安装方法参见博客相关文章。
例如使用TH-1A的Intel 2013编译器编译 vasp,可以加载如下环境变量:
source /opt/intel/composer_xe_2013.0.079/bin/iccvars.sh intel64
source /opt/intel/composer_xe_2013.0.079/bin/ifortvars.sh intel64
source /opt/intel/composer_xe_2013.0.079/mkl/bin/mklvars.sh intel64
4.安装 MPI Compiler,设置编译环境
编译并行版的程序需要并行编译器,例如MPI并行的程序需要MPI编译器,常用的MPI例如Intel MPI 、MPICH 、OPENMPI等。
不同的机器可能针对自身硬件进行MPI优化,天河系统的MPI是基于开源MPICH进行的二次开发优化,进而支持性能卓越的天河自主高速互联网络。
详细安装方法参见博客相关文章。
例如使用TH-1A的Intel 2013编译器编译的mpich,可以加载如下环境变量:
export MPI_HOME=/usr/local/mpi-intel2013
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
5.编译软件
5.1 设置编译环境
参考上面的3、4部分。
5.2 配置文件
以1.0.6版本为例:
tar zxvf BerkeleyGW-1.0.6.tar.gz
cd BerkeleyGW-1.0.6
arch.mk文件
在config文件夹中,有README文件,是arch.mk文件的模板,可以依据自己的实际情况进行修改,也可以参考config文件夹中的文件。
后面章节会有详细介绍,此处仅给出结果。
cp config/README arch.mk
依据实际情况修改arch.mk即可。
flavor.mk文件
如果编译real版本:
cp flavor_real.mk flavor.mk
如果编译cplx版本:
cp flavor_cplx.mk flavor.mk
5.2 make & make install
make all 2>&1 |tee m.log
time make install INSTDIR=$HOME/software/berkeleyGW-1.0.6 \
2>&1 |tee mi.log
INSTDIR参数指明了安装到哪个目录。
6.设置环境变量
编译好后,设置一下环境变量就可以使用了,设置方法如下:
export BGW_HOME=$HOME/software/berkeleyGW-1.0.6
export PATH=$BGW_HOME/bin:$PATH
export LD_LIBRARY_PATH=$BGW_HOME/lib:$LD_LIBRARY_PATH
7.arch.mk文件详解
英文好的朋友,可以直接阅读berkeleyGW-1.0.6/config/README即可,下面列出主要的参数及说明。
编译参数详解
参数 | 值 | 备注 |
---|---|---|
COMPFLAG | -DINTEL | 编译器类型,常用的还可以选择-DPGI, -DGNU |
PARAFLAG | -DMPI | 并行参数,加上就是编译并行版本,否则是串行版本 |
MATHFLAG | -DUSESCALAPACK -DUSEESSL -DUNPACKED | 数学库参数,-DUSESCALAPACK是使用ScaLAPACK数学库,-DUSEESSL是部分代码使用ESSL代替LAPACK, -DUNPACKED在EPM中优先使用解压缩的哈密顿算子。通常使用第一个就可以。 |
DEBUGFLAG | -DDEBUG -DVERBOSE | debug参数,对于fortran和C++,-DDEBUG开启额外的检查,-DVERBOSE输出额外的信息 |
C_DEBUGFLAG | -DDEBUG | debug参数,对于c,-DDEBUG开启额外的检查 |
FCPP | cpp -ansi | 预处理器参数 |
F90free | mpif90 -free -fopenmp | fortran编译器参数,mpif90为编译器的名称,-free参考的是ifort参数,-fopenmp是为了支持多线程的参数 |
LINK | mpif90 -fopenmp | 链接器参数,mpif90为编译器的名称,-fopenmp是为了支持多线程的参数 |
FOPTS | -O3 | fortran编译优化参数,-O3 是常用的基本优化参数,还有很多,不同编译器也不一样 |
FNOOPTS | $(FOPTS) | fortran编译优化参数,特别针对epsilon_main和sigma_main的。因为-O3可能会遇到报错,所以额外设置该参数 |
MOD_OPT | -module | fortran编译参数,指明module被创建的位置,针对不同编译器是不同的,-module是ifort的参数 |
C_PARAFLAG | -DPARA | c++并行编译参数,并行编译保留该参数,串行编译清空该参数 |
CC_COMP | mpicxx | C++编译命令和参数 |
C_COMP | mpicc | C编译命令和参数 |
C_LINK | mpicxx | C/C++连接命令和参数 |
C_OPTS | -O3 | C/C++编译优化参数 |
REMOVE | /bin/rm -f | 删除命令,用于make clean |
数学库参数详解
FFTW库
通用的fftw
FFTWPATH = /path/to/fftw # FFTW库的路径,注意修改为实际路径,
FFTWLIB = -L$(FFTWPATH)/lib -lfftw
FFTWINCLUDE = $(FFTWPATH)/include
或者选择 intel mkl的fftw接口
FFTWPATH = $(MKLROOT)
FFTWLIB = -L$(MKLROOT)/interfaces/fftw2xf -lfftw2xf_intel
FFTWINCLUDE = $(MKLROOT)/include/fftw
LAPACK库
这个库有很多种,在这里给出mkl库的实现,及写法:
LAPACKLIB = -Wl,--start-group \
$(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \
$(MKLROOT)/lib/intel64/libmkl_sequential.a \
$(MKLROOT)/lib/intel64/libmkl_core.a \
-Wl,--end-group -lpthread
SCALAPACK库
SCALAPACKLIB = $(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a \
$(MKLROOT)/lib/intel64/libmkl_blacs_intelmpi_lp64.a
testscript
参数 | 值 | 备注 |
---|---|---|
TESTSCRIPT | qsub {architecture}.scr | 如果是pbs作业管理系统 |
TESTSCRIPT | make check-parallel | 如果是其他情况 |
以上就是该软件编译安装的全部内容。
欢迎交流!