Jerkwin分享 http://blog.sciencenet.cn/u/Jerkwin

博文

Windows下GROMACS程序的编译

已有 5855 次阅读 2015-12-8 12:28 |系统分类:科研笔记

2015-12-07 22:12:05

总的来说, Windows下的GROMACS程序用于模拟意义不大, 对于长时间的模拟, 我都是放在Linux服务器上进行的. 但将Windows下的GROMACS程序作为一个辅助工具来使用还是有意义的. 因为大多数时候, 我都是在Windows下准备输入文件的, 然后测试一下准备好的输入文件是否能正确生成.tpr文件, 简单测试一下生成的.tpr文件能不能正常运行, 或是测试一下分析命令的用法. 如果为此而装一个Linux的虚拟机, 感觉太麻烦了, 使用起来也不顺手, 因为我毕竟是个Windows的深度用户.

相对而言, Linux系统下GROMACS的编译安装还算简单, 也有很多资料, 但Windows系统下有关的编译安装资料却不多. 网上也流传有一个编译好的4.6.2的单精度版本, 其他的我还没看到过. 最近, 我需要测试GROMACS 5.x版本的一些新功能, 所以就试着在64位Windows 7下用Intel的C编译器编译了一下GROMACS 5.1.1, 这里简记下编译过程, 供需要者参考.

准备工作安装微软的Visual Studio 2013

虽然VS有更新的版本, 但我使用的2015版Intel C编译器目前只支持VS2013, 所以我就安装了VS2013, 就不去测试其他版本的VS了.

安装Intel Composer XE 2015

这是Intel整合好的一套工具, 包括了编译器, MKL库, IMPI以及一些性能测试工具等, 只要装好就全部可以用了, 省得一个一个地装.

安装cmake

GROMACS 5.x版本使用cmake构建, 所以需要安装cmake. 直接到官方网站下载即可. 我下载的是Windows ZIP cmake-3.4.1-win32-x86.zip. 不需要安装, 解压后能直接使用. 解压后得目录cmake-3.4.1-win32-x86, 其中的../cmake-3.4.1-win32-x86/bin/cmake-gui.exe即可运行.

下载GROMACS源代码

官方网站下载GROMACS源代码. 我下载的是gromacs-5.1.1.tar.gz. 下载后解压, 得目录gromacs-5.1.1.

编译安装cmake构建

打开..cmake-3.4.1-win32-x86bincmake-gui.exe, 设定源代码路径, 编译路径, 点击Configure, 选择Visual Studio 12 2013 Win64 -> Finish.

运行后出现错误, 因为有些编译选项没有指定, 设置必须的选项, 重新Configure. 如此重复, 直至没有错误提示, 提示Configuring done. 具体选项设置如下图, 有关说明请参考GROMACS手册.

其中MKL_INCLUDE_DIR设置为C:/Program Files (x86)/Intel/Composer XE 2015/mkl/include, MKL_LIBRARIES设置为C:/Program Files (x86)/Intel/Composer XE 2015/mkl/lib/intel64/mkl_core.lib;C:/Program Files (x86)/Intel/Composer XE 2015/mkl/lib/intel64/mkl_sequential.lib;C:/Program Files (x86)/Intel/Composer XE 2015/mkl/lib/intel64/mkl_intel_lp64.lib;.

值得注意的是, 在这一步中, 我们没有办法指定只使用Intel编译器, 虽然网上有些解决方案1, 2, 但根据我的测试最终都不能编译成功. 此外,GMX_SIMD选项也无法使用, 否则Configure不能通过. 不过这些选项, 我们都可以在后面解决.

Configure完成后, 点击Generate生成解决方案.

VS编译

生成解决方案后, 打开../GMX-5.1.1/Gromacs.sln, 选择Release x64配置, 并选择使用Intel编译器

然后修改编译选项. 首先是C/C++编译选项

对应的命令行选项为

/GS /TP /W3 /Qdiag-disable:"4800" /Qdiag-disable:"4355" /Qdiag-disable:"4996" /Qdiag-disable:"4305" /Qdiag-disable:"4244" /Qdiag-disable:"4101" /Qdiag-disable:"4267" /Qdiag-disable:"4090" /Zc:wchar_t /I"C:UsersJicunDownloadsgromacs-5.1.1srcexternalboost" /I"C:UsersJicunDownloadsGMX-5.1.1src" /I"C:UsersJicunDownloadsgromacs-5.1.1srcexternalthread_mpiinclude" /I"C:UsersJicunDownloadsgromacs-5.1.1src" /I"C:Program Files (x86)IntelComposer XE 2015mklinclude" /O2 /Ob2 /Fd"gmx.dirRelWithAssertvc120.pdb" /D "WIN32" /D "_WINDOWS" /D "GMX_DOUBLE" /D "GMX_HAVE_WINSOCK" /D "NOMINMAX" /D "HAVE_CONFIG_H" /D "BOOST_NO_TYPEID" /D "CMAKE_INTDIR="RelWithAssert"" /D "_MBCS" /Zc:forScope /GR /MD /Fa"RelWithAssert/" /EHsc /nologo /Fo"gmx.dirRelWithAssert" /Qprof-dir "gmx.dirRelWithAssert" /Fp"gmx.dirRelWithAssertgmx_d.pch"

然后是Linker连接器选项

对应的命令行选项为

/OUT:"C:UsersJicunDownloadsGMX-5.1.1binRelWithAssertgmx_d.exe" /MANIFEST /NXCOMPAT /PDB:"C:/Users/Jicun/Downloads/GMX-5.1.1/bin/RelWithAssert/gmx_d.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib" "....libRelWithAssertgromacs_d.lib" "wsock32.lib" "C:Program Files (x86)IntelComposer XE 2015mkllibintel64mkl_core.lib" "C:Program Files (x86)IntelComposer XE 2015mkllibintel64mkl_sequential.lib" "C:Program Files (x86)IntelComposer XE 2015mkllibintel64mkl_intel_lp64.lib" /IMPLIB:"C:/Users/Jicun/Downloads/GMX-5.1.1/lib/RelWithAssert/gmx_d.lib" /MACHINE:X64 /INCREMENTAL /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"gmx.dirRelWithAssertgmx_d.exe.intermediate.manifest" /NOLOGO /TLBID:1

这些选项至少要同时用于gmx, libgromacs, mdrun_objlib, view_objlib.

设置好后, 选中gmx, 右键生成即可编译得到../GMX-5.1.1/bin/Release/gmx_d.exe. 编译时间较长, 请保持耐心.

如果选中INSTALL生成, 则默认将编译好的GROMACS安装在C:/Program Files/Gromacs.

值得注意的是, 在编译时, 由于我们使用了Intel的编译器, 所以有些VS自带的头文件会因为兼容性问题导致编译失败. 我的解决办法是使用C:Program Files (x86)IntelComposer XE 2015compilerinclude下的文件, 替换C:Program Files (x86)Microsoft Visual Studio 12.0VCinclude下的文件, 需要替换的文件有下列几个:

  1. atomic

  2. complex.h

  3. dvec.h

  4. emmintrin.h

  5. fenv.h

  6. fvec.h

  7. immintrin.h

  8. ivec.h

  9. mmintrin.h

  10. nmmintrin.h

  11. omp.h

  12. pmmintrin.h

  13. smmintrin.h

  14. tmmintrin.h

  15. wmmintrin.h

  16. xmmintrin.h

或许还有更简单的解决办法, 但我还不知道.

打包发布

将编译好的GROMACS打包发布时, 注意要顺便将Intel的libiomp5md.dll文件也一起发布.

你可以点击这里下载我编译好的GROMACS 5.1.1双精度版. 这个版本只在我的64位Windows 7下测试过, 不能保证在所有机器上都能运行. 解压后, 将GMXLIB环境变量设为安装路径GMX-5.1.1sharegromacstop即可使用了.

◆本文地址: http://jerkwin.github.io/9999/11/01/GROMACS程序编译/, 转载请注明◆



http://blog.sciencenet.cn/blog-548663-941861.html

上一篇:Windows下的AmberTools+RESP+ACPYPE
下一篇:使用AmberTools+ACPYPE+Gaussian创建小分子GAFF力场的拓扑文件

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-9-20 01:18

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部