AMBER Archive (2005)

Subject: Re: AMBER: pmemd - bug report

From: Robert Duke (rduke_at_email.unc.edu)
Date: Mon Jul 04 2005 - 22:58:14 CDT


Petr -
Quick update. My earlier assertion about the seg violation for test case 1
being due to an unallocated velocity array in minimization is incorrect.
This was probably true for earlier pmemd code, and then I changed it to
prevent just this sort of thing from occurring. So there is still a seg
violation, due to unknown causes, which I will track down. I suspect the
10-12 vdw code may have problems in pmemd, as it is pretty much untested
(there are no standard amber test cases for this, as far as I know).
Anyway, I will attempt to get to the bottom of all your test cases, and
either find an alternate cause or definitively show a wrong result from
dnint(). In the meantime, as I said earlier, it would be helpful if you
gave me more info on how your prmtop was made.
Thanks - Bob Duke

----- Original Message -----
From: "Petr Kulhanek" <kulhanek_at_chemi.muni.cz>
To: <amber_at_scripps.edu>
Sent: Monday, July 04, 2005 12:33 PM
Subject: AMBER: pmemd - bug report

> Dear AMBER developers,
>
> I would like to report a bug in PMEMD code (AMBER 8.0).
>
> The bug is responsible that some atoms are incorrectly addressed to
> respective subcells. The bug occures only if some atoms are very close to
> box walls (confirmed) or if they are on subcell interfaces (just
> hypothesis). As the result, program can crash or the non-bonded energy is
> not calculated correctly. The bug probably depends on architecture and/or
> used compiler.
>
> Test cases (for IA32, ifort 8.1.024, and 1CPU) can be downloaded from:
>
> segmentation fault
> http://www.ncbr.chemi.muni.cz/~kulhanek/downloads/tst1.tar.gz
>
> infinity Eel
> http://www.ncbr.chemi.muni.cz/~kulhanek/downloads/tst2.tar.gz
>
> incorrect Eel
> http://www.ncbr.chemi.muni.cz/~kulhanek/downloads/tst3.tar.gz
>
> In each archive, six results are present:
>
> mdout_bug_reference - calculated by pmemd on coordinates that leads to
> incorrect results
> mdout_bug_imaged_reference - calculated by pmemd on coordinates, which
> were processed by ptraj (solut is centered and system is imaged)
> mdout_fix_reference - calculated by modified pmemd (see below) on
> coordinates that leads to incorrect results with non-modified pmemd
> mdout_fix_imaged_reference - calculated by modified pmemd (see below) on
> coordinates, which were processed by ptraj (solut is centered and system
> is imaged)
> mdout_sander_reference - calculated by sander on coordinates that leads to
> incorrect results with non-modified pmemd
> mdout_sander_imaged_reference - calculated by sander on coordinates, which
> were processed by ptraj (solut is centered and system is imaged)
>
>
> The bug is located in following files:
>
> ew_direct_cit.f90 -> subroutine get_fract_crds (confirmed)
> fraction could be equal to 1.0 due to round errors, however the code
> suppose that it has to be less than 1.0
>
> ew_direct_cit.f90 -> subroutine setup_crd_idx_lst_tbl (confirmed)
> indexes to crd_idx_lst_tbl array are not checked if they are in legal
> ranges
> if fractions calculated in get_fract_crds are equal to 1.0 then indexes
> overflow crd_idx_lst_tbl boundaries
>
> ew_pairlist.f90 -> subroutine get_nb_list (confirmed) and probably
> get_nb_list_nonorthog (not tested)
> indexes to x_bkts, y_bkts, and especially z_bkts arrays are not checked if
> they are in legal ranges
> array overflows could occur even if fractions are in legal ranges because
> the indexes are calculated directly from imaged coordinates (different
> approach -> different round errors)
>
> ew_recip_cit.f90 -> subroutine claim_recip_imgs (hypothesis) and probably
> claim_recip_imgs_nonorthog (not tested)
> z_bkt_lo and z_bkt_hi, the same as above
>
>
> I prepared two patches for testing purposes. (reference source is amber8
> distro + bugfixes 1-44)
> http://www.ncbr.chemi.muni.cz/~kulhanek/downloads/check.patch
> http://www.ncbr.chemi.muni.cz/~kulhanek/downloads/fix.patch
>
> The first one extends code with boundary check in above mentioned
> subroutines. If some overflow occures then the program is immediatelly
> stop with error message. The second one fixes the problem (boundary check
> is still present).
> fix.patch is only intended for testing purposes because it does not solve
> possible problems in simulations using truncated octahedral box and it was
> not tested under parallel execution.
>
> Some comments at the end:
>
> I found this bug when I did postprocessing analysis of trajectory
> calculated by pmemd (MD was run without any problems as I remember). In
> the analysis, the electrostatic energy is calculated for several system
> subparts still under PBC. In the reported cases, only solut and solvent
> are present (ions were stripped away), so the test cases represent rare
> systems. However observed errors depend only on coordinates and I do not
> see any reason why it could not occur during normal MD !
> I think that it is neccessary to carefully check the pmemd code and remove
> possible problems with reported round errors when subcell indexes are
> calculated. Secondly, it is also important to keep the parts, in which
> subcell indexes are calculated, as same as possible to avoid different
> round errors.
>
> For SANDER developers:
>
> Please look to tst1.tar.gz archive. mdout_sander_reference and
> mdout_sander_imaged_reference differ. The difference is about 3 kcal/mol
> in Eel as well as in Evdw. I think that this could be a bug in sander.
>
> Best regards,
> Petr
>
> --
> ##################################################
> Petr Kulhanek
> ------------------------------------------------
> kulhanek_at_chemi.muni.cz
> ------------------------------------------------
> National Centre for Biomolecular Research
> Masaryk University Brno
> Kotlarska 2, CZ-611 37 Brno
> Czech Republic
> ##################################################
> -----------------------------------------------------------------------
> The AMBER Mail Reflector
> To post, send mail to amber_at_scripps.edu
> To unsubscribe, send "unsubscribe amber" to majordomo_at_scripps.edu
>

-----------------------------------------------------------------------
The AMBER Mail Reflector
To post, send mail to amber_at_scripps.edu
To unsubscribe, send "unsubscribe amber" to majordomo_at_scripps.edu