"No matching function wrapper was found!" with 1.8.4 release of Julia

Hi,

I have a notebook where the call sol0=solve(prob, alg, dt=dt, adaptive=false);
fails with error: “No matching function wrapper was found” with 1.8.4 release but
works correctly with 1.6.6 release.

The notebook and all details are here,

I am confused and I would sincerely appreciate help to solve the issue

First of all: Are your packages up to date? Try going to Pkg mode (“]” in the REPL) and then “up”.

Yes, my packages are up to date.
pkg> status

Status ~/.julia/environments/v1.8/Project.toml
[6e4b80f9] BenchmarkTools v1.3.2
[2b5f629d] DiffEqBase v6.113.0
[f3b72e0c] DiffEqDevTools v2.32.2
[5789e2e9] FileIO v1.16.0
[7073ff75] IJulia v1.24.0
[58bc7355] IRKGaussLegendre v0.2.2
[033835bb] JLD2 v0.4.29
[98e50ef6] JuliaFormatter v1.0.18
[0db19996] NBInclude v2.3.0
[1dea7af3] OrdinaryDiffEq v6.36.2
[d96e819e] Parameters v0.12.3
[91a5bcdd] Plots v1.38.1
[731186ca] RecursiveArrayTools v2.34.1
[189a3867] Reexport v1.2.2
[fdea26ae] SIMD v3.4.3

_call(#unused#::Tuple{}, arg::Tuple{VecArray{8, Float64, 2}, VecArray{8, Float64, 2}, Vector{Float64}, SIMD.Vec{8, Float64}}, fww::FunctionWrappersWrappers.FunctionWrappersWrapper{Tuple{FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{Float64}, Vector{Float64}, Vector{Float64}, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, Float64}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, Vector{Float64}, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}, FunctionWrappers.FunctionWrapper{Nothing, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}, Vector{Float64}, ForwardDiff.Dual{ForwardDiff.Tag{DiffEqBase.OrdinaryDiffEqTag, Float64}, Float64, 1}}}}, false})

IRKGL_SIMD.jl needs to use f = SciMLBase.unwrapped_f(prob.f) in order to unwrap it and force compilation

1 Like

Thanks, now the call sol0=solve(prob, alg, dt=dt, adaptive=false) does not fail.