[gmx-users] single-precision *.tpr data after a double-precision run

Inon Sharony InonShar at post.TAU.ac.IL
Thu Aug 7 13:56:18 CEST 2008

  Hello GROMACS users!

I've posted a few questions in the last few days about
double-precision energy minimization for normal mode analysis, and
everything seems OK except I've been having a re-occurring problem:

The energy minimization procedure ends in
// grompp_d -f em.mdp -c b4nm_s_7.gro -n index.ndx
// mdrun_d -c b4nm_s_8.gro -v yes

Stepsize too small, or no change in energy.
Converged to machine precision,
but not to the requested precision Fmax < 1e-06

writing lowest energy coordinates.

Polak-Ribiere Conjugate Gradients converged to machine precision in 994 steps,
but did not reach the requested Fmax < 1e-06.
Potential Energy  =  3.83658151247483e+00
Maximum force     =  5.38105464411977e-05 on atom 1
Norm of force     =  2.07631890036341e-05

The Hessian matrix write ends in:
// grompp_d -f nm.mdp -c b4nm_s_8.gro -n index.ndx
// mdrun_d -c nm.gro -mtx nm.mtx -v yes

Reading file topol.tpr, VERSION 3.3.3 (double precision)
Loaded with Money

Small system size (N=7), using full Hessian format.
Allocating Hessian memory...

starting normal mode calculation 'Single Molecule of Pentane'
7 steps.

Maximum force: 3.51028e+02
Maximum force probably not small enough to ensure that you are in a
energy well. Be aware that negative eigenvalues may occur when the
resulting matrix is diagonalized.
Finished step 7 out of 7

Writing Hessian...

Clearly, the maximal force is minimized to about 1E-05 kJ / mole nm,  
but when the same *.gro file is read for the Hessian calculation, it  
reads about 1E+02!
I think the reason is found in the *.tpr file of the energy minimization run:

x (7x3):
       x[    0]={ 3.17800e+00,  3.49300e+00,  3.38500e+00}
       x[    1]={ 3.31300e+00,  3.51800e+00,  3.31600e+00}
       x[    2]={ 3.42500e+00,  3.43000e+00,  3.37400e+00}
       x[    3]={ 3.41400e+00,  3.28500e+00,  3.32700e+00}
       x[    4]={ 3.52700e+00,  3.20300e+00,  3.38900e+00}
       x[    5]={ 3.02600e+00,  3.50200e+00,  3.36900e+00}
       x[    6]={ 3.60400e+00,  3.07000e+00,  3.38200e+00}

This means that although the minimization was run in double precision,  
the atomic configuration is saved in single precision (the last two  
decimal places are not used). Does this mean that each time the  
optimized *.gro file is re-read, it needs to optimize these last two  
decimal places anew, and this makes the difference in SEVEN orders of  
magnitude in the maximal force?

Can anyone offer a solution?

Thanks in advance...


Some background information:

I'm running GROMACS 3.3.3 on the following system (with bash):

/* composed by Inon Sharony August 6th, 2008              */
/* -----------------------------------------              */
/*                                                        */
/* this file contains the hardware information for Sodium */
/* the first part details the video card                  */
/* the second part details the CPUs                       */
/* the third part details the BIOS and motherboard        */
/*                                                        */

lspci -v  /* list PCI -verbose */


01:00.0 VGA compatible controller: nVidia Corporation GeForce 8500 GT  
(rev a1) (
prog-if 00 [VGA controller])
         Subsystem: LeadTek Research Inc. Unknown device 2a94
         Flags: bus master, fast devsel, latency 0, IRQ 16
         Memory at e2000000 (32-bit, non-prefetchable) [size=16M]
         Memory at d0000000 (64-bit, prefetchable) [size=256M]
         Memory at e0000000 (64-bit, non-prefetchable) [size=32M]
         I/O ports at 2000 [size=128]
         Capabilities: [60] Power Management version 2
         Capabilities: [68] Message Signalled Interrupts: Mask- 64bit+  
         Capabilities: [78] Express Endpoint, MSI 00
         Capabilities: [100] Virtual Channel <?>
         Capabilities: [128] Power Budgeting <?>
         Capabilities: [600] Vendor Specific Information <?>
         Kernel driver in use: nvidia
         Kernel modules: nvidia, nvidiafb



cat /proc/cpuinfo /* CPUs information */

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
stepping        : 11
cpu MHz         : 1596.000
cache size      : 4096 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge  
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe  
syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor  
ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips        : 4802.25
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:




# dmidecode 2.7
SMBIOS 2.4 present.
39 structures occupying 1779 bytes.
Table at 0x000E3300.

Handle 0x0000, DMI type 4, 35 bytes.
Processor Information
         Socket Designation: J1PR
         Type: Central Processor
         Family: <OUT OF SPEC>
         Manufacturer: Intel(R) Corporation
         ID: FB 06 00 00 FF FB EB BF
         Version: Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
         Voltage: 1.6 V
         External Clock: 266 MHz
         Max Speed: 4000 MHz
         Current Speed: 2400 MHz
         Status: Populated, Enabled
         Upgrade: <OUT OF SPEC>
         L1 Cache Handle: 0x0003
         L2 Cache Handle: 0x0001
         L3 Cache Handle: Not Provided
         Serial Number: Not Specified
         Asset Tag: Not Specified
         Part Number: Not Specified


/* BIOS information */

Handle 0x0004, DMI type 0, 24 bytes.
BIOS Information
         Vendor: Intel Corp.
         Version: DPP3510J.86A.0326.2007.1206.2256
         Release Date: 12/06/2007
         Address: 0xF0000
         Runtime Size: 64 kB
         ROM Size: 1024 kB
                 PCI is supported
                 BIOS is upgradeable
                 BIOS shadowing is allowed
                 Boot from CD is supported
                 Selectable boot is supported
                 EDD is supported
                 8042 keyboard services are supported (int 9h)
                 Serial services are supported (int 14h)
                 Printer services are supported (int 17h)
                 CGA/mono video services are supported (int 10h)
                 ACPI is supported
                 USB legacy is supported
                 ATAPI Zip drive boot is supported
                 BIOS boot specification is supported
                 Function key-initiated network boot is supported
                 Targeted content distribution is supported
         BIOS Revision: 0.0
         Firmware Revision: 0.0


/* Motherboard information */

Handle 0x0006, DMI type 2, 20 bytes.
Base Board Information
         Manufacturer: Intel Corporation
         Product Name: DP35DP
         Version: AAD81073-207
         Serial Number: USDP747001WP
         Asset Tag: Base Board Asset Tag
                 Board is a hosting board
                 Board is replaceable
         Location In Chassis: Base Board Chassis Location
         Chassis Handle: 0x0007
         Type: Unknown
         Contained Object Handles: 0

Inon   Sharony
ינון     שרוני
Please consider your environmental responsibility before printing
this e-mail.

More information about the gromacs.org_gmx-users mailing list