SHAKE Tolerance and Performance

From: Aron Broom (
Date: Thu Mar 01 2012 - 01:04:28 CST

Dear NAMD users,

I've been mildly puzzled for some time about why I've been getting
substantially better performance using AMBER on GPUs compared with NAMD.
At some point, in playing around with something for a particular system, I
discovered that in AMBER when one uses SHAKE and a 2fs timestep, you get
pretty close to a 100% boost in performance. In NAMD, you generally get
something in range of 15-30%, and since I'd been doing most of my work with
SHAKE, that seemed to explain the difference. In looking into things a
bit, it seems that the default SHAKE Tolerance for bond distance when using
NAMD is 1e-8 angstroms, and with AMBER it is 1e-5 angstroms. I did a quick
test changing the NAMD tolerance to the AMBER one, and voila! You get ~100%
speed boost from using SHAKE, which makes NAMD and AMBER approximately the
same in terms of performance on a GPU.

So the question: is there some well documented reason to go a low as 1e-8?
Or is that just the default for safety reasons? I found an old mailing
list thread from Nicholas Glykos asking a similar question (although he
didn't at the time point out the performance difference), but I found no
replies. I mean, based on a gut feeling and nothing else of any value, it
seems like 1e-5 angstroms is already a pretty low margin of error, that is
to say, with a 1fs timestep wouldn't the bond lengths oscillate by more
than that anyway?


Aron Broom M.Sc
PhD Student
Department of Chemistry
University of Waterloo

This archive was generated by hypermail 2.1.6 : Mon Dec 31 2012 - 23:21:16 CST