AMBER Archive (2005)

Subject: Re: AMBER: nonbond_list question .

From: Robert Duke (rduke_at_email.unc.edu)
Date: Sun Jun 19 2005 - 09:25:37 CDT


Petr -
Thanks for pointing this out; I figured the bug had to be somewhere where it
did not matter, at least in terms of execution modes that pmemd also
supports. I also just wanted to point out that there is a faster example of
how to build lists, that also results in faster over-all execution. While I
have a long history using dynamic data structures including linked lists in
C/C++ development in industry (I like that level of algorithm complexity), I
did not resort to linked lists, but the "coordinate index table", which has
a number of benefits; this design actually produces good overall locality
and decent cache reference patterns, and that is why it produces
significantly faster code, when you look at the combined speed of list
building and force/energy evaluation. So, given that Caoch seemed
interested in speeding things up, I finally decided that I should speak up.
Regards - Bob

----- Original Message -----
From: "Petr Kulhanek" <kulhanek_at_chemi.muni.cz>
To: <amber_at_scripps.edu>
Sent: Sunday, June 19, 2005 6:06 AM
Subject: Re: AMBER: nonbond_list question .

> Hello,
>
> I would like to note that the error described by Caoch is located two
> times in AMBER8 and AMBER7 code.
>
> AMBER8
> ew_direct.f -> subroutine nonbond_list
> ew_setup.f -> subroutine setup_grids
>
> AMBER7
> ew_direct.f -> subroutine ewald_list
> ew_setup.f -> subroutine setup_grids
>
> Since the reported part is executed only if periodic == 0, I assume that
> the error can affect only calculation under non-periodic conditions
> (vacuum and CAP simulations). If I am right this also means that the pmemd
> cannot be used for the comparison because it is not able to handle such
> type of calculations.
>
> Best regards,
> Petr
>
>
> Robert Duke wrote:
>> Mike / Caoch -
>> I presume you all are aware that pmemd uses a completely different
>> mechanism (cit table driven) for doing nonbond list building? It still
>> produces the same results as sander, so I presume the bug below, while
>> clearly nonsensical, does not matter (I don't have a source machine up
>> now, but will have to take a look). My code is of course a bit on the
>> complex side too, but was engineered with speed in mind, primarily
>> through facilitating good cache utilization, and it does produce better
>> performance in the various nonbond routines.
>> Regards - Bob
>>
>> ----- Original Message ----- From: "Michael Crowley"
>> <crowley_at_scripps.edu>
>> To: <caoch_at_cherry.bio.titech.ac.jp>
>> Cc: <amber_at_scripps.edu>
>> Sent: Saturday, June 18, 2005 3:51 PM
>> Subject: Re: AMBER: nonbond_list question .
>>
>>
>>> Dear Caoch,
>>> Your questions are gladly received, the answer to the first is a
>>> resounding YES, you are correct, the code is in error, mea culpa.
>>> Bugfix on the way.
>>>
>>> As for the second, the only way to tell if the linked list is more
>>> efficient is to try it. If my memory serves, the current method was
>>> designed to have things as much contiguous in memory as possible.
>>> Please feel free to try another method if you think you can improve the
>>> performance.
>>>
>>> Sincerely,
>>> Mike
>>>
>>> -----------------------------------------------------------------
>>> Physical mail: Dr. Michael F. Crowley
>>> Department of Molecular Biology, TPC6
>>> The Scripps Research Institute
>>> 10550 North Torrey Pines Road
>>> La Jolla, California 92037
>>>
>>> Electronic mail: crowley_at_scripps.edu
>>> Telephone: 858/784-9290
>>> Fax: 858/784-8688
>>> -----------------------------------------------------------------
>>>
>>> On Sat, 18 Jun 2005 caoch_at_cherry.bio.titech.ac.jp wrote:
>>>
>>>> Hello:
>>>>
>>>> i want to do some modification to save CPU time. I am trying to
>>>> understand how amber building nonbond grid list. i have some questions:
>>>>
>>>> 1, in the nonbond_list subroutine amber write :
>>>>
>>>> nogrdptrs=nogrdptrs .or.( (nucgrd1 <= 2*nghb+2) .or. &
>>>> (nucgrd1 <= 2*nghb+2) .or. &
>>>> (nucgrd1 <= 2*nghb+2) )
>>>>
>>>> it seems there is a mistake in this syntax which perhaps
>>>> nogrdptrs=nogrdptrs .or.( (nucgrd1 <= 2*nghb+2) .or.
>>>> &
>>>> (nucgrd2 <= 2*nghb+2) .or. &
>>>> (nucgrd3 <= 2*nghb+2) )
>>>> is it right?
>>>>
>>>> 2, in the grid_ucell subroutine it seems Amber does't use a linked-list
>>>> method which i thick is the most efficient way. Are there some
>>>> references
>>>> of the algrithmn of building nonbond_list in AMBER?
>>>>
>>>> best regards
>>>> caoch
>>>> bio center tokyo institute of
>>>> technology
>>>> --
>>>> caoch_at_cherry.bio.titech.ac.jp
>>>> -----------------------------------------------------------------------
>>>> 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
>>>
>>
>>
>> -----------------------------------------------------------------------
>> 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
>

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