[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-gsl] ode version and compilers

From: Alan Fung
Subject: Re: [Help-gsl] ode version and compilers
Date: Tue, 5 Nov 2013 13:38:21 +0000 (UTC)
User-agent: Loom/3.14 (

Alan Fung <alanfung <at>> writes:

> I experience the same performance drop in my numerical simulations.  With
> GSL-1.15, the simulation takes 7.7s.  With GSL-1.16, it takes 2m12s.  My
> simulation is to integrate a group of ODEs.  GCC = 4.8.1.  OS = Kubuntu 13.10.
> some more figures on other computers:
> using the same simulation source code:
> GSL-1.15  <at>  Pentium 4 with GCC3.2: ~30s
> GSL-1.16  <at>  E7-4850 with GCC4.4: 5m
> I am quite sure that the problem is not due to different versions of GCC.  I
> believe that it should be due to differences between 1.15 and 1.16.

I have attached a version of my source code (sorry, this is not well-written

Actually, I have just found out why there is a regression.

I found that, if i undo the revision 4771
(, the performance of
1.16 will be at par with 1.15.

For the source code I have attached, I have done some tests on different
Running time: 0m0.759s
Output result: -0.378978 (center of mass of dynamical variables)

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:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]