[gmx-developers] Optimizing free energy calculations
schmidt at chem.wisc.edu
Wed Dec 31 15:23:39 CET 2008
I guess I'm doing the worst case scenario: perturbing a large part of
the system with PME. (I am calculating the free energy difference
between an ordered and disordered phase of a clay system using some
rather creative thermodynamic integration. It uses some position
constraints and some charge scaling.) I think its one of the cases that
'could' be done more efficiently, as it would (in theory) work with
In practice, during the long equilibrations, I am just doing this
interpolation manually and setting 'free energy = no'.
Thanks for the feedback; I won't waste my time trying to hack this in,
as it sounds like major changes are on the way.
> As Berk mentioned we're already working on it (as part of a much
> larger generalization of the FE stuff) :-)
> However, for most applications you are only perturbing a small part of
> the system, and since only the perturbed interactions use the special
> FE kernel the performance hit is negligible. A bigger hit comes if you
> use PME together with free energy, since that requires two reciprocal
> space evaluations.
> Just out of curiosity - do you have a case where you are perturbing a
> large part of the system, or are you using PME? If not, it might be
> something else (read: bug :-)
> On Dec 30, 2008, at 4:09 PM, JR Schmidt wrote:
>> In its present incarnation, GROMACS is much slower when running a
>> free energy calculation. From the code, this seems to be because the
>> assembly language kernel is not used when running free energy
>> calculation. Given the increased complexity of the code required for
>> such calculations, this is not an unreasonable alternative.
>> However, it seems that a dramatic speedup could be accomplished by
>> calculating dg/dlambda only every x steps, rather than every step.
>> In this way, the efficient assembly language kernel could be used for
>> the vast majority of time steps (using the interpolated parameters),
>> which the fortran non-bonded routine is used only every x steps when
>> dg/dlambda is calculated and stored.
>> Since calculating dg/dlambda every step is rather useless anyway (due
>> to the statistical correlation), this seems like an excellent way to
>> increase efficiency.
>> This addition would also have a wonder side effect. By setting x =
>> 0, it would be trivial to rapidly equilibrate a system at a non-zero
>> value of lambda. Right now, these equilibrations are very slow,
>> since the use the free energy kernel (since lambda is non-zero) even
>> though dg/dlambda is not of interest during the equilibration
>> period. The only alternative that I can find currently is to make a
>> new topology file at each value of lambda, and then equilibrate using
>> 'free energy = no'.
>> Is there a reason that this is not feasible? Would it be difficult
>> to accomplish?
>> J.R. Schmidt
>> Assistant Professor of Chemistry
>> Room 8305D
>> Department of Chemistry
>> University of Wisconsin-Madison
>> 1101 University Ave
>> Madison, WI 53706
>> Phone: (608) 262-2996
>> Fax: (608) 262-9918
>> E-mail: schmidt at chem.wisc.edu
>> gmx-developers mailing list
>> gmx-developers at gromacs.org
>> Please don't post (un)subscribe requests to the list. Use the www
>> interface or send it to gmx-developers-request at gromacs.org.
> gmx-developers mailing list
> gmx-developers at gromacs.org
> Please don't post (un)subscribe requests to the list. Use thewww
> interface or send it to gmx-developers-request at gromacs.org.
Assistant Professor of Chemistry
Department of Chemistry
University of Wisconsin-Madison
1101 University Ave
Madison, WI 53706
Phone: (608) 262-2996
Fax: (608) 262-9918
E-mail: schmidt at chem.wisc.edu
More information about the gromacs.org_gmx-developers