分子动力学软件 Gromacs-2022 Windows x64版

由Visual Studio 2022编译而成,其中FFTW采用单精度版本;SIMD编译选项采用SSE4.1。

图1 文件示意图

文件链接:https://donothing.cn/NetDisk

GROMACS官方源码:https://manual.gromacs.org/current/download.html

2022.12.31

前面编译的是不包含GPU的版本,编译gromacs的GPU版历经许多波折,但在2022年结束之际终于编译成功。

在Windows上使用Visual Studio来编译GMX_GPU模块,主要面临两个问题,

  1. gmxManageNvccConfig.cmake 中 GMX_CUDA_NVCC_FLAGS 标识符解析错误问题
  2. Cmake的(-MD -MT)编译链接问题

问题1 通过修改自定义标识符来匹配MSVC编译器,即

if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8)
    list(APPEND GMX_CUDA_NVCC_FLAGS "${CMAKE_CXX14_STANDARD_COMPILE_OPTION}")
else()
    list(APPEND GMX_CUDA_NVCC_FLAGS "-std=c++17")
endif()

问题2 由Cmake默认为MSVC启用-MD编译链接选项引发。具体可查看Cmake手册中CMAKE_MSVC_RUNTIME_LIBRARY字段解释,可以通过自定义以下标识符解决,

if(MSVC)
    set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
    check_cxx_source_compiles("#include <intrin.h>\n int main(){unsigned long r;unsigned long i=1;_BitScanReverse(&r,i);return r;}" HAVE_BITSCANREVERSE)
    check_cxx_source_compiles("#include <intrin.h>\n int main(){unsigned long r;unsigned __int64 i=1;_BitScanReverse64(&r,i);return r;}" HAVE_BITSCANREVERSE64)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "XL")
    check_cxx_source_compiles("int main(){ return __cntlz4(1);}" HAVE_CNTLZ4)
    check_cxx_source_compiles("int main(){ return __cntlz8(1);}" HAVE_CNTLZ8)
endif()

2 INSTALL CP2K WITH GROMACS TO DO QM/MM

install CP2K with gromacs to do qm/mm – dltools
Installation guide – GROMACS 2023.4 documentation

INSTALL CP2K WITH GROMACS TO DO QM/MM
发表评论 / Uncategorized / 作者: duanlian0810

编译cp2k时,开启libcp2k选项

make ARCH=<your arch file> VERSION=<your version like psmp> libcp2k

FFT, BLAS and LAPACK应该与cp2k编译时一致,

# sudo apt install mpich
sudo tar -zxvf gromacs-2022.tar.gz
cd gromacs-2022
plumed patch -p
# choose 2022.3
mkdir build
cd build

# use sudo to install!!!
# no need to specify the fftw2 location and need to renew version of oppenblas and scalapack.

cmake ..  -DBUILD_SHARED_LIBS=OFF -DGMXAPI=OFF -DGMX_INSTALL_NBLIB_API=OFF -DGMX_DOUBLE=ON -DGMX_CP2K=ON -DCP2K_DIR=/home/eli/program/cp2k-9.1/lib/local/ssmp -DGMX_FFT_LIBRARY=fftw3 -DFFTWF_LIBRARY=/home/eli/program/cp2k-9.1/tools/toolchain/install/fftw-3.3.8/lib  -DFFTWF_INCLUDE_DIR=/home/eli/program/cp2k-9.1/tools/toolchain/install/fftw-3.3.8/include  -DGMX_BLAS_USER=/home/eli/program/cp2k-9.1/tools/toolchain/install/openblas-0.3.19/lib/libopenblas.a  -DGMX_LAPACK_USER=/home/eli/program/cp2k-9.1/tools/toolchain/install/scalapack-2.1.0/lib/libscalapack.a -DGMX_MPI=ON

#cmake .. -DBUILD_SHARED_LIBS=OFF -DGMXAPI=OFF -DGMX_INSTALL_NBLIB_API=OFF -DGMX_DOUBLE=ON-DGMX_FFT_LIBRARY=fftw3 -DFFTWF_LIBRARY=/opt/cp2k-2023.1/tools/toolchain/install/fftw-3.3.10/lib -DFFTWF_INCLUDE_DIR=/opt/cp2k-2023.1/tools/toolchain/install/fftw-3.3.10/lib/libfftw3.a -DGMX_BLAS_USER=/opt/cp2k-2023.1/tools/toolchain/install/openblas-0.3.21/lib/libopenblas.a -DGMX_LAPACK_USER=/opt/cp2k-2023.1/tools/toolchain/install/scalapack-2.2.1/lib/libscalapack.a -DGMX_CP2K=ON -DCP2K_DIR="/opt/cp2k-2023.1/lib/local/psmp" -DGMX_MPI=on
# -DGMX_BUILD_OWN_FFTW=ON
make -j24
make install

希望你能够评论一下我,这样我就可以给你点赞了💖