计算化学公社

标题: 经验分享:Windows Server 2016下Gromacs 2024.3 GPU版本编译经历 [打印本页]

作者
Author:
JinxrDK    时间: 2024-9-16 22:00
标题: 经验分享:Windows Server 2016下Gromacs 2024.3 GPU版本编译经历
本帖最后由 JinxrDK 于 2024-9-16 22:00 编辑

近日,课题组分配了一台Windows Server 2016系统的服务器,配备了一片A100,考虑到切换Linux系统影响其他同门工作,出于好奇,便尝试在本系统下编译GPU版本的Gromacs
编译环境为:Visual Studio 2019 Community, CUDA Toolkit v11.8, CMake 3.27(起初使用3.30,后发现多数问题由Cmake版本引发),具体配置请参见下图:

现将安装过程中的一些经验和参考资料分享如下:
1)文件修改(红色为删除,绿色为增加)
1.1 gromacs-2024.3/cmake/gmxManageNvccConfig
list(APPEND GMX_CUDA_NVCC_FLAGS "${CMAKE_CXXCUDA17_STANDARD_COMPILE_OPTION}") (第241行)

参考资料:Win10 编译 Gromacs 2022.5 的流程总结 - 知乎 (zhihu.com)
gmx_add_nvcc_flag_if_supported(GMX_CUDA_NVCC_FLAGS NVCC_HAS_USE_FAST_MATH -use_fast_math -std=c++17) (第245行)
参考资料:GROMACS2023 Windows原生系统下编译超详细解析 - 分子模拟 (Molecular Modeling) - 计算化学公社 (keinsci.com)
1.2 gromacs-2024.3/CMakeLists
set(CMAKE_POLICY_DEFAULT_CMP0091 NEW)
set(CMAKE_POLICY_DEFAULT_CMP NEW)
cmake_policy(SET CMP0091 NEW) (第1行前)

参考资料:GROMACS2023 Windows原生系统下编译超详细解析 - 分子模拟 (Molecular Modeling) - 计算化学公社 (keinsci.com)
1.3 gromacs-2024.3/CMakeLists
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") (第92行)
参考资料:Build fails on windows when cuda is enabled (#4582) · 议题 · GROMACS / GROMACS · GitLab
2)我遇到的问题和解决的措施
2.1 D:\XXX\gromacs-2024.3\src\gromacs\simd\include\gromacs\simd\impl_x86_avx_512\impl_x86_avx_512_simd_float.h(191): fata l error C1001: 内部编译器错误。 [D:\XXX\gromacs-2024.3\build\src\gromacs\libgromacs.vcxproj]    设置-DGMX_SIMD=AVX2_256会报同类型错误
解决措施:安装CMakeLists中明确有提及的Cmake 3.27后,问题消失
2.2 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”
解决措施:按1.3中修改后问题消失

编译好的Gromacs以一并上传,请各位测试。受上传文件大小所限,请自行将NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin下cufft64_10.dll拷入GROMACS2024_3/bin中后运行。

本人计算机知识浅薄,若描述中有不妥或错误之处,还请不吝赐教。


作者
Author:
JinxrDK    时间: 2024-9-16 22:02
编译设置: cmake .. -DCMAKE_INSTALL_PREFIX=D:\XXX\SOFTWARE\GROMACS2024 -DGMX_FFT_LIBRARY=fftw3 -DCMAKE_PREFIX_PATH=D:\XXX\PACKAGE\FFTW310 -DGMX_GPU=CUDA  -G "Visual Studio 16 2019" -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NV
IDIA GPU Computing Toolkit/CUDA/v11.8" -DGMX_SIMD=AVX2_256
作者
Author:
Huschein    时间: 2024-10-26 19:52
强的,当时搞这个折腾了我一个星期
作者
Author:
JinxrDK    时间: 2024-11-25 16:02
补充:近期发现2.1中问题并非全部源于CMake版本问题,采用CMake 3.27编译时发现Intel Xeon Platinum 8260 CPU下无法编译AVX_512版本,报错同2.1,仅可编译AVX2_256版本
作者
Author:
JinxrDK    时间: 2024-11-25 16:03
Huschein 发表于 2024-10-26 19:52
强的,当时搞这个折腾了我一个星期

我也搞了三天,参考资料实在是难找
作者
Author:
orangehavedream    时间: 2024-12-28 14:53
本帖最后由 orangehavedream 于 2024-12-28 21:14 编辑

太牛了!我一周还是没弄好,感谢楼主给了一个编译好的版本
----------------------------------
我使用的是CUDA 12.6,cmake 2.9,VS2022 ,gromacs2024.4。按照本帖解决方法改了很多地方,尝试了6-7遍总是报错NVCC/C -broken
之后,我把所有的软件都删掉,按照楼主的发的配置重新进行了一下,一遍就成功了!太感谢了!!!

作者
Author:
bard_skd    时间: 2025-2-11 01:04
大佬请教一下,我编译多次,也一直报错,不得已只能尝试使用另一位老哥编译好的2023.2版本,和你的对比了一下,有一处不同:
我的显示是SIMD instructions:  AVX2_128(你的截图里是256),请问有无影响啊
作者
Author:
JinxrDK    时间: 2025-2-11 16:46
bard_skd 发表于 2025-2-11 01:04
大佬请教一下,我编译多次,也一直报错,不得已只能尝试使用另一位老哥编译好的2023.2版本,和你的对比了一 ...

应该是他编译的设置的是-DGMX_SIMD=AVX2_128,指令集间的具体差异我不了解。你可以用我编译好的和你的版本对比测试下性能。




欢迎光临 计算化学公社 (http://ccc.keinsci.com/) Powered by Discuz! X3.3