suzai 发表于 2025-2-7 02:26:12

CudaSPONGE高性能GPU分子模拟

技术背景

CudaSPONGE是基于CUDA C开发的一款纯GPU分子动力学模拟软件,具有模块化和高性能的特点。官方基本介绍内容如下:
分子动力学(Molecular Dynamics, MD)模拟是化学、物理学、生物学、材料科学和许多其他领域的有用工具。在过去 40 年中,人们开发了各种高效的计算算法和MD程序,用于研究日益复杂和大型系统的动力学,如RNA 聚合酶、细胞膜中的膜蛋白、SARS-CoV-2病毒等。然而,随着应用范围和规模的扩大,分子模拟软件需要更高的计算能力。缩小模拟与实验之间差距的最直接策略是利用更强大的计算硬件。例如,Shaw研究所专门设计了安东(Anton),可以对系统大小为几百万个原子的单结构域蛋白质进行毫秒级模拟。相比之下,使用图形处理单元(GPU)可能是大多数研究小组最经济实惠和最有前途的方法。从另一个方面看,许多先进的计算算法也已开发出来并得到广泛应用,从而延长了模拟时间尺度。特别是在过去几十年中,人们开发了许多增强型采样方法,以实现快速热力学和/或动力学计算。这些方法包括但不限于广泛使用的伞状采样、元动力学、加速MD、复制交换分子动力学(REMD)、并行回火、模拟回火、多正则模拟(特别是通过Wang-Landau算法实现)以及许多其他方法。
在过去的 15 年中,我们致力于开发面向复杂化学和生物系统的高效分子模拟方法,设计了一系列增强型采样方法,实现了构象和轨迹空间的快速采样,并实现了复杂系统热力学和动力学特性的快速计算。 最近,我们开发了一个名为 SPONGE的国产MD模拟软件包,它不仅实现了GPU加速的传统MD模拟,还实现了我们课题组提出的高效增强采样方法。 该软件包具有高度模块化的特点,可以轻松集成其他功能或算法,尤其是最新的深度学习潜力和算法。
安装介绍

首先进到CudaSPONGE官网,找到最新版本的软件包下载到本地目录,主要依赖于nvcc进行编译构建。解包之后可以看到这样的目录:
$ lltotal 220drwxrwxrwx 1 root root4096 Sep 11 08:19 ./drwxrwxrwx 1 root root4096 Sep 11 08:19 ../drwxrwxrwx 1 root root4096 Sep 11 08:19 Lennard_Jones_force/drwxrwxrwx 1 root root4096 Sep 11 08:19 MD_core/-rwxrwxrwx 1 root root3072 Jan12024 Makefile*drwxrwxrwx 1 root root4096 Sep 11 08:19 No_PBC/drwxrwxrwx 1 root root4096 Sep 11 08:19 PME_force/drwxrwxrwx 1 root root4096 Sep 11 08:19 SITS/drwxrwxrwx 1 root root4096 Sep 11 08:19 angle/drwxrwxrwx 1 root root4096 Sep 11 08:19 barostats/drwxrwxrwx 1 root root4096 Sep 11 08:19 bias/drwxrwxrwx 1 root root4096 Sep 11 08:19 bond/drwxrwxrwx 1 root root4096 Sep 11 08:19 cmap/drwxrwxrwx 1 root root4096 Sep 11 08:19 collective_variable/-rwxrwxrwx 1 root root8311 Jan12024 common.cu*-rwxrwxrwx 1 root root 58097 Jan12024 common.cuh*drwxrwxrwx 1 root root4096 Sep 11 08:19 constrain/-rwxrwxrwx 1 root root 41504 Jan12024 control.cu*-rwxrwxrwx 1 root root9465 Jan12024 control.cuh*drwxrwxrwx 1 root root4096 Sep 11 08:19 covid-tip4p/drwxrwxrwx 1 root root4096 Sep 11 08:19 dihedral/-rwxrwxrwx 1 root root 34743 Jan12024 jit.cuh*-rwxrwxrwx 1 root root 32719 Jan12024 main.cu*-rwxrwxrwx 1 root root2011 Jan12024 main.cuh*-rwxrwxrwx 1 root root3408 Jan12024 main_ti.cu*-rwxrwxrwx 1 root root   489 Jan12024 main_ti.cuh*-rwxrwxrwx 1 root root   492 Jan12024 mdin.txt*drwxrwxrwx 1 root root4096 Sep 11 08:19 nb14/drwxrwxrwx 1 root root4096 Sep 11 08:19 neighbor_list/drwxrwxrwx 1 root root4096 Sep 11 08:19 plugin/drwxrwxrwx 1 root root4096 Sep 11 08:19 restrain/drwxrwxrwx 1 root root4096 Sep 11 08:19 thermostats/drwxrwxrwx 1 root root4096 Sep 11 08:19 virtual_atoms/-rwxrwxrwx 1 root root 11843 Jan12024 vs_project_generator.bat*drwxrwxrwx 1 root root4096 Sep 11 08:19 wall/然后可以在这个路径下直接执行:
$ make过程中大致输出为:
编译输出$ make/bin/sh: bc: command not found/bin/sh: bc: command not foundanalyzing dependency of PME_force/cross_PME.cu to PME_force/cross_PME.danalyzing dependency of PME_force/PME_force.cu to PME_force/PME_force.danalyzing dependency of Lennard_Jones_force/LJ_soft_core.cu to Lennard_Jones_force/LJ_soft_core.danalyzing dependency of neighbor_list/neighbor_list.cu to neighbor_list/neighbor_list.danalyzing dependency of MD_core/MD_core.cu to MD_core/MD_core.danalyzing dependency of control.cu to control.danalyzing dependency of common.cu to common.danalyzing dependency of main_ti.cu to main_ti.danalyzing dependency of plugin/plugin.cu to plugin/plugin.danalyzing dependency of wall/soft_wall.cu to wall/soft_wall.danalyzing dependency of wall/hard_wall.cu to wall/hard_wall.danalyzing dependency of bias/Meta1D.cu to bias/Meta1D.danalyzing dependency of bias/steer.cu to bias/steer.danalyzing dependency of bias/restrain_cv.cu to bias/restrain_cv.danalyzing dependency of collective_variable/combine.cu to collective_variable/combine.danalyzing dependency of collective_variable/tabulated.cu to collective_variable/tabulated.danalyzing dependency of collective_variable/RMSD.cu to collective_variable/RMSD.danalyzing dependency of collective_variable/simple_cv.cu to collective_variable/simple_cv.danalyzing dependency of collective_variable/collective_variable.cu to collective_variable/collective_variable.danalyzing dependency of SITS/SITS.cu to SITS/SITS.danalyzing dependency of virtual_atoms/virtual_atoms.cu to virtual_atoms/virtual_atoms.danalyzing dependency of constrain/SHAKE.cu to constrain/SHAKE.danalyzing dependency of constrain/SETTLE.cu to constrain/SETTLE.danalyzing dependency of constrain/simple_constrain.cu to constrain/simple_constrain.danalyzing dependency of constrain/constrain.cu to constrain/constrain.danalyzing dependency of restrain/restrain.cu to restrain/restrain.danalyzing dependency of barostats/andersen_barostat.cu to barostats/andersen_barostat.danalyzing dependency of barostats/Berendsen_barostat.cu to barostats/Berendsen_barostat.danalyzing dependency of barostats/MC_barostat.cu to barostats/MC_barostat.danalyzing dependency of thermostats/nose_hoover_chain.cu to thermostats/nose_hoover_chain.danalyzing dependency of thermostats/Berendsen_thermostat.cu to thermostats/Berendsen_thermostat.danalyzing dependency of thermostats/Andersen_thermostat.cu to thermostats/Andersen_thermostat.danalyzing dependency of thermostats/Middle_Langevin_MD.cu to thermostats/Middle_Langevin_MD.danalyzing dependency of thermostats/Langevin_MD.cu to thermostats/Langevin_MD.danalyzing dependency of Lennard_Jones_force/pairwise_force.cu to Lennard_Jones_force/pairwise_force.danalyzing dependency of Lennard_Jones_force/solvent_LJ.cu to Lennard_Jones_force/solvent_LJ.danalyzing dependency of Lennard_Jones_force/Lennard_Jones_force.cu to Lennard_Jones_force/Lennard_Jones_force.danalyzing dependency of No_PBC/Lennard_Jones_force_No_PBC.cu to No_PBC/Lennard_Jones_force_No_PBC.danalyzing dependency of No_PBC/generalized_Born.cu to No_PBC/generalized_Born.danalyzing dependency of No_PBC/Coulomb_Force_No_PBC.cu to No_PBC/Coulomb_Force_No_PBC.danalyzing dependency of nb14/nb14.cu to nb14/nb14.danalyzing dependency of cmap/cmap.cu to cmap/cmap.danalyzing dependency of dihedral/improper_dihedral.cu to dihedral/improper_dihedral.danalyzing dependency of dihedral/dihedral.cu to dihedral/dihedral.danalyzing dependency of angle/Urey_Bradley_force.cu to angle/Urey_Bradley_force.danalyzing dependency of angle/angle.cu to angle/angle.danalyzing dependency of bond/listed_forces.cu to bond/listed_forces.danalyzing dependency of bond/bond_soft.cu to bond/bond_soft.danalyzing dependency of bond/bond.cu to bond/bond.danalyzing dependency of main.cu to main.d/bin/sh: bc: command not found/bin/sh: bc: command not foundnvcc -o main.o -c main.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o common.o -c common.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o control.o -c control.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o MD_core/MD_core.o -c MD_core/MD_core.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/config.h:27:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config.h:23,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:24,               from MD_core/MD_core.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/cpp_dialect.h:131:13: warning: Thrust requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define THRUST_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      THRUST_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                         In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_arch.cuh:36:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/detail/device_synchronize.cuh:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/util.h:36,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/for_each.h:35,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/adl/for_each.h:42,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/for_each.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/for_each.h:277,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.h:104,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/transform.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/transform.h:721,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.inl:31,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.h:87,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/reduce.inl:28,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/reduce.h:781,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.h:61,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/find.inl:25,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/find.h:381,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.h:152,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:1358,               from MD_core/MD_core.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_cpp_dialect.cuh:142:13: warning: CUB requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define CUB_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      CUB_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                      In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/config.h:27:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config.h:23,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:24,               from MD_core/MD_core.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/cpp_dialect.h:131:13: warning: Thrust requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define THRUST_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      THRUST_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                         In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_arch.cuh:36:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/detail/device_synchronize.cuh:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/util.h:36,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/for_each.h:35,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/adl/for_each.h:42,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/for_each.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/for_each.h:277,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.h:104,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/transform.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/transform.h:721,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.inl:31,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.h:87,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/reduce.inl:28,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/reduce.h:781,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.h:61,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/find.inl:25,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/find.h:381,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.h:152,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:1358,               from MD_core/MD_core.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_cpp_dialect.cuh:142:13: warning: CUB requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define CUB_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      CUB_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                      nvcc -o bond/bond.o -c bond/bond.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o bond/bond_soft.o -c bond/bond_soft.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o bond/listed_forces.o -c bond/listed_forces.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o angle/angle.o -c angle/angle.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o angle/Urey_Bradley_force.o -c angle/Urey_Bradley_force.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o dihedral/dihedral.o -c dihedral/dihedral.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o dihedral/improper_dihedral.o -c dihedral/improper_dihedral.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o cmap/cmap.o -c cmap/cmap.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o nb14/nb14.o -c nb14/nb14.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o neighbor_list/neighbor_list.o -c neighbor_list/neighbor_list.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/config.h:27:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config.h:23,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:24,               from neighbor_list/neighbor_list.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/cpp_dialect.h:131:13: warning: Thrust requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define THRUST_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      THRUST_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                         In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_arch.cuh:36:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/detail/device_synchronize.cuh:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/util.h:36,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/for_each.h:35,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/adl/for_each.h:42,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/for_each.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/for_each.h:277,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.h:104,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/transform.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/transform.h:721,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.inl:31,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.h:87,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/reduce.inl:28,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/reduce.h:781,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.h:61,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/find.inl:25,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/find.h:381,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.h:152,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:1358,               from neighbor_list/neighbor_list.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_cpp_dialect.cuh:142:13: warning: CUB requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define CUB_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      CUB_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                      In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/config.h:27:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config.h:23,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:24,               from neighbor_list/neighbor_list.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/config/cpp_dialect.h:131:13: warning: Thrust requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define THRUST_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      THRUST_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                         In file included from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_arch.cuh:36:0,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/cub/detail/device_synchronize.cuh:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/util.h:36,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/cuda/detail/for_each.h:35,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/adl/for_each.h:42,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/for_each.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/for_each.h:277,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/transform.h:104,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/transform.inl:27,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/transform.h:721,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.inl:31,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/reduce_by_key.h:87,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/reduce.inl:28,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/reduce.h:781,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.inl:19,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/find.h:61,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/find.inl:25,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/find.h:381,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/system/detail/generic/sort.h:152,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/detail/sort.inl:26,               from /usr/local/cuda/bin/../targets/x86_64-linux/include/thrust/sort.h:1358,               from neighbor_list/neighbor_list.cu:2:/usr/local/cuda/bin/../targets/x86_64-linux/include/cub/util_cpp_dialect.cuh:142:13: warning: CUB requires at least C++14. C++11 is deprecated but still supported. C++11 support will be removed in a future release. Define CUB_IGNORE_DEPRECATED_CPP_DIALECT to suppress this message.      CUB_COMPILER_DEPRECATION_SOFT(C++14, C++11);             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                      nvcc -o No_PBC/Coulomb_Force_No_PBC.o -c No_PBC/Coulomb_Force_No_PBC.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o No_PBC/generalized_Born.o -c No_PBC/generalized_Born.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o No_PBC/Lennard_Jones_force_No_PBC.o -c No_PBC/Lennard_Jones_force_No_PBC.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o Lennard_Jones_force/Lennard_Jones_force.o -c Lennard_Jones_force/Lennard_Jones_force.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o Lennard_Jones_force/solvent_LJ.o -c Lennard_Jones_force/solvent_LJ.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o Lennard_Jones_force/LJ_soft_core.o -c Lennard_Jones_force/LJ_soft_core.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o Lennard_Jones_force/pairwise_force.o -c Lennard_Jones_force/pairwise_force.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o PME_force/PME_force.o -c PME_force/PME_force.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o thermostats/Langevin_MD.o -c thermostats/Langevin_MD.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o thermostats/Middle_Langevin_MD.o -c thermostats/Middle_Langevin_MD.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o thermostats/Andersen_thermostat.o -c thermostats/Andersen_thermostat.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o thermostats/Berendsen_thermostat.o -c thermostats/Berendsen_thermostat.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o thermostats/nose_hoover_chain.o -c thermostats/nose_hoover_chain.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o barostats/MC_barostat.o -c barostats/MC_barostat.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o barostats/Berendsen_barostat.o -c barostats/Berendsen_barostat.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o barostats/andersen_barostat.o -c barostats/andersen_barostat.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o restrain/restrain.o -c restrain/restrain.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o constrain/constrain.o -c constrain/constrain.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o constrain/simple_constrain.o -c constrain/simple_constrain.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o constrain/SETTLE.o -c constrain/SETTLE.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o constrain/SHAKE.o -c constrain/SHAKE.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o virtual_atoms/virtual_atoms.o -c virtual_atoms/virtual_atoms.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o SITS/SITS.o -c SITS/SITS.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o collective_variable/collective_variable.o -c collective_variable/collective_variable.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o collective_variable/simple_cv.o -c collective_variable/simple_cv.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o collective_variable/RMSD.o -c collective_variable/RMSD.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o collective_variable/tabulated.o -c collective_variable/tabulated.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o collective_variable/combine.o -c collective_variable/combine.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o bias/restrain_cv.o -c bias/restrain_cv.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o bias/steer.o -c bias/steer.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o bias/Meta1D.o -c bias/Meta1D.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o wall/hard_wall.o -c wall/hard_wall.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o wall/soft_wall.o -c wall/soft_wall.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o plugin/plugin.o -c plugin/plugin.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50sed -i 's/\r//' mdin.txtsed -i 's/\r//' covid-tip4p/*nvcc -o SPONGEmain.o common.o control.o MD_core/MD_core.o bond/bond.o bond/bond_soft.o bond/listed_forces.o angle/angle.o angle/Urey_Bradley_force.o dihedral/dihedral.o dihedral/improper_dihedral.o cmap/cmap.o nb14/nb14.o neighbor_list/neighbor_list.o No_PBC/Coulomb_Force_No_PBC.o No_PBC/generalized_Born.o No_PBC/Lennard_Jones_force_No_PBC.o Lennard_Jones_force/Lennard_Jones_force.o Lennard_Jones_force/solvent_LJ.o Lennard_Jones_force/LJ_soft_core.o Lennard_Jones_force/pairwise_force.o PME_force/PME_force.o thermostats/Langevin_MD.o thermostats/Middle_Langevin_MD.o thermostats/Andersen_thermostat.o thermostats/Berendsen_thermostat.o thermostats/nose_hoover_chain.o barostats/MC_barostat.o barostats/Berendsen_barostat.o barostats/andersen_barostat.o restrain/restrain.o constrain/constrain.o constrain/simple_constrain.o constrain/SETTLE.o constrain/SHAKE.o virtual_atoms/virtual_atoms.o SITS/SITS.o collective_variable/collective_variable.o collective_variable/simple_cv.o collective_variable/RMSD.o collective_variable/tabulated.o collective_variable/combine.o bias/restrain_cv.o bias/steer.o bias/Meta1D.o wall/hard_wall.o wall/soft_wall.o plugin/plugin.o -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o main_ti.o -c main_ti.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o PME_force/cross_PME.o -c PME_force/cross_PME.cu -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50nvcc -o SPONGE_TImain_ti.o common.o control.o MD_core/MD_core.o neighbor_list/neighbor_list.o Lennard_Jones_force/LJ_soft_core.o PME_force/PME_force.o PME_force/cross_PME.o -rdc=true -lcudadevrt -lcuda -lcudart -lcufft -lnvrtc --use_fast_math -O4 -ldl -std=c++11 -arch=sm_50 -DCUDA_ARCH_BIN=50即可完成CudaSPONGE的编译构建,在当前路径下生成一个SPONGE可执行文件:
$ ll | grep SPONGE-rwxr-xr-x 1 root root 32455648 Nov 27 01:44 SPONGE*-rwxr-xr-x 1 root root7482232 Nov 27 01:44 SPONGE_TI*预处理

为了使得工作空间更加分明,这里我建议先创建一个独立的工作区:
$ mkdir work_dir准备一个待模拟的体系,例如我们这里使用一个简单的pdb纯蛋白体系:
REMARK   Generated By Xponge (Molecule)ATOM      1    N ALA   1      -0.095 -11.436-0.780ATOM      2   CA ALA   1      -0.171 -10.015-0.507ATOM      3   CB ALA   1       1.201-9.359-0.628ATOM      4    C ALA   1      -1.107-9.319-1.485ATOM      5    O ALA   1      -1.682-9.960-2.362ATOM      6    N ARG   2      -1.303-8.037-1.397ATOM      7   CA ARG   2      -2.194-7.375-2.328ATOM      8   CB ARG   2      -3.606-7.943-2.235ATOM      9   CG ARG   2      -4.510-7.221-3.228ATOM   10   CD ARG   2      -5.923-7.789-3.136ATOM   11   NE ARG   2      -6.831-7.111-4.087ATOM   12   CZ ARG   2      -8.119-7.421-4.205ATOM   13NH1 ARG   2      -8.686-8.371-3.468ATOM   14NH2 ARG   2      -8.844-6.747-5.093ATOM   15    C ARG   2      -2.273-5.882-2.042ATOM   16    O ARG   2      -1.630-5.388-1.119ATOM   17    N ALA   3      -3.027-5.119-2.777ATOM   18   CA ALA   3      -3.103-3.697-2.505ATOM   19   CB ALA   3      -1.731-3.041-2.625ATOM   20    C ALA   3      -4.039-3.001-3.483ATOM   21    O ALA   3      -4.614-3.643-4.359ATOM   22    N ALA   4      -4.235-1.719-3.394ATOM   23   CA ALA   4      -5.126-1.057-4.325ATOM   24   CB ALA   4      -6.538-1.625-4.233ATOM   25    C ALA   4      -5.205   0.436-4.039ATOM   26    O ALA   4      -4.561   0.930-3.116ATOM   27OXT ALA   4      -5.915   1.166-4.728TER因为pdb格式经常会面临文件不完整的问题,所以需要使用Xponge进行预处理,安装方法如下:
$ python3 -m pip install xponge --upgrade文件处理的流程,这里用ipython的交互结果做一个简单的演示:
In : import XpongeIn : import Xponge.forcefield.amber.ff14sb # 导入力场Reference for ff14SB:James A. Maier, Carmenza Martinez, Koushik Kasavajhala, Lauren Wickstrom, Kevin E. Hauser, and Carlos Simmerling    ff14SB: Improving the accuracy of protein side chain and backbone parameters from ff99SB    Journal of Chemical Theory and Computation 2015 11 (8), 3696-3713    DOI: 10.1021/acs.jctc.5b00255In : C = Xponge.load_pdb("case1.pdb", ignore_hydrogen=False, ignore_unknown_name=True) # 加载pdb文件In : C.add_missing_atoms() # 补齐氢原子和其他丢失的residue atomIn : Xponge.save_pdb(C, "case1_fix.pdb") # 将新的体系保存到pdb文件中In : !mkdir proteinIn : Xponge.save_sponge_input(C, "protein/case1") # 保存SPONGE模拟所需参数文件Reference for Xponge:Xia, Y., Gao, Y. Q.    Xponge: A Python package to perform pre- and post-processing of molecular simulations    Journal of Open Source Software, 2022 7(77) 4467    DOI: 10.21105/joss.04467Out: Entity of Molecule: case1In : !ls -l protein/total 32-rwxr-xr-x 1 root root 1361 Nov 27 01:34 case1_LJ.txt-rwxr-xr-x 1 root root 2717 Nov 27 01:34 case1_angle.txt-rwxr-xr-x 1 root root185 Nov 27 01:34 case1_atom_name.txt-rwxr-xr-x 1 root root153 Nov 27 01:34 case1_atom_type_name.txt-rwxr-xr-x 1 root root 1437 Nov 27 01:34 case1_bond.txt-rwxr-xr-x 1 root root544 Nov 27 01:34 case1_charge.txt-rwxr-xr-x 1 root root 1639 Nov 27 01:34 case1_coordinate.txt-rwxr-xr-x 1 root root 4298 Nov 27 01:34 case1_dihedral.txt-rwxr-xr-x 1 root root977 Nov 27 01:34 case1_exclude.txt-rwxr-xr-x 1 root root371 Nov 27 01:34 case1_mass.txt-rwxr-xr-x 1 root root 3197 Nov 27 01:34 case1_nb14.txt-rwxr-xr-x 1 root root   16 Nov 27 01:34 case1_residue.txt-rwxr-xr-x 1 root root   20 Nov 27 01:34 case1_resname.txt这里除了补齐丢失的原子之外,还涉及到CudaSPONGE输入文件的问题,因此用Xponge来处理会相对便捷一些。到这里,就完成了CudaSPONGE分子模拟的预处理。
能量极小化

对于不同的模拟方法,我们需要给SPONGE输入不同的配置文件,例如能量最小化的一个配置文件的简单形式为minimize.txt:
case1 Minimizationmode = Minimization minimization_dynamic_dt 1default_in_file_prefix = protein/case1pbc=0 cutoff=999dt = 1e-02step_limit = 5000write_information_interval = 50rst = restartcoordinate_in_file =protein/case1_coordinate.txt在这个配置文件下,我们执行能量极小化的mode,参数文件保存在protein/目录下,并以case1开头。而模拟系统的笛卡尔坐标,由文件protein/case1_coordinate.txt给出。这个设置方便的地方在于,因为我们设置了restart参数,所以模拟结束之后会在当前路径下保存一个restart_coordinate.txt重启文件,所以下一次启动模拟的时候,只要把启动文件指向到这个restart坐标文件就可以了。配置好参数之后,运行的指令为:
$ ../SPONGE -mdin minimize.txt就可以获得相应的输出。
其他类型模拟

最常见的就是控温,那么主要就是设定mode=NVT,例如这是一个简单的nvt.txt,对应SPONGE的mdin输入文件:
case1 MD simulationmode = NVTdefault_in_file_prefix = protein/case1pbc=0 cutoff=999dt = 1e-3step_limit = 50000write_information_interval = 5000thermostat = middle_langevinmiddle_langevin_gamma = 10rst = nvt_restartcoordinate_in_file =restart_coordinate.txt这里起始坐标直接使用能量极小化之后的结果,并将NVT的最终坐标保存到nvt_restart_coordinate.txt文件中。其他如NPT模式的配置,可以参考这篇博客中的介绍。
增强采样

在CudaSPONGE v1.4的版本中,增强采样方法的定义形式如下meta.txt:
case1 MD simulationmode = NVTdefault_in_file_prefix = protein/case1pbc=0 cutoff=999dt = 1e-3step_limit = 50000write_information_interval = 5000target_temperature = 300.0thermostat = middle_langevinmiddle_langevin_gamma = 10rst = meta_restartcoordinate_in_file =nvt_restart_coordinate.txtcv_in_file = cv.txtdont_check_input = 1其中额外包含了一个CV的定义文件cv.txt,内容如下:
print{    CV = torsion}torsion{   CV_type = dihedral   atom = 1 3 12 13}meta1d{    CV = torsion    dCV = 0.06    CV_minimal = -3.1416    CV_maximum = 3.1416    CV_period = 6.2832    welltemp_factor = 50    height = 1    sigma = 0.3}一样的运行方法,可以看到输出结果如下:
$ ../SPONGE -mdin meta.txt SPONGE Version:    v1.4 2024-01-01Sub-package:    SPONGE, for normal molecular dynamics simulationsCitation:    Huang, Y. - P., Xia, Y., Yang, L., Wei, J., Yang, Y.I.and Gao, Y.Q. (2022), SPONGE: A GPU - Accelerated Molecular Dynamics Package with Enhanced Sampling and AI - Driven Algorithms.Chin.J.Chem., 40 : 160 - 168. https ://doi.org/10.1002/cjoc.202100456MD TASK NAME:    case1 MD simulationSTART INITIALIZING CONTROLLER    Start initializing CUDA      Compiled by CUDA 11.6      1 device found:            Device 0:                Name: NVIDIA GeForce RTX 3080 Ti Laptop GPU                Memory: 16.0 GB                Compute Capability: 86      Set Device 0    End initializing CUDA    structure last modify date is 20231219END INITIALIZING CONTROLLERSTART INITIALIZING CV CONTROLLER:    1 CV defined    0 cv virtual atomsEND INITIALIZING CV CONTROLLERSTART INITIALIZING MD CORE:    Mode set to NVT    dt set to 0.001000 ps    Start reading mass:    End reading mass    Start reading charge:    End reading charge    Start reading coordinate_in_file:      atom_numbers is 57      system start_time is 50.000000      box_length is            x: 999.000000            y: 999.000000            z: 999.000000    End reading coordinate_in_file    Velocity is set to zero as default    skin set to 2.00 Angstrom    cutoff set to 999.00 Angstrom    Start reading excluded list:      excluded list total length is 290    End reading excluded list    Start reading residue list:      residue_numbers is 4    End reading residue list    structure last modify date is 20211105END INITIALIZING MD CORESTART INITIALIZING MIDDLE LANGEVIN DYNAMICS:    atom_numbers is 57    target temperature is 300.00 K    friction coefficient is 10.00 ps^-1    random seed is 1476805525    structure last modify date is 20210826END INITIALIZING MIDDLE LANGEVIN DYNAMICSSTART INITIALIZING LENNADR JONES INFORMATION:    atom_numbers is 57    atom_LJ_type_number is 8    structure last modify date is 20220601END INITIALIZING LENNADR JONES INFORMATIONSTART INITIALIZING COULOMB INFORMATION:    structure last modify date is 20220603END INITIALIZING COULOMB INFORMATIONSTART INITIALIZING NB14 (nb14_in_file):    non-bond 14 numbers is 135    structure last modify date is 20211222END INITIALIZING NB14LISTED FORCES IS NOT INITIALIZEDSTART INITIALIZING BOND (bond_in_file):    bond_numbers is 56    structure last modify date is 20210830END INITIALIZING BONDSTART INITIALIZING BOND SOFT:END INITIALIZING SOFT BONDSTART INITIALIZING ANGLE (angle_in_file):    angle_numbers is 99    structure last modify date is 20210830END INITIALIZING ANGLEUREY BRADLEY IS NOT INITIALIZEDSTART INITIALIZING DIHEDRAL (dihedral_in_file):    dihedral_numbers is 137    structure last modify date is 20210830END INITIALIZING DIHEDRALIMPROPER DIHEDRAL IS NOT INITIALIZEDSTART INITIALIZING CMAP:CMAP IS NOT INITIALIZEDSTART INITIALIZING HARD WALL:END INITIALIZING HARD WALLSOFT WALLS ARE NOT INITIALIZEDRESTRAIN IS NOT INITIALIZEDSTART INITIALIZING RESTRAIN CV:    0 CV(s) found for restrainRESTRAIN CV IS NOT INITIALIZEDSTART INITIALIZING STEER CV:    0 CV(s) found for steerSTEER CV IS NOT INITIALIZEDSTART INITIALIZING META1D:    1 CV(s) found for meta1d      CV 0: torsion      reading 4 atom(s) for torsion            atom 0: 1            atom 1: 3            atom 2: 12            atom 3: 13            type of 'torsion' is 'dihedral'    reading 1 CV_period(s) for meta1d      CV_period 0: 6.283200    reading 1 CV_minimal(s) for meta1d      CV_minimal 0: -3.141600    reading 1 CV_maximum(s) for meta1d      CV_maximum 0: 3.141600    reading 1 dCV(s) for meta1d      dCV 0: 0.060000    reading 1 height(s) for meta1d      height 0: 1.000000    reading 1 sigma(s) for meta1d      sigma 0: 0.300000    reading 1 welltemp_factor(s) for meta1d      welltemp_factor 0: 50.000000    Potential update interval is set to write_information_interval by default    potential output file: meta1d_potential.txtEND INITIALIZING META1DVIRTUAL ATOM IS NOT INITIALIZEDSTART INITIALIZING CV PRINTER:    1 CV(s) found for print      CV 0: torsion            type of 'torsion' is 'dihedral'END INITIALIZING CV PRINTER------------------------------------------------------------------------------------------------------------         step =            5000,            time =          55.000,   temperature =          391.02,       potential =         -187.55,            LJ =         -6.25,         Coulomb =         -308.21,         nb14_LJ =            7.49,         nb14_EE =         23.77,            bond =         19.29,         angle =         31.16,      dihedral =         43.88,          meta1d =            1.32,         torsion =         -2.3809, ------------------------------------------------------------------------------------------------------------         step =         10000,            time =          60.000,   temperature =          298.28,       potential =         -183.35,            LJ =         -5.40,         Coulomb =         -316.07,         nb14_LJ =            9.65,         nb14_EE =         29.10,            bond =         19.95,         angle =         33.31,      dihedral =         43.66,          meta1d =            2.45,         torsion =         -2.5452, ------------------------------------------------------------------------------------------------------------         step =         15000,            time =          65.000,   temperature =          433.99,       potential =         -188.78,            LJ =         -4.70,         Coulomb =         -316.29,         nb14_LJ =            8.71,         nb14_EE =         23.72,            bond =         21.29,         angle =         26.82,      dihedral =         47.90,          meta1d =            3.77,         torsion =         -2.4958, ------------------------------------------------------------------------------------------------------------         step =         20000,            time =          70.000,   temperature =          249.71,       potential =         -183.19,            LJ =         -5.34,         Coulomb =         -329.13,         nb14_LJ =            9.73,         nb14_EE =         31.84,            bond =         22.68,         angle =         34.74,      dihedral =         50.28,          meta1d =            2.01,         torsion =         -1.9129, ------------------------------------------------------------------------------------------------------------         step =         25000,            time =          75.000,   temperature =          355.19,       potential =         -190.72,            LJ =         -7.80,         Coulomb =         -314.26,         nb14_LJ =            8.21,         nb14_EE =         23.10,            bond =         19.06,         angle =         29.59,      dihedral =         48.39,          meta1d =            3.01,         torsion =         -1.8429, ------------------------------------------------------------------------------------------------------------         step =         30000,            time =          80.000,   temperature =          407.06,       potential =         -181.22,            LJ =            0.79,         Coulomb =         -293.82,         nb14_LJ =            6.62,         nb14_EE =            5.15,            bond =         24.57,         angle =         32.20,      dihedral =         41.94,          meta1d =            1.32,         torsion =          0.4504, ------------------------------------------------------------------------------------------------------------         step =         35000,            time =          85.000,   temperature =          203.30,       potential =         -179.47,            LJ =            0.97,         Coulomb =         -298.49,         nb14_LJ =            8.28,         nb14_EE =            4.97,            bond =         27.75,         angle =         39.17,      dihedral =         35.27,          meta1d =            2.61,         torsion =          0.4398, ------------------------------------------------------------------------------------------------------------         step =         40000,            time =          90.000,   temperature =          310.20,       potential =         -190.12,            LJ =         -3.52,         Coulomb =         -296.07,         nb14_LJ =            9.64,         nb14_EE =         13.64,            bond =         16.37,         angle =         28.68,      dihedral =         39.10,          meta1d =            2.03,         torsion =         -0.0447, ------------------------------------------------------------------------------------------------------------         step =         45000,            time =          95.000,   temperature =          408.99,       potential =         -190.56,            LJ =         -2.71,         Coulomb =         -296.55,         nb14_LJ =            8.19,         nb14_EE =         10.34,            bond =         19.28,         angle =         30.85,      dihedral =         36.49,          meta1d =            3.57,         torsion =          0.0334, ------------------------------------------------------------------------------------------------------------         step =         50000,            time =         100.000,   temperature =          462.33,       potential =         -189.09,            LJ =         -0.75,         Coulomb =         -293.79,         nb14_LJ =            9.71,         nb14_EE =            6.49,            bond =         18.99,         angle =         27.54,      dihedral =         38.08,          meta1d =            4.63,         torsion =         -0.0077, ------------------------------------------------------------------------------------------------------------Core Run Wall Time: 13.704983 secondsCore Run Speed: 315.220093 ns/dayEnd Pause总结概要

本文简单介绍了一下CudaSPONGE高性能分子动力学模拟软件,其基于原生的CUDA C开发,具有极高的模拟效率。结合前处理工具Xponge用于生成和处理输入文件,可以很好的兼容目前常用的很多力场形式。
版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/cudasponge.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
参考链接


[*]https://www.cnblogs.com/bgalang/p/18316362
页: [1]
查看完整版本: CudaSPONGE高性能GPU分子模拟