[gmx-users] Tabulated potential segmentation fault

Mark Abraham Mark.Abraham at anu.edu.au
Mon Apr 16 18:06:06 CEST 2012


On 17/04/2012 1:50 AM, Laura Leay wrote:
> On Fri, 2012-04-13 at 11:01 +1000, Mark Abraham wrote:
>> On 13/04/2012 2:48 AM, Laura Leay wrote:
>>> All,
>>>
>>> I'm trying to run a tabulated soft core potential with the form V =
>>> A + Br^2 + Cr^3 up to about r=0.1 A and the normal LJ 6-12 potential
>>> after this.
>>>
>>> I've chosen the parameters of this equation to be the same for all
>>> atoms in my system (a polymer containing carbon, nitrogen and
>>> hydrogen). I've not assigned any charges to the system.
>>>
>>> Running on Gromacs version 4.5.4 single precision on a high
>>> perfomance computing cluster the first 50 or so steps run fine,
>>> energies seem reasonable but then the simulation crashes with a
>>> segmentation fault. I submitted the job using the comand mdrun
>>> -table table.xvg -v -nt $NSLOTS -pd
>>>
>>> The job seems to run ok on my own desktop PC although I've not tried
>>> running it for more than a few minutes to check that it would indeed
>>> run.
>>>
>>> If anyone can tell me why this won't run on the computing cluster
>>> I'd appreciate it.
>>>
>>> the first few lines of my table file look like this:
>>>
>>>     0.0000000E+00   0.0000000E+00   0.0000000E+00   0.0000000E+00
>>> 0.0000000E+00   0.1500000E+05   0.0000000E+00
>>>     0.2000000E-02   0.0000000E+00   0.0000000E+00   0.3045913E-01
>>> -0.4568869E+02   0.1499547E+05   0.4525801E+04
>>>     0.4000000E-02   0.0000000E+00   0.0000000E+00   0.2436730E+00
>>> -0.1827548E+03   0.1498190E+05   0.9051602E+04
>>>     0.6000000E-02   0.0000000E+00   0.0000000E+00   0.8223965E+00
>>> -0.4111982E+03   0.1495927E+05   0.1357740E+05
>>>     0.8000000E-02   0.0000000E+00   0.0000000E+00   0.1949384E+01
>>> -0.7310191E+03   0.1492759E+05   0.1810320E+05
>>>     0.1000000E-01   0.0000000E+00   0.0000000E+00   0.3807391E+01
>>> -0.1142217E+04   0.1488685E+05   0.2262901E+05
>>>     0.1200000E-01   0.0000000E+00   0.0000000E+00   0.6579172E+01
>>> -0.1644793E+04   0.1483707E+05   0.2715481E+05
>>>     0.1400000E-01   0.0000000E+00   0.0000000E+00   0.1044748E+02
>>> -0.2238746E+04   0.1477824E+05   0.3168061E+05
>>>     0.1600000E-01   0.0000000E+00   0.0000000E+00   0.1559507E+02
>>> -0.2924076E+04   0.1471035E+05   0.3620641E+05
>>>     0.1800000E-01   0.0000000E+00   0.0000000E+00   0.2220471E+02
>>> -0.3700784E+04   0.1463341E+05   0.4073221E+05
>>>     0.2000000E-01   0.0000000E+00   0.0000000E+00   0.3045913E+02
>>> -0.4568869E+04   0.1454742E+05   0.4525801E+05
>>>     0.2200000E-01   0.0000000E+00   0.0000000E+00   0.4054110E+02
>>> -0.5528332E+04   0.1445238E+05   0.4978381E+05
>>>
>>> This is my mdp file (note that I turned dispersion correction off to
>>> see if this was the problem but it would seem that it is not):
>>>
>>> ; VARIOUS PREPROCESSING OPTIONS
>>> title                    = Yo
>>> cpp                      = /usr/bin/cpp
>>> include                  =
>>> define                   =
>>>
>>> ; RUN CONTROL PARAMETERS
>>> integrator               = md ;md for simulation, steep for Emin
>>> ; Start time and timestep in ps
>>> tinit                    = 0
>>> dt                       = 0.001
>>> nsteps                   =100000; 1000000 ;for simulation
>>> ; For exact run continuation or redoing part of a run
>>> init_step                = 0
>>> ; mode for center of mass motion removal
>>> comm-mode                = Linear
>>> ; number of steps for center of mass motion removal
>>> nstcomm                  = 1
>>> ; group(s) for center of mass motion removal
>>> comm-grps                =
>>>
>>> ; LANGEVIN DYNAMICS OPTIONS
>>> ; Temperature, friction coefficient (amu/ps) and random seed
>>> ;bd-temp                  = 300
>>> bd-fric                  = 0
>>> ld-seed                  = 1993
>>>
>>> ; ENERGY MINIMIZATION OPTIONS
>>> ; Force tolerance and initial step-size
>>> emtol                    = 100
>>> emstep                   = 0.01
>>> ; Max number of iterations in relax_shells
>>> niter                    = 20
>>> ; Step size (1/ps^2) for minimization of flexible constraints
>>> fcstep                   = 0
>>> ; Frequency of steepest descents steps when doing CG
>>> fcstep                   = 0
>>> ; Frequency of steepest descents steps when doing CG
>>> nstcgsteep               = 1000
>>> nbfgscorr                = 10
>>>
>>> ; OUTPUT CONTROL OPTIONS
>>> ; Output frequency for coords (x), velocities (v) and forces (f)
>>> nstxout                  = 0
>>> nstvout                  = 0
>>> nstfout                  = 0
>>> ; Checkpointing helps you continue after crashes
>>> nstcheckpoint            = 1000
>>> ; Output frequency for energies to log file and energy file
>>> nstlog                   = 50
>>> nstenergy                = 50
>>> ; Output frequency and precision for xtc file
>>> nstxtcout                = 50
>>> xtc-precision            = 1000
>>> ; This selects the subset of atoms for the xtc file. You can
>>> ; select multiple groups. By default all atoms will be written.
>>> xtc-grps                 =
>>> ; Selection of energy groups
>>> energygrps               =
>>>
>>> ; NEIGHBORSEARCHING PARAMETERS
>>> ; nblist update frequency
>>> nstlist                  = 10
>>> ; ns algorithm (simple or grid)
>>> ns_type                  = simple
>>> ; Periodic boundary conditions: xyz (default), no (vacuum)
>>> ; or full (infinite systems only)
>>> pbc                      = xyz
>>> ; nblist cut-off
>>> rlist                    = 0.9
>>> domain-decomposition     = no
>>>
>>> ; OPTIONS FOR ELECTROSTATICS AND VDW
>>> ; Method for doing electrostatics
>>> coulombtype              = user
>>> rcoulomb-switch          = 0
>>> rcoulomb                 = 0.9
>>> ; Dielectric constant (DC) for cut-off or DC of reaction field
>>> epsilon-r                = 1
>>> ; Method for doing Van der Waals
>>> vdw-type                 = user
>>> ; cut-off lengths
>>> rvdw-switch              = 0
>>> rvdw                     = 0.9
>>> ; Apply long range dispersion corrections for Energy and Pressure
>>> DispCorr                 = no ;EnerPres
>>> ; Extension of the potential lookup tables beyond the cut-off
>>> table-extension          = 2.0
>>> ; Spacing for the PME/PPPM FFT grid
>>> fourierspacing           = 0.12
>>> ; FFT grid size, when a value is 0 fourierspacing will be used
>>> fourier_nx               = 0
>>> fourier_ny               = 0
>>> fourier_nz               = 0
>>> ; EWALD/PME/PPPM parameters
>>> pme_order                = 4
>>> ewald_rtol               = 1e-05
>>> ewald_geometry           = 3d
>>> epsilon_surface          = 0
>>> optimize_fft             = no
>>>
>>> ; GENERALIZED BORN ELECTROSTATICS
>>> ; Algorithm for calculating Born radii
>>> gb_algorithm             = Still
>>> ; Frequency of calculating the Born radii inside rlist
>>> nstgbradii               = 1
>>> ; Cutoff for Born radii calculation; the contribution from atoms
>>> ; between rlist and rgbradii is updated every nstlist steps
>>> rgbradii                 = 2
>>> ; Salt concentration in M for Generalized Born models
>>> gb_saltconc              = 0
>>>
>>> ; IMPLICIT SOLVENT (for use with Generalized Born electrostatics)
>>> implicit_solvent         = No
>>>
>>> ; OPTIONS FOR WEAK COUPLING ALGORITHMS
>>> ; Temperature coupling
>>> Tcoupl                   = berendsen
>>> ; Groups to couple separately
>>> tc-grps                  = System
>>> ; Time constant (ps) and reference temperature (K)
>>> tau_t                    = 0.1
>>> ref_t                    = 300
>>> ; Pressure coupling
>>> Pcoupl                   = no ;berendsen
>>> Pcoupltype               = isotropic
>>> ; Time constant (ps), compressibility (1/bar) and reference P (bar)
>>> tau_p                    = 1.0
>>> compressibility          = 4.5e-5
>>> ref_p                    = 1.0
>>> ; Random seed for Andersen thermostat
>>> andersen_seed            = 815131
>>>
>>> ; SIMULATED ANNEALING
>>> ; Type of annealing for each temperature group (no/single/periodic)
>>> annealing                = no
>>> ; Number of time points to use for specifying annealing in each
>>> group
>>> annealing_npoints        =
>>> ; List of times at the annealing points for each group
>>> annealing_time           =
>>> ; Temp. at each annealing point, for each group.
>>> annealing_temp           =
>>> ; GENERATE VELOCITIES FOR STARTUP RUN
>>> gen_vel                  = yes
>>> gen_temp                 = 300
>>> gen_seed                 = 1993
>>>
>>> ; OPTIONS FOR BONDS
>>> ;constraints              = all-bonds
>>> ; Type of constraint algorithm
>>> constraint-algorithm     = Lincs
>>> ; Do not constrain the start configuration
>>> unconstrained-start      = no
>>> ; Use successive overrelaxation to reduce the number of shake
>>> iterations
>>> Shake-SOR                = no
>>> ; Relative tolerance of shake
>>> shake-tol                = 1e-04
>>> ; Highest order in the expansion of the constraint coupling matrix
>>> lincs-order              = 4
>>> ; Number of iterations in the final step of LINCS. 1 is fine for
>>> ; normal simulations, but use 2 to conserve energy in NVE runs.
>>> ; For energy minimization with constraints it should be 4 to 8.
>>> lincs-iter               = 1
>>> ; Lincs will write a warning to the stderr if in one step a bond
>>> ; rotates over more degrees than
>>> lincs-warnangle          = 30
>>> ; Convert harmonic bonds to morse potentials
>>> morse                    = no
>>>
>>> ; ENERGY GROUP EXCLUSIONS
>>> ; Pairs of energy groups for which all non-bonded interactions are
>>> excluded
>>> energygrp_excl           =
>>>
>>>
>> You're probably just
>> http://www.gromacs.org/Documentation/Terminology/Blowing_Up. I suggest
>> equilibrating with a normal potential, and then shifting to your
>> special regime. Then you can exclude initial conditions as the source
>> of the problem, so long as your special regime is not wildly different
>> from a normal potential.
>>
>> Mark
> The system was first energy minimised without the tabulated potential.
> It seems as if it is not blowing up on my desktop PC. Its currently up
> to step 4800 (compared to step 50 running on the cluster) and still
> going. I'm going to continue to run the job on my desktop PC to see if
> it will complete.
>
> The problem definitely seems to lie with the job running on the
> computing cluster but I don't know enough about parallel computing etc
> to know what the problem is. Any help would be appreciated,

Numerical integration from marginally stable initial conditions can 
succeed or fail pretty randomly. See 
http://www.gromacs.org/Documentation/Terminology/Reproducibility for 
discussion. On the information we have, the hypothesis that running in 
parallel causes problems is tenuous. Do you need to use mdrun -pd for 
some reason?

Mark



More information about the gromacs.org_gmx-users mailing list