Christopher Rackauckas
Christopher Rackauckas
Forward mode AD is a lot faster now: https://github.com/SciML/DiffEqBase.jl/pull/722 https://github.com/SciML/OrdinaryDiffEq.jl/pull/1546 https://github.com/SciML/OrdinaryDiffEq.jl/pull/1544 https://github.com/SciML/OrdinaryDiffEq.jl/pull/1540 ```julia using OrdinaryDiffEq, SnoopCompile, ForwardDiff lorenz = (du,u,p,t) -> begin du[1] = 10.0(u[2]-u[1]) du[2] = u[1]*(28.0-u[3]) - u[2]...
@timholy is going to beat all of us in this compile time race by attempting https://github.com/JuliaLang/julia/pull/42016
Chunked out some invalidations: https://github.com/SciML/DiffEqBase.jl/pull/723 and the CLIMA folks are happy https://github.com/CliMA/TurbulenceConvection.jl/pull/673. @timholy is there an easy way to figure out which invalidations you should prioritize?
I took some hints from @charleskawczynski and went invalidation hunting: ```julia # From: https://timholy.github.io/SnoopCompile.jl/stable/snoopr/ using SnoopCompile invalidations = @snoopr begin using DifferentialEquations function lorenz(du,u,p,t) du[1] = 10.0(u[2]-u[1]) du[2] = u[1]*(28.0-u[3])...
This is the current compile time benchmarks: ```julia using DifferentialEquations, SnoopCompile function lorenz(du,u,p,t) du[1] = 10.0(u[2]-u[1]) du[2] = u[1]*(28.0-u[3]) - u[2] du[3] = u[1]*u[2] - (8/3)*u[3] end u0 = [1.0;0.0;0.0]...
Now looking at using times, https://github.com/SciML/DifferentialEquations.jl/pull/835 chunked that down. I then started hunting downstream libraries with big Requires: - https://github.com/JuliaSIMD/Polyester.jl/pull/55 - https://github.com/JuliaSIMD/LoopVectorization.jl/issues/372 While trying to track down using times I...
Package load times have improved dramatically by doing ArrayInterfaceCore, and now GPUArraysCore. ArrayInterface changes was about 1 second off everything. Now GPUArrays is another second off. Numbers: Before: julia> @time_imports...
Current invalidations report: ```julia using SnoopCompile invalidations = @snoopr begin using OrdinaryDiffEq function lorenz(du, u, p, t) du[1] = 10.0(u[2] - u[1]) du[2] = u[1] * (28.0 - u[3]) -...
`Base.promote_rule(::Type{R}, ::Type{Dual{T,V,N}}) where {R
https://github.com/SciML/DiffEqBase.jl/pull/736 and https://github.com/SciML/OrdinaryDiffEq.jl/pull/1627 together lead to startup times from 8 seconds to 0.7 without a system image, and down to 0.1 and below with a system image. Without a system...