|
本帖最后由 ChemiAndy 于 2018-3-10 18:19 编辑
CPMD发布新版本 V4.1 简介
下述教程介绍在以Ubuntu 14.04/12.04为核心的服务器上的并行编译过程,适用于Linuxmint 17, elementOS等众多版本。在这些发行版中,可通过apt-get安装并行编译器和所需的所有数学库。
注意FFTW有fftw2和fftw3两种版本,此教程使用fftw3。
1. 准备
- sudo apt-get install build-essential gcc gfortran subversion //编译器gcc4.6或者4.8均可通过
- sudo apt-get install libopenmpi-dev openmpi-bin //openmpi V1.6并行编译器
- sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev libfftw3-dev libfftw3-3 // 必要的各种数学库
复制代码
2. 编译
下载cpmd-v4.1.tar.gz 解压后进入CPMD目录
- tar zxfv cpmd-v4.1.tar.gz
- cd CPMD
- ./configure.sh PLATFORM
- ./configure.sh LINUX-X86_64-FEDORA-MPI-FFTW
复制代码
执行上面命令成功后,会生成一个Makefile文件在当前目录。然后打开修改platform-dependent stuff部分的前5行。这5行控制了cpmd的编译和硬件优化。
- #########################################################################
- # platform-dependent stuff
- # this section is built by the configure.sh script: no manual editing
- # should be required.
- #########################################################################
- FFLAGS = -O2 -I/usr/lib/openmpi/include -I${SRCDIR} -I${OBJDIR}
- LFLAGS = -L/usr/lib -llapack -lblas -lfftw3-L/usr/lib/openmpi/lib -lmpi_f90 -lmpi_f77 -lmpi -ldl -lhwloc -pthread
- CFLAGS = -O2 -Wall
- CPP =
- CPPFLAGS = -D__Linux -D__GNU -D__PARALLEL -D__HAS_FFT_FFTW3 -DPOINTER8 \
- -D'SVN_REV="r$(shell svnversion -n /home/xijun/temp/CPMD)"'
复制代码
保存以后输入make即开始编译。
如无错误,则在CPMD/bin目录下生成cpmd.x。
重新编译前要 make clean,即可把之前编译生成的文件删除掉
运行时需将cpmd.x复制到运行作业所在的当前目录,或者将cpmd.x添加到PATH搜索路径中。后者操作如下:
修改.bashrc,添加如下一行:
- export PATH=$PATH:~/CPMD/bin
复制代码
(1) .bashrc文件在用户根目录下,即/home/xxxx,xxxx你的用户名,此目录亦可用~代替
(2) ~/CPMD/bin假定你的cpmd.x在该目录下。如果不是请做相应修改。
(3) 修改保存后重启终端,或者运行如下命令使修改生效:
source ~/.bashrc
运行方式:
- (1) 串行: cpmd.x xxx.inp ~/path/PP > xxx.log
- (2) 并行: mpirun -n 4 cpmd.x xxx.inp ~/path/PP > xxx.log
复制代码 其中,xxx是你的作业文件名;~/path/PP是赝势文件所在的路径; -n 4表示4核并行。
编译错误:
(1) /usr/bin/ld: cannot find -lfftw3 则是因为fftw3安装问题,运行 sudo apt-get install libfftw3-dev libfftw3-3解决。
3. 测试
下载测试包cpmd-test.tar.gz解压后进入CPMD-test/properties,将刚编译好的cpmd.x和cpmd2cube.x复制到该目录下,然后运行
测试并行,则修改runme-b2h6.sh,将所有的./cpmd.x前面添加:
- mpirun -n 4 ./cpmd.x //4核并行
复制代码 阅读README和和新生成的LocalErrorN.log文件(N=0,1,2,3).后者会提示PROJECT WAVEFUNCTION AND LOCALIZATION ARE INCOMPATIBLE,表示两种性质不能同时计算。这个错误貌似是早期版本和最新版本的输入文件不兼容造成的,并非编译有错。
4. LFLAGS中一些参数的意义
-lmpi
libmpi.so 并行支持
-lhwloc
libhwloc.so Hardware Locality (hwloc) 硬件检测库文件,有助于编译高性能代码
-ldl
libdl.so libc6包中的一个库,内含动态链接函数dynamic linking
5. 一些反馈(更新中)
(1) 关于mpirun, 如果你原先安装了intel编译器及其mpirun版本,那么就会与本例的gcc的mpirun版本冲突。
解决方法是:在.bashrc中comment掉(行前加#)intel编译器启动行,source ~/.bashrc或者重启,然后运行which mpirun,如果返回/usr/bin/mpirun就对了。
如果还是不行,就卸载掉gcc mpirun然后重装
sudo apt-get remove openmpi-bin libopenmpi-dev
sudo apt-get install openmpi-bin libopenmpi-dev
(2) 补丁问题目前4.1版本下有三个补丁
patch3808-3812.txt : QM/MM界面模块IPhigenie,以及手册manual.tex的补丁
patch3812-3813.txt : 手册manual.tex
patch3815-3816.txt:QM/MM的补丁
如果用到补丁涉及的功能,就一定要打上补丁。方法是在CPMD目录下依次执行:
patch -p0 < patch3808-3812.txt
patch -p0 < patch3812-3813.txt
patch -p0 < patch3815-3816.txt
注意:要按照补丁号的大小顺序执行
6. 其他版本编译
(1) 3.17版本:Lofter
打不开试试这个链接:Sina Blog
(2) 3.15版本:
【CPMD4.1在Ubuntu16.04/Linuxmint 18.2下的并行编译】在Ubuntu16.04/Linuxmint 18.2下按照上述方法编译CPMD4.1,你会发现编译出错提示:
/usr/bin/ld: cannot find -lmpi_f90
/usr/bin/ld: cannot find -lmpi_f77
这是因为openmpi在这个发行版中有变化,编译时不再需要libmpi_f90.a和libmpi_f77.a。直接将Makefile中的LFLAGS行中的-lmpi_f90 -lmpi_f77删除即可。
LFLAGS = -L/usr/lib -llapack -lblas -lfftw3-L/usr/lib/openmpi/lib -lmpi -ldl -lhwloc -pthread
|
评分 Rate
-
查看全部评分 View all ratings
|