2014-02-23 21:14:14 初稿
2014-03-08 12:09:09 修订
编译
-
解压
tar -xzvf gamess-current.tar.gz
-
环境配置
./config
- 目标平台: 利用
uname -a
可知, 一般为linux64 - 源码路径: 当前路径
- 安装路径: 当前路径, 也可使用其他, 如
./bin
- 版本号: 用作不同版本标识, 默认00
- FORTRAN编译器: 根据系统选择. 若使用ifort, 须选择版本
- 数学库: 若使用ifort, 则选MKL, 并指定路径如
/share/apps/intel/composer_xe_2013.2.146/composer_xe_2013.2.146/mkl
.
若该路径下不存在多个版本MKL, 下一步直接skip - 激活代码编译: 编译actvte.f, 成功, 此程序用于后面编译前源代码的处理
ifort -o /home/jicun/GMS/tools/actvte.x actvte.f
- 网络设置: 并行, 选择mpi
- mpi库: 若使用ifort, 可用impi, 并设定路径如
/share/apps/intel/impi/4.1.0.030
- 使用LIBCCHEM加速MP2和CCSD(T)与否, 须GPU支持. 一般不使用
配置成功, 会在安装路径内产生install.info和Makefile两个文件, 并提示参看
./machines/readme.unix
实际上,
config
脚本只适合用于第一次配置环境, 得到install.info和Makefile后, 若想更改设置再次编译, 直接编辑已有的install.info和Makefile即可. 下面是两个文件的内容install.info(GMS_MKL_VERNO为12不影响链接时使用MKL 13.0)
# Language: bash #!/bin/csh # compilation configuration for GAMESS # generated on compute1131 # generated at Sat Mar 8 12:22:27 CST 2014 setenv GMS_PATH /home/jicun/GMS setenv GMS_BUILD_DIR /home/jicun/GMS # machine type setenv GMS_TARGET linux64 # FORTRAN compiler setup setenv GMS_FORTRAN ifort setenv GMS_IFORT_VERNO 13 # mathematical library setup setenv GMS_MATHLIB mkl setenv GMS_MATHLIB_PATH /share/apps/intel/composer_xe_2013.2.146/composer\_xe\_2013.2.146/mkl/lib/intel64 setenv GMS_MKL_VERNO 12 # parallel message passing model setup setenv GMS_DDI_COMM mpi setenv GMS_MPI_LIB impi setenv GMS_MPI_PATH /share/apps/intel/impi/4.1.0.030 # LIBCCHEM CPU/GPU code interface setenv GMS_LIBCCHEM false
若使用sockets, 最后几行改为
# Language: bash # parallel message passing model setup setenv GMS_DDI_COMM sockets
Makefile
# Language: bash GMS_PATH = /home/jicun/GMS GMS_VERSION = 00 GMS_BUILD_PATH = /home/jicun/GMS include $(GMS_PATH)/Makefile.in
- 目标平台: 利用
-
编译
./compall >& compall.log
. 请耐心.
ifort的编译选项, 可在comp文件1870行修改,
可增加-xHost -axAVX -opt_report -static
优化默认为-O2
, 也可使用-O3 -fast
, 但须测试 -
编译ddi库:
cd ddi; ./compddi
-
链接
./lked GAMESS 00 >& lked.log
静态链接, 可在1393行增加-static-intel
使用-static
可能会选项-lrt
冲突, 从而导致链接失败
使用
rungms File.inp #version Ncpu PPN
脚本中需要修改的地方
- 62-65: 设定mpi和路径
-
95: 若使用的PBS系统不能自动创建以作业号为名的文件夹, 须修改为
# Language: bash set SCR=$SCR/$PBS_JOBID mkdir -p $SCR
- 828: 设定
mpiexec
路径 - 843: 此行以后, 清除运行过程中产生的中间文件, 可惜同时也会把输出文件清除, 可添加
exit
语句, 保留所有中间文件, 自行处理.
实际上, rungms
脚本为照顾不同系统使用, 添加了很多与系统相关的代码, 若只在特定系统下运行, 可将其他系统相关的代码删除.
IMPI并行时可能的问题
-
计算完成后, 最终输出显示
gamess.00.x: dapl/common/dapl_evd_util.c:1187: dapli_evd_cqe_to_event:
Assertion !"Invalid Operation type"' failed.
同时dump一个很大的core.xxx. 原因未明. 可能与IMPI库有关. 可利用
ulimit -c 0
关闭吐核. -
rungms
脚本中, Nproc = Nmpi = 2 Ncpu = 2 Ncore, 源于GMS运行两个进程, 一个计算, 另一个做data serve -
GMS使用内存计算方法: MEM(GB/CPU) = [MW + DDI/Ncpu]/128