4 ms·
I went ahead and ran some stuff on my laptop. using DifferentialEquations van = @ode_def_noinvhes VanDerPol2 begin dy = μ*((1-x^2)*y - x)
by ChrisRackauckas 9y ago
I went ahead and ran some stuff on my laptop.
using DifferentialEquations
van = @ode_def_noinvhes VanDerPol2 begin
dy = μ*((1-x^2)*y - x)
dx = 1*y
end μ=>1.
prob = ODEProblem(VanDerPol2(μ=1e6),[0;2.],(0.0,160.0))
solve(prob,CVODE_BDF(),reltol=1/10^5,save_everystep=false)
solve(prob,Rodas5(),reltol=1/10^5,save_everystep=false)
@time sol1 = solve(prob,CVODE_BDF(),reltol=1/10^5,save_everystep=false)
@time sol2 = solve(prob,Rodas5(),reltol=1/10^5,save_everystep=false)
sol3 = solve(prob,CVODE_BDF(),abstol=1/10^10,reltol=1/10^10)
On my laptop I'm getting ~0.1 seconds for both, with Sundials being a little less accurate and OrdinaryDiffEq.jl being a little more accurate against the 10^-10 reference solution than the reported Intel. But "spot checking" like this makes it hard to just timings without issues of more/less error involved, which is why more sophisticated benchmarks use work-precision diagrams. So the timings are in the same ballpark as Intel and I'd assume my (not so fast) laptop doesn't match what you benchmarked with, the point being that MATLAB is just slow here instead of Intel being unbelievably exceptional (though admirable). Still, maybe Intel does pull off some extra efficiency here, but then of course no method is universally good so I wouldn't expect that everywhere. In the end, it's probably a well optimized (probably in the DiffEq.jl/Sundials/FATODE range) single method without event handling or other extra features, but importantly it is abandoned. Probably would've been interesting if development kept up, but without it I think I'm just not going to try to get it installed.
Thanks for pointing me to it though. It's definitely an interesting nugget of ODE history that I didn't know existed.
- throwaway613834 9y ago> Probably would've been interesting if development kept up, but without it I think I'm just not going to try to get it installed. Out of curiosity, why is this an issue? Wouldn't you have just downloaded the library and run it regardless of whether someone is actively developing it or not? I don't really understand this argument (and I see many people making it, not just you).
- ChrisRackauckas 9y agoWell vanilla ODE solvers are a dime a dozen. Sufficiently optimized stiff ODE solvers tend to get around the same efficiency, with some methods doing better on some problems, and others doing better on other problems. So it's all problem dependent and this is just one implicit RK method, while things like ARKODE already have quite a few, FATODE has quite a few, and DifferentialEquations.jl has quite a few, etc, meaning I wouldn't expect it to be too different. What would make it exciting to play with if it added something. Free parallelism or uses the Xeon Phi automatically, complex number support, event handling (many examples where this is necessary. One: PDE solvers need this for adding projection steps). But since development has halted, we're pretty much guaranteed that none of this will ever come.
- 3JPLW 9y agoThe fact that it's not licensed for redistribution or even any regular use is a pretty good reason to not futz with it. https://software.intel.com/en-us/articles/what-if-pre-release-license-agreement/ https://software.intel.com/en-us/articles/what-if-pre-releas... > Intel grants to you a non-exclusive, non-assignable copyright license to make only the minimum number of copies of the Materials reasonably necessary for your internal testing and development of your products. > You may not distribute any portion of Materials, whether in source or binary form, to any third party, except as specified in this Agreement.