GROMACS的原生Windows版的编译和安装方法

GROMACS的原生Windows版的编译和安装方法

文/Sobereva@北京科音  2019-Jun-4


注:如果大家对编译过程不感兴趣,只想直接用原生Windows版的GROMACS,可以在http://sobereva.com/soft/gmx2018.4_win64.rar下载笔者编译好的原生Windows版GROMACS 2018.4,经测试Win7和Win10 64bit都可以用,安装方法见本文第3节。

1 前言:关于在Windows下使用GROMACS

GROMACS一般都是在Linux下运行,其Linux下的安装方法我在《GROMACS的安装方法》(http://sobereva.com/457)中已经详细交代了。在Windows下使用GROMACS有多种方式:
(1)使用VMware装Linux虚拟机,并照常以Linux方式编译。这十分简单,过程见《在VMware 15中安装CentOS 7.6的完整过程视频演示》(http://sobereva.com/454)。Linux下的所有程序都可以在以这种方式使用,非常普适,而且直接有图形环境。
(2)在Cygwin下编译。Cygwin提供了类似Linux系统的命令行环境,也提供了程序包管理器和源,相对于使用VMware更轻量级,而且编译出的程序只要提供一些Cygwin的dll文件就可以直接挪到其它Windows机子下用。对于大多数程序Cygwin下编译方式和Linux下一样(gcc、make、cmake等都有),但也有很多情况需要额外折腾,有时编译过程特别迟钝,而且有时候有一些特殊情况,比如笔者在Cygwin下编译GROMACS时必须要求不利用AVX指令集,否则编译会失败。
(3)Win10的Linux子系统。笔者个人不怎么喜欢这东西,这里不多提,和Cygwin在形式上有很大相似之处,鉴于是Windows自带的,以后必然会吞掉Cygwin很大的生存空间。
以上三种方法在原理上都会使得计算性能打一些折扣,但一般也就不到10%。
(4)编译原生的Windows版GROMACS。原理上来说,这是最完美的做法,编译出的程序可以拿到任何其它Windows机子上直接用,不需要装额外运行环境,而且在原理上也没有上述三种方法那样会对CPU性能打折扣。

本文就介绍一下怎么编译原生的Windows版GROMACS,过程相当简单。鉴于在Windows下使用GROMACS主要也就是偶尔图个方便才用,或者给初学者讲GROMACS时候用,极少会有Windows机子专门跑高耗时计算的情况,因此本文只介绍安装最普通形式的GROMACS的方法,即单精度、只能单节点并行、纯CPU版。


2 原生Windows版的编译过程

经测试,本文的过程对于GROMACS 2018.4和2019都适用。这里以2018.4为例。

首先安装Visual Studio,这里用的是Visual Studio 2017。VS2017最低级的是community(社区)版,是完全免费的。大家在https://visualstudio.microsoft.com/zh-hans/downloads/就可以下载到最新版。下载到的是一个非常小的安装器,启动它就可以在线安装(VS2017是没有镜像文件的。虽然也有办法把VS2017的组件全部下载后再离线安装,但是会占几十GB硬盘,因此不要考虑离线方式安装)。虽然看起来在线安装好像很耗时,但其实以现在的网速来说总耗时也不算很高。安装VS2017的时候应选择“使用C++的桌面开发”,确认“安装详细信息”中“用于CMake的Visual C++工具”是已选中的状态。

将gromacs-2018.4.tar.gz源代码包解压到比如C:\gromacs-2018.4。

在开始菜单里选Visual Studio 2017 - Visual Studio Tools - VS2017的开发人员命令行提示符,由此进入编译环境都配置好的命令行窗口。然后依次输入
cd C:\gromacs-2018.4
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=C:\gmx2018.4 -DGMX_FFT_LIBRARY=fftpack -G "Visual Studio 15 2017 Win64"
cmake --build . --target INSTALL --config Release -j 4

过一阵子就编译好了,会出现C:\gmx2018.4目录,里面就是编译好的可执行文件以及相关文件了,内容和Linux版一样。

有几点值得进一步解释,对细节感兴趣者可以看看:

GROMACS需要利用FFT库,有三种选择
(1)FFTW库,这是最佳选择,Linux下编译都用FFTW
(2)MKL库,效率和FFTW差不多,需要额外安装
(3)fftpack库,这是GROMACS自带的,但效率相对低一些
上面为了省事,直接用了自带的fftpack库,实测比FFTW慢大概1/4左右。当然大家愿意折腾的话也可以自己在Windows下编译FFTW库或者安装MKL库并且连接之。虽然在Linux下编译GROMACS可以自动下载FFTW库并安装,但是在Windows下没法实现这点。

上面用的-j 4代表使用4核并行,机子里有几个物理核心建议就设几。

cmake的-G选项代表设置Generator,相当于指定编译环境,可以运行cmake -G查看有哪些Generator可选。"Visual Studio 15 2017 Win64"代表产生出对应于VS2017的64bit平台的解决方案,之后进而编译出的程序就是适合Windows 64bit的版本了。

如果读者打开build目录下的Gromacs.sln解决方案文件,会看到里面有很多不同的工程,其中名为ALL_BUILD的工程对应于编译出最终的可执行文件,而INSTALL的工程对应于不仅编译可执行文件,还将程序安装到CMAKE_INSTALL_PREFIX设的目录,因此上文的语句里用了--target INSTALL。

上面的--config后面跟的是编译时用的配置。名为Release的配置是适合用于发布的,会对代码充分进行优化。


3 原生Windows版的使用方法

注:如果你的计算机水平十分糟糕,难以正确按照以下文字操作,可参考演示视频:https://www.bilibili.com/video/av39914815/

进入“控制面板”-“系统”,选择“高级系统设置”,在“高级”标签页里选择“环境变量”,在“xxx的用户变量”下面选择Path变量,点击“编辑”,在“变量值”文本框最后加上一个分号,然后再写上GROMACS目录的bin子目录的路径,比如;C:\gmx2018.4\bin。之后进入Windows的命令行窗口,输入gmx命令的时候就应该出现相关提示信息了,然后就可以像Linux版一样照常使用了。

评论已关闭