GROMACS with fftpack

Windows原生环境下使用MinGW和CMake编译使用fftpack的GROMACS。
GROMACS源代码下载:GROMACS下载地址
工具准备:MinGWCMakePython

从Github上MinGW的release页面下载x86_64-[版本号]-release-win32-seh-ucrt-rt_v12-rev0.7z版MinGW编译器,并解压到任意目录,比如 D:/mingw64 。将 D:/mingw64/bin 目录添加到系统环境变量PATH中。在PowerShell中使用 gcc --versiong++ --version 命令查看版本验证MinGW是否安装成功。从CMake和Python官网下载对应Windows系统版本的安装程序,安装时勾选添加到环境变量。安装完成后在PowerShell中使用 cmake --versionpython --version 查看版本信息验证安装。

下载GROMACS源代码,解压到任意目录,比如 F:/VSCodeFile/GROMACS/ 。使用 tar -zxvf [源代码文件名] 解压GROMACS源代码,并进入该目录。在PowerShell中执行以下命令:

1
2
3
cd F:/VSCodeFile/GROMACS
tar -zxvf gromacs-2024.5.tar.gz
cd gromacs-2024.5

进入解压目录后,使用以下指令构建CMake项目:

1
2
cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=F:/GROMACS-fftpack -DGMX_FFT_LIBRARY=fftpack -DCMAKE_BUILD_TYPE=Release
cmake --build build --target install

cmake参数解释:
-S . 指定当前目录作为源代码目录;
-B build 指定构建目录为build文件夹,用于存放编译过程中生成的文件;
-G "MinGW Makefiles" 指定使用MinGW的Makefile生成器。”MinGW Makefiles”生成器会构建MinGW编译器的makefile文件。使用 cmake -G 查看所有可用的生成器;
-DCMAKE_INSTALL_PREFIX=指定的GROMACS安装路径 ,比如作者的安装路径 F:/GROMACS-fftpack
-DGMX_FFT_LIBRARY=fftpack 指定使用fftpack库支持FFT (Fast Fourier Transform) 计算。还可以使用fftw3,mkl等其他库;
-DCMAKE_BUILD_TYPE=Release 指定编译类型为发布模式,编译器一般会对Release模式进行优化,提高运行效率;
--build build 指定CMake构建目录,进行编译安装;
--target install 构建install目标,使用CMakeLists.txt中的install()命令进行安装;
更多编译选项可查看GROMACS官方文档

等待编译完成后,GROMACS二进制文件安装到了F:/GROMACS-fftpack/bin目录下。将 F:/GROMACS-fftpack/bin 目录添加到系统环境变量PATH中,即可使用,即可在windows的CMD或PowerShell中使用gmx命令。使用 gmx -version 命令查看GROMACS版本信息,验证安装是否成功,输出以下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
PS C:\Users\TTT> gmx -version
:-) GROMACS - gmx, 2024.5 (-:

Executable: F:\GROMACS-fftpack\bin\gmx.exe
Data prefix: F:\GROMACS-fftpack
Working dir: C:\Users\TTT
Command line:
gmx -version

GROMACS version: 2024.5
Precision: mixed
Memory model: 64 bit
MPI library: thread_mpi
OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128)
GPU support: disabled
SIMD instructions: SSE2
CPU FFT library: fftpack (built-in)
GPU FFT library: none
Multi-GPU FFT: none
RDTSCP usage: enabled
TNG support: enabled
Hwloc support: disabled
Tracing support: disabled
C compiler: D:/mingw64/bin/gcc.exe GNU 13.2.0
C compiler flags: -fexcess-precision=fast -funroll-all-loops -msse2 -Wno-missing-field-initializers -O3 -DNDEBUG
C++ compiler: D:/mingw64/bin/c++.exe GNU 13.2.0
C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -msse2 -Wno-missing-field-initializers -Wno-cast-function-type-strict SHELL:-fopenmp -O3 -DNDEBUG
BLAS library: Internal
LAPACK library: Internal

GROMACS with fftw3

Windows系统上使用MSYS2环境编译fftw3库。使用Windows原生环境编译使用fftw3库的GROMACS。
下载安装MSYS2。打开MSYS2 UCRT64终端,使用以下指令安装MinGW,Python,sphinx,安装过程中输入y确认安装。

1
2
3
pacman -S mingw-w64-ucrt-x86_64-gcc
pacman -S mingw-w64-ucrt-x86_64-python
pacman -S mingw-w64-ucrt-x86_64-python-sphinx

下载fftw3库源码,解压到任意目录,比如 F:/VSCodeFile/fftw3 。进入解压后的目录。在MSYS2 UCRT64终端中执行以下命令配置并编译fftw3库:

1
2
3
./configure --disable-alloca --with-our-malloc16 --enable-shared --disable-static --enable-threads --with-combined-threads --enable-portable-binary --with-imcoming-stack-boundary=2 --enable-float --enable-sse2 --enable-avx --prefix=/f/fftw3-sse2-avx
make -j4
make install

./configure 的参数详细请参考Windows Installation Notes以及Installation on Unix

编译过程中可能会显示缺少某些依赖,可在MSYS2Base Packages页面搜索相应依赖,并MSYS2终端中使用 pacman -S [name of package] 命令安装缺失的依赖。 ./configuremake 过程时间较长,尽量第一次就将依赖库安装好。编译完成后,fftw3库安装到了 F:/fftw3-sse2-avx/ 目录下。

打开PowerShell,进入GROMACS源代码目录,使用以下指令构建CMake项目:

1
2
cmake -S . -B build -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=F:/GROMACS-fftw3 -DGMX_FFT_LIBRARY=fftw3 -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=F:/fftw3-sse2-avx
cmake --build build -j4 --target install

-DGMX_FFT_LIBRARY=fftw3 指定使用fftw3库支持FFT计算;
-DCMAKE_PREFIX_PATH=F:/fftw3-sse2-avx 指定fftw3库的安装路径,CMake会在此目录下查找fftw3库的头文件和动态链接库。

等待编译完成后,GROMACS二进制文件安装到了 F:/GROMACS-fftw3/bin/ 目录下。将 F:/fftw3-sse2-avx/bin/ 目录下的libfftw3f-3.dll文件复制到 F:/GROMACS-fftw3/bin/ 目录中并添加到系统环境变量PATH中,即可在windows的CMD或PowerShell中使用gmx命令。

漫画《咲慕流年》的同人麻将游戏

游戏说明

规则说明

主要角色

白筑慕

石飞闲无

瑞原早璃

0%