1. QUICK 的编译
$ cmake .. -DCOMPILER=GNU -DMPI=TRUE -DCUDA=TRUE -DQUICK_USER_ARCH=turing -DCMAKE_INSTALL_PREFIX=/opt/QUICK-QUICK-22.03
注意这里 QUICK_USER_ARCH 选项要根据自己的显卡设置,GTX 1660 属于 Turing 架构,所在这里写了 Turing。如果是其他的显卡请自己查。cmake 最后会给出一个 Summary,可以检查一下有没有问题。
-- **************************************************************************
-- Build Report
-- Compiler Flags:
-- C No-Opt: -O0
-- C Optimized: -O2 -mtune=native
--
-- CXX No-Opt: -O0
-- CXX Optimized: -O2 -mtune=native
--
-- Fortran No-Opt: -ffree-line-length-none -cpp -O0
-- Fortran Optimized: -ffree-line-length-none -cpp -O2 -mtune=native
--
-- 3rd Party Libraries
-- ---building bundled: -----------------------------------------------------
-- ---using installed: ------------------------------------------------------
-- mkl - alternate implementation of lapack and blas that is tuned for speed
-- ---disabled: ------------------------------------------------
-- blas - for fundamental linear algebra calculations
-- lapack - for fundamental linear algebra calculations
-- mirp - MolSSI Integral Reference Project library for computing the Boys function in QUICK
-- Features:
-- MPI: ON
-- CUDA: ON
-- Build Shared Libraries: ON
-- Build configuration: RELEASE
-- Target Processor: x86_64
-- Build Documentation: OFF
-- Install location: /opt/QUICK-QUICK-22.03/
-- Compilers:
-- C: GNU 9.4.0 (/usr/bin/gcc)
-- CXX: GNU 9.4.0 (/usr/bin/g++)
-- Fortran: GNU 9.4.0 (/usr/bin/gfortran)
-- **************************************************************************
-- Configuring done (9.7s)
-- Generating done (0.5s)
-- Build files have been written to: /opt/QUICK-QUICK-22.03/build
然后就可以编译安装了。
$ make -j20
$ make install
使用之前需要 source 一下 /opt/QUICK-QUICK-22.03/quick.rc 这一文件,以设置 QUICK 的相关环境变量。
2. QUICK 使用
QUICK 使用基本在手册里讲得挺清楚了,见
User Manual 和
Hands-on Tutorials。输入文件还挺好写的,Hands-on Tutorial 里讲得还挺清楚,但居然没讲到自旋多重度怎么设置,后来翻来一下源码发现是 MULT=,这里绝大多数软件一样是 2S + 1(某蓝拱门是 2S)。看了一下支持的计算级别有 HF 和 DFT,计算任务有单点,梯度和优化。上次看到介绍 QUICK 的帖子里说 QUICK 还不支持色散校正了,现在已经可以用了。
编译 CUDA 版本时候,会一同编译出 quick, quick.MPI, quick.cuda, 和 quick.cuda.MPI。其中带 MPI 后缀的是 MPI 并行版,不带 cuda 的是 CPU 版本。运行方式如下:
$ quick water.in & # CPU 串行
$ mpirun -np 10 quick.MPI water.in & # CPU 并行
$ quick.cuda water.in & # 一块 GPU 上跑
$ mpirun -np 2 quick.cuda.MPI water.in & # 两块 GPU 上跑
3. Gaussian + QUICK = Gauick
QUICK 能算单点和梯度还有优化,但好像不能算频率,以及优化过渡态。看了一下 QUICK 的输入文件比较好构造,输出文件比较好解析,就写了一个 Python 脚本和 Gaussian 联用好了!取了个名字叫 Gauick,代码在 GitHub 上开源了,仓库
https://github.com/mizu-bai/Gauick,欢迎 star。
用法和 gmm.py 挺像的,因为就是用 gmm.py 改的。有一个 gauick.json 配置文件,长这个样子:
{
"exec": "mpirun -np 1 quick.cuda.MPI",
"job": "DFT B3LYP GD3BJ BASIS=6-31G*"
}
"exec" 指定了用哪个 QUICK 可执行文件,"job" 指定了计算级别,如果是开壳层分子记得在 HF 或 DFT 前面加个 U。
Gaussian 输入文件写法如下,这是一个水分子的 opt + freq 任务,由于解析了 QUICK 输出的偶极矩,因此 Gaussian 输出的频率分析可以看到红外强度。
%nproc=1
%chk=water.chk
#p external="python3 -u gauick.py" opt=nomicro
water
0 1
O -0.06756756 -0.31531531 0.00000000
H 0.89243244 -0.31531531 0.00000000
H -0.38802215 0.58962052 0.00000000
--link1--
%nproc=1
%chk=water.chk
#p external="python3 -u gauick.py" freq=num geom=allcheck
过渡态和 IRC 可以去看看
gmm.py 里是怎么写的,几乎一样。
4. 总结
折腾了一下 QUICK 软件的编译和运行,开发了一个 Gaussian 与 QUICK 联用的脚本。但是根据笔者测试,分子小的时候 QUICK 自己的 CPU 串行甚至都可能比 CPU MPI 并行或 CUDA 版本要快。由于做优化的时候,还没折腾出 QUICK 读取自己的波函数做初猜,因此接了 Gaussian 优化每一步都要从头进行 SCF 迭代。频率计算部分,只能半数值做频率,因此整个 opt + freq 任务跑起来比 Gaussian 慢不少。暂时感觉没什么使用价值,反正折腾折腾玩得挺有意思就是了。
gauick.py
(3.52 KB, 下载次数 Times of downloads: 5)