Tuomo, Alan and Gideon have experienced some significant slowdowns in ODE integration going from 1.15 to 1.16. Alan's tracked down the problem to a single revision...
> For the source code I have attached, I have done some tests on different > versions. > 1.15: > Running time: 0m0.759s > Output result: -0.378978 (center of mass of dynamical variables) > > 1.16 > Running time: 0m10.670s > Output result: -0.378996 > > 1.16 (without revision 4771): > Running time: 0m0.754s > Output result: -0.378978 > > In revision 4771, the programmer intended to use e->dydt_out to update > e->dydt_in, rather than calculating a new e->dydt_in. Based on my > understanding on the source code, he thought that memcpy is better than a > new calculation. But, in my case, it makes a big performance regression. > Also, in my experiment, without 4771, results by 1.15 and 1.16 agree with > each other. So, I would like to question which version is not reliable. > For the reliability concern, I have sent an email to bug-gsl to question > about this. > > ============================== > > The source code: > http://www.filedropper.com/cannstdsubdelay Any thoughts? http://bzr.savannah.gnu.org/lh/gsl/trunk/revision/4771#ode-initval2/evolve.c seems incredibly benign at a glance. - Rhys
