[R-sig-dyn-mod] lsoda FASTER than ode45 (was: lsoda (deSolve) order of magnitude slower than ode45)

Maciek Jacek Swat maciej.swat at gmail.com
Wed Nov 22 12:42:15 CET 2017


Thanks Andras, but I create the R code 'on the fly' as part of a workflow,
is there a way to automatically create the C/FORTRAN code as well?
Any pointers would be welcome,. M

On Wed, Nov 22, 2017 at 11:34 AM, Andras Farkas <motyocska at yahoo.com> wrote:

> As Thomas have mentioned implement it in C or Fortran, will do wonders to
> speed
>
>
> Andras
>
> Sent from Yahoo Mail on Android
> <https://overview.mail.yahoo.com/mobile/?.src=Android>
>
> On Wed, Nov 22, 2017 at 6:30 AM, Maciek Jacek Swat
> <maciej.swat at gmail.com> wrote:
> Thanks Thomas, much appreciated!
>
> However, the Nanda model was only used to learn how to use deSolve most
> effectively.
> Unfortunately, for a real, very stiff, model with 130 ODEs, which I cannot
> share, I have the following stats
> - 'lsoda' - 320 seconds
> - 'vode' - 150 seconds
> - 'bdf'  - 430 seconds
> while ode15s takes 5 (five) seconds.
>
> I'm trying now to find the new bottleneck (after correcting the 'times'
> setting Karline and you pointed out) ...
>
> Best, Maciej
>
>
> On Wed, Nov 22, 2017 at 10:47 AM, Thomas Petzoldt <
> thomas.petzoldt at tu-dresden.de> wrote:
>
> > Hi Maciek,
> >
> > I've made a small benchmark with your example (i5 4690, 3.5-3.9GHz, R
> > 3.4.2, deSolve 1.21, Windows 10,  average of 10 simulations each):
> >
> > dt = 0.01
> >    lsoda: 2.85s
> >
> > dt = 1
> >    ode45: 0.135
> >    lsoda: 0.039
> >    bdf:  0.025
> >    vode:  0.024
> >
> >
> > The plot of all simulations looks identical. B_CLL shows a steep change
> at
> > the beginning, that's why dedicated solvers for stiff systems (bdf, vode)
> > can be minimally faster than the automatic lsoda.
> >
> > Finally, R/deSolve allows to use compiled C or Fortran models and there
> > are now several packages that support creation of such code ...
> >
> > Thomas
> >
> >
> > gc() # clean up memory to make benchmark more reproducible
> > times <- seq(0, 300, by = 1)
> > N <- 10
> > system.time(
> >  for (i in 1:N)
> >    out <- ode(y = state, times = times, func = Nanda,
> >      method="vode", parms = parameters)
> > )/N
> >
> >
> > plot(out)
> >
> >
> > --
> > Dr. Thomas Petzoldt
> > Technische Universitaet Dresden
> > Faculty of Environmental Sciences
> > Institute of Hydrobiology
> > 01062 Dresden, Germany
> >
> > E-Mail: thomas.petzoldt at tu-dresden.de
> > http://tu-dresden.de/Members/thomas.petzoldt
> >
> >
> >
>
>     [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-sig-dynamic-models mailing list
> R-sig-dynamic-models at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-dynamic-models
>
>

	[[alternative HTML version deleted]]



More information about the R-sig-dynamic-models mailing list