An "Assertion failed" error occurs in GROMACS 2023.1 when using annealing
Summary
Hi,
An "Assertion failed" error occurs When I attempt NPT simulation on two groups using "annealing" keyword in GROMCACS 2023.1. All file that I think will help you has been packed in one issue.zip . All simulation runing on single GPU using amber 14sb(ff14sb). Here is envriment setting about GROMACS:
#Gromacs
export GMX_GPU_DD_COMMS=true
export GMX_CUDA_GRAPH=true
export GMX_GPU_PME_DECOMPOSITION=true
export GMX_GPU_PME_PP_COMMS=true
export GMX_FORCE_UPDATE_DEFAULT_GPU=true
Here is the detail of error message:
Program: gmx mdrun, version 2023.1
Source file: src/gromacs/mdtypes/inputrec.cpp (line 1674)
Function: assertValidEnsembleTemperatureSetting(EnsembleTemperatureSetting)::<lambda()>
Assertion failed:
Condition: rts == EnsembleTemperatureSetting::NotAvailable || rts == EnsembleTemperatureSetting::Constant || rts == EnsembleTemperatureSetting::Variable
At this point in the code the ensemble temperature setting cannot be auto
For more information and tips for troubleshooting, please check the GROMACS
website at http://www.gromacs.org/Documentation/Errors
GROMACS version
:-) GROMACS - gmx, 2023.1 (-:
Executable: /home/yangzichen/Software/GMX-2023.1/bin/gmx
Data prefix: /home/yangzichen/Software/GMX-2023.1
Working dir: /home/yangzichen/Documents/ZWJ/MD_H4A
Command line:
gmx --version
GROMACS version: 2023.1
Precision: mixed
Memory model: 64 bit
MPI library: thread_mpi
OpenMP support: enabled (GMX_OPENMP_MAX_THREADS = 128)
GPU support: CUDA
NB cluster size: 8
SIMD instructions: AVX2_256
CPU FFT library: fftw-3.3.10-sse2-avx-avx2-avx2_128
GPU FFT library: cuFFT
Multi-GPU FFT: none
RDTSCP usage: enabled
TNG support: enabled
Hwloc support: disabled
Tracing support: disabled
C compiler: /usr/bin/gcc-11 GNU 11.3.0
C compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx2 -mfma -Wno-missing-field-initializers -O3 -DNDEBUG
C++ compiler: /usr/bin/g++-11 GNU 11.3.0
C++ compiler flags: -fexcess-precision=fast -funroll-all-loops -mavx2 -mfma -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG
BLAS library: External - detected on the system
LAPACK library: External - detected on the system
CUDA compiler: /opt/cuda/bin/nvcc nvcc: NVIDIA (R) Cuda compiler driver;Copyright (c) 2005-2023 NVIDIA Corporation;Built on Mon_Apr__3_17:16:06_PDT_2023;Cuda compilation tools, release 12.1, V12.1.105;Build cuda_12.1.r12.1/compiler.32688072_0
CUDA compiler flags:-std=c++17;--generate-code=arch=compute_50,code=sm_50;--generate-code=arch=compute_52,code=sm_52;--generate-code=arch=compute_60,code=sm_60;--generate-code=arch=compute_61,code=sm_61;--generate-code=arch=compute_70,code=sm_70;--generate-code=arch=compute_75,code=sm_75;--generate-code=arch=compute_80,code=sm_80;--generate-code=arch=compute_86,code=sm_86;--generate-code=arch=compute_89,code=sm_89;--generate-code=arch=compute_90,code=sm_90;-Wno-deprecated-gpu-targets;--generate-code=arch=compute_53,code=sm_53;--generate-code=arch=compute_80,code=sm_80;-use_fast_math;-Xptxas;-warn-double-usage;-Xptxas;-Werror;-D_FORCE_INLINES;-fexcess-precision=fast -funroll-all-loops -mavx2 -mfma -Wno-missing-field-initializers -Wno-cast-function-type-strict -fopenmp -O3 -DNDEBUG
CUDA driver: 12.10
CUDA runtime: 12.10
Steps to reproduce
Here is my NPT file:
title = System in water 1ns NPT;
define = -DPOSRES ;
; Run parameters
integrator = md ; leap-frog integrator
nsteps = 500000 ; 1 * 10000 = 1000ps
dt = 0.002 ; 1 fs
; Output control
nstenergy = 500 ; save energies every 1.0 ps
nstlog = 500 ; update log file every 1.0 ps
; Bond parameters
constraint_algorithm = lincs ; holonomic constraints
constraints = H-bonds ; H-bonds constrained
lincs_iter = 1 ; accuracy of LINCS
lincs_order = 4 ; also related to accuracy
; Neighborsearching
cutoff-scheme = Verlet
ns_type = grid ; search neighboring grid cells
nstlist = 500 ; 500 fs, largely irrelevant with Verlet
nstcomm = 500
nstcalcenergy = 500
rcoulomb = 1.0 ; Short-range electrostatic cut-off
rvdw = 1.0 ; Short-range Van der Waals cut-off
; Electrostatics
coulombtype = PME ; Particle Mesh Ewald for long-range electrostatics
pme_order = 4 ; cubic interpolation
fourierspacing = 0.16 ; grid spacing for FFT
; Temperature coupling is on
tcoupl = V-rescale ; modified Berendsen thermostat
annealing = single single
annealing-npoints = 3 3
annealing-time = 0 100 400 0 100 400
annealing-temp = 273 373 298.15 273 373 298.15
tc-grps = Other Water_and_ions ; two coupling groups - more accurate
tau_t = 0.2 0.2 ; time constant, in ps
ref_t = 298.15 298.15 ; reference temperature, one for each group, in K
; Pressure coupling is on
pcoupl = Berendsen ; Pressure coupling on in NPT
pcoupltype = isotropic ; uniform scaling of box vectors
tau_p = 2.5 ; time constant, in ps
ref_p = 1.0 ; reference pressure, in bar
compressibility = 4.5e-5 ; isothermal compressibility of water, bar^-1
refcoord_scaling = com
; Periodic boundary conditions
pbc = xyz ; Periodic Boundary Conditions
; Dispersion correction
DispCorr = EnerPres ; account for cut-off vdW scheme
; Velocity generation
gen_vel = yes ; assign velocities from Maxwell distribution
gen_temp = 273.15 ; temperature for Maxwell distribution
gen_seed = -1 ; generate a random seed
I get NPT.tpr via gmx grompp, here is my command:
gmx grompp -f NPT.mdp -o NPT.tpr -p topol.top -c EM_cg.gro -r EM_cg.gro -maxwarn 5
And then, there is log about gmx grompp
:-) GROMACS - gmx grompp, 2023.1 (-:
Executable: /home/yangzichen/Software/GMX-2023.1/bin/gmx
Data prefix: /home/yangzichen/Software/GMX-2023.1
Working dir: /home/yangzichen/Documents/ZWJ/MD_H4A
Command line:
gmx grompp -f NPT.mdp -o NPT.tpr -p topol.top -c EM_cg.gro -r EM_cg.gro -maxwarn 5
Ignoring obsolete mdp entry 'title'
Ignoring obsolete mdp entry 'ns_type'
WARNING 1 [file NPT.mdp]:
The Berendsen barostat does not generate any strictly correct ensemble,
and should not be used for new production simulations (in our opinion).
For isotropic scaling we would recommend the C-rescale barostat that also
ensures fast relaxation without oscillations, and for anisotropic scaling
you likely want to use the Parrinello-Rahman barostat.
Setting the LD random seed to -587748738
Generated 5460 of the 5460 non-bonded parameter combinations
Generating 1-4 interactions: fudge = 0.5
Generated 5460 of the 5460 1-4 parameter combinations
Excluding 3 bonded neighbours molecule type 'CYC'
turning H bonds into constraints...
Excluding 3 bonded neighbours molecule type 'H4A'
turning H bonds into constraints...
Excluding 2 bonded neighbours molecule type 'SOL'
turning H bonds into constraints...
Excluding 1 bonded neighbours molecule type 'K'
turning H bonds into constraints...
Excluding 1 bonded neighbours molecule type 'CL'
turning H bonds into constraints...
Setting gen_seed to -633864259
Velocities were taken from a Maxwell distribution at 273.15 K
The center of mass of the position restraint coord's is 4.818 6.348 5.105
The center of mass of the position restraint coord's is 4.818 6.348 5.105
Analysing residue names:
There are: 144 Other residues
There are: 58457 Water residues
There are: 360 Ion residues
Analysing residues not classified as Protein/DNA/RNA/Water and splitting into groups...
Simulated annealing for group Other: Single, 3 timepoints
Time (ps) Temperature (K)
0.0 273.0
100.0 373.0
400.0- 298.1
Simulated annealing for group Water_and_ions: Single, 3 timepoints
Time (ps) Temperature (K)
0.0 273.0
100.0 373.0
400.0- 298.1
Number of degrees of freedom in T-Coupling group Other is 33341.74
Number of degrees of freedom in T-Coupling group Water_and_ions is 351819.25
Simulated tempering is used with multiple T-coupling groups: setting the ensemble temperature to not available
The largest distance between excluded atoms is 0.403 nm between atom 10545 and 10551
Determining Verlet buffer for a tolerance of 0.005 kJ/mol/ps at 298.15 K
Calculated rlist for 1x1 atom pair-list as 2.745 nm, buffer size 1.745 nm
Set rlist, assuming 4x4 atom pair-list, to 2.326 nm, buffer size 1.326 nm
Note that mdrun will redetermine rlist based on the actual pair-list setup
NOTE 1 [file NPT.mdp]:
Removing center of mass motion in the presence of position restraints
might cause artifacts. When you are using position restraints to
equilibrate a macro-molecule, the artifacts are usually negligible.
Calculating fourier grid dimensions for X Y Z
Using a fourier grid of 80x80x80, spacing 0.156 0.156 0.156
Estimate for the relative computational load of the PME mesh part: 0.03
This run will generate roughly 18 Mb of data
There was 1 NOTE
There was 1 WARNING
GROMACS reminds you: "Art is what you can get away with." (Andy Warhol)
It seems that the program has successfully recognized two simulated annealing group(CCY and Water_and_ions).
and then, I want to run NPT simulation via mdrun. Here is my code:
gmx mdrun -v -deffnm NPT -s NPT.tpr -ntomp 12 -pin on -ntmpi 1 -update gpu
An "Assertion failed" error occurs.
:-) GROMACS - gmx mdrun, 2023.1 (-:
Executable: /home/yangzichen/Software/GMX-2023.1/bin/gmx
Data prefix: /home/yangzichen/Software/GMX-2023.1
Working dir: /home/yangzichen/Documents/ZWJ/MD_H4A
Command line:
gmx mdrun -v -deffnm NPT -s NPT.tpr -ntomp 12 -pin on -ntmpi 1 -update gpu
Reading file NPT.tpr, VERSION 2023.1 (single precision)
Update groups can not be used for this system because atoms that are (in)directly constrained together are interdispersed with other atoms
1 GPU selected for this run.
Mapping of GPU IDs to the 2 GPU tasks in the 1 rank on this node:
PP:0,PME:0
PP tasks will do (non-perturbed) short-ranged interactions on the GPU
PP task will update and constrain coordinates on the GPU
PME tasks will do all aspects on the GPU
Using 1 MPI thread
Using 12 OpenMP threads
starting mdrun 'CYC(53) and H4A(91) with 0.154M NaCl in water'
500000 steps, 1000.0 ps.
-------------------------------------------------------
Program: gmx mdrun, version 2023.1
Source file: src/gromacs/mdtypes/inputrec.cpp (line 1674)
Function: assertValidEnsembleTemperatureSetting(EnsembleTemperatureSetting)::<lambda()>
Assertion failed:
Condition: rts == EnsembleTemperatureSetting::NotAvailable || rts == EnsembleTemperatureSetting::Constant || rts == EnsembleTemperatureSetting::Variable
At this point in the code the ensemble temperature setting cannot be auto
For more information and tips for troubleshooting, please check the GROMACS
website at http://www.gromacs.org/Documentation/Errors
What is the current bug behavior?
Assertion failed
What did you expect the correct behavior to be?
NPT simulation on two groups using "annealing" keyword run correctly