Skip to content

parametric sometimes fails on no method matching eigen! #1627

Open
@dehann

Description

@dehann
julia> IIF.solveGraphParametric!(dfg; init=false, options)
ERROR: MethodError: no method matching eigen!(::Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}; permute=true, scale=true, sortby=LinearAlgebra.eigsortby)
Closest candidates are:
  eigen!(::SymTridiagonal{var"#s884", V} where {var"#s884"<:Union{Float32, Float64}, V<:AbstractVector{var"#s884"}}) at /usr/local/share/julia-1.8.0/share/julia/stdlib/v1.8/LinearAlgebra/src/tridiag.jl:283 got unsupported keyword arguments "permute", "scale", "sortby"
  eigen!(::SymTridiagonal{var"#s884", V} where {var"#s884"<:Union{Float32, Float64}, V<:AbstractVector{var"#s884"}}, ::UnitRange) at /usr/local/share/julia-1.8.0/share/julia/stdlib/v1.8/LinearAlgebra/src/tridiag.jl:286 got unsupported keyword arguments "permute", "scale", "sortby"
  eigen!(::SymTridiagonal{var"#s884", V} where {var"#s884"<:Union{Float32, Float64}, V<:AbstractVector{var"#s884"}}, ::Real, ::Real) at /usr/local/share/julia-1.8.0/share/julia/stdlib/v1.8/LinearAlgebra/src/tridiag.jl:291 got unsupported keyword arguments "permute", "scale", "sortby"
  ...
Stacktrace:
  [1] eigen(A::Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}; permute::Bool, scale::Bool, sortby::typeof(LinearAlgebra.eigsortby))
    @ LinearAlgebra /usr/local/share/julia-1.8.0/share/julia/stdlib/v1.8/LinearAlgebra/src/eigen.jl:238
  [2] eigen
    @ /usr/local/share/julia-1.8.0/share/julia/stdlib/v1.8/LinearAlgebra/src/eigen.jl:235 [inlined]
  [3] #eigen_safe#1
    @ ~/.julia/packages/Manifolds/Dypjk/src/utils.jl:53 [inlined]
  [4] eigen_safe
    @ ~/.julia/packages/Manifolds/Dypjk/src/utils.jl:53 [inlined]
  [5] log!(M::Rotations{3}, X::Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, p::Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, q::Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}})
    @ Manifolds ~/.julia/packages/Manifolds/Dypjk/src/manifolds/GeneralUnitaryMatrices.jl:560
  [6] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/exp_log_geo.jl:143 [inlined]
  [7] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:308 [inlined]
  [8] log (repeats 3 times)
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:282 [inlined]
  [9] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:275 [inlined]
 [10] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:291 [inlined]
 [11] log(t::ManifoldsBase.TraitList{IsGroupManifold{MultiplicationOperation}, ManifoldsBase.TraitList{ManifoldsBase.IsExplicitDecorator, ManifoldsBase.EmptyTrait}}, M::SpecialOrthogonal{3}, p::Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, q::Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}})
    @ ManifoldsBase ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:282
 [12] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:275 [inlined]
 [13] map (repeats 2 times)
    @ ./tuple.jl:266 [inlined]
 [14] log(M::ProductManifold{ℝ, Tuple{TranslationGroup{Tuple{3}, ℝ}, SpecialOrthogonal{3}}}, p::ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}}, q::ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}})
    @ Manifolds ~/.julia/packages/Manifolds/Dypjk/src/manifolds/ProductManifold.jl:792
 [15] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:291 [inlined]
 [16] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:282 [inlined]
 [17] log
    @ ~/.julia/packages/ManifoldsBase/YRaAP/src/nested_trait.jl:275 [inlined]
 [18] WARNING: both Interpolations and Distributions export "scale"; uses of it in module IncrementalInference must be qualified
WARNING: both ApproxManifoldProducts and TransformUtils export "rotate!"; uses of it in module RoME must be qualified
WARNING: both Distributions and IncrementalInference export "scale"; uses of it in module RoME must be qualified
(::CalcFactor{Pose3Pose3{FullNormal}, Nothing, Nothing, Nothing, Nothing})(X::ArrayPartition{Float64, Tuple{Vector{Float64}, Matrix{Float64}}}, p::ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}}, q::ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}})
    @ RoME ~/.julia/packages/RoME/FrIRp/src/factors/Pose3Pose3.jl:23
 [19] (::IncrementalInference.CalcFactorMahalanobis{1, 6, 36, Nothing})(::ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}}, ::Vararg{ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}}})
    @ IncrementalInference ~/.julia/packages/IncrementalInference/lIyVR/src/ParametricUtils.jl:183
 [20] cost_cfp(cfp::IncrementalInference.CalcFactorMahalanobis, p::AbstractArray, vi::Tuple{Int64, Int64})
    @ IncrementalInference ~/.julia/packages/IncrementalInference/lIyVR/src/ParametricUtils.jl:354
 [21] (::IncrementalInference.var"#474#475"{ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}}}}}, OrderedCollections.OrderedDict{Symbol, Tuple{Int64, Vararg{Int64}}}})(::Pair{Symbol, IncrementalInference.CalcFactorMahalanobis{1, 6, 36, Nothing}})
    @ IncrementalInference ~/.julia/packages/IncrementalInference/lIyVR/src/ParametricUtils.jl:396
 [22] MappingRF
    @ ./reduce.jl:95 [inlined]
 [23] _foldl_impl(op::Base.MappingRF{IncrementalInference.var"#474#475"{ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}}}}}, OrderedCollections.OrderedDict{Symbol, Tuple{Int64, Vararg{Int64}}}}, Base.BottomRF{typeof(+)}}, init::Base._InitialValue, itr::OrderedCollections.OrderedDict{Symbol, IncrementalInference.CalcFactorMahalanobis})
    @ Base ./reduce.jl:62
 [24] foldl_impl
    @ ./reduce.jl:48 [inlined]
 [25] mapfoldl_impl(f::IncrementalInference.var"#474#475"{ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ArrayPartition{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}, Tuple{Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}, Matrix{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}}}}}, OrderedCollections.OrderedDict{Symbol, Tuple{Int64, Vararg{Int64}}}}, op::typeof(+), nt::Base._InitialValue, itr::OrderedCollections.OrderedDict{Symbol, IncrementalInference.CalcFactorMahalanobis})
    @ Base ./reduce.jl:44
 [26] mapfoldl(f::Function, op::Function, itr::OrderedCollections.OrderedDict{Symbol, IncrementalInference.CalcFactorMahalanobis}; init::Base._InitialValue)
    @ Base ./reduce.jl:162
 [27] mapfoldl
    @ ./reduce.jl:162 [inlined]
 [28] #mapreduce#262
    @ ./reduce.jl:294 [inlined]
 [29] mapreduce
    @ ./reduce.jl:294 [inlined]
 [30] (::IncrementalInference.GraphSolveContainer)(Xc::Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}})
    @ IncrementalInference ~/.julia/packages/IncrementalInference/lIyVR/src/ParametricUtils.jl:392
 [31] chunk_mode_gradient!(result::DiffResults.MutableDiffResult{1, Float64, Tuple{Vector{Float64}}}, f::IncrementalInference.GraphSolveContainer, x::Vector{Float64}, cfg::ForwardDiff.GradientConfig{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12, Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}})
    @ ForwardDiff ~/.julia/packages/ForwardDiff/pDtsf/src/gradient.jl:150
 [32] gradient!
    @ ~/.julia/packages/ForwardDiff/pDtsf/src/gradient.jl:39 [inlined]
 [33] gradient!
    @ ~/.julia/packages/ForwardDiff/pDtsf/src/gradient.jl:35 [inlined]
 [34] (::NLSolversBase.var"#42#48"{IncrementalInference.GraphSolveContainer, ForwardDiff.GradientConfig{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12, Vector{ForwardDiff.Dual{ForwardDiff.Tag{IncrementalInference.GraphSolveContainer, Float64}, Float64, 12}}}})(out::Vector{Float64}, x::Vector{Float64})
    @ NLSolversBase ~/.julia/packages/NLSolversBase/cfJrN/src/objective_types/twicedifferentiable.jl:132
 [35] value_gradient!!(obj::NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}, x::Vector{Float64})
    @ NLSolversBase ~/.julia/packages/NLSolversBase/cfJrN/src/interface.jl:82
 [36] value_gradient!(obj::NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}, x::Vector{Float64})
    @ NLSolversBase ~/.julia/packages/NLSolversBase/cfJrN/src/interface.jl:69
 [37] value_gradient!(obj::Optim.ManifoldObjective{NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}}, x::Vector{Float64})
    @ Optim ~/.julia/packages/Optim/ocQqB/src/Manifolds.jl:50
 [38] (::LineSearches.var"#ϕdϕ#6"{Optim.ManifoldObjective{NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}}, Vector{Float64}, Vector{Float64}, Vector{Float64}})(α::Float64)
    @ LineSearches ~/.julia/packages/LineSearches/G1LRk/src/LineSearches.jl:84
 [39] secant2!(ϕdϕ::LineSearches.var"#ϕdϕ#6"{Optim.ManifoldObjective{NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}}, Vector{Float64}, Vector{Float64}, Vector{Float64}}, alphas::Vector{Float64}, values::Vector{Float64}, slopes::Vector{Float64}, ia::Int64, ib::Int64, phi_lim::Float64, delta::Float64, sigma::Float64, display::Int64)
    @ LineSearches ~/.julia/packages/LineSearches/G1LRk/src/hagerzhang.jl:368
 [40] (::LineSearches.HagerZhang{Float64, Base.RefValue{Bool}})(ϕ::Function, ϕdϕ::LineSearches.var"#ϕdϕ#6"{Optim.ManifoldObjective{NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}}, Vector{Float64}, Vector{Float64}, Vector{Float64}}, c::Float64, phi_0::Float64, dphi_0::Float64)
    @ LineSearches ~/.julia/packages/LineSearches/G1LRk/src/hagerzhang.jl:269
 [41] HagerZhang
    @ ~/.julia/packages/LineSearches/G1LRk/src/hagerzhang.jl:101 [inlined]
 [42] perform_linesearch!(state::Optim.BFGSState{Vector{Float64}, Matrix{Float64}, Float64, Vector{Float64}}, method::Optim.BFGS{LineSearches.InitialStatic{Float64}, LineSearches.HagerZhang{Float64, Base.RefValue{Bool}}, Nothing, Nothing, Optim.Flat}, d::Optim.ManifoldObjective{NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}})
    @ Optim ~/.julia/packages/Optim/ocQqB/src/utilities/perform_linesearch.jl:59
 [43] update_state!(d::NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}, state::Optim.BFGSState{Vector{Float64}, Matrix{Float64}, Float64, Vector{Float64}}, method::Optim.BFGS{LineSearches.InitialStatic{Float64}, LineSearches.HagerZhang{Float64, Base.RefValue{Bool}}, Nothing, Nothing, Optim.Flat})
    @ Optim ~/.julia/packages/Optim/ocQqB/src/multivariate/solvers/first_order/bfgs.jl:139
 [44] optimize(d::NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}, initial_x::Vector{Float64}, method::Optim.BFGS{LineSearches.InitialStatic{Float64}, LineSearches.HagerZhang{Float64, Base.RefValue{Bool}}, Nothing, Nothing, Optim.Flat}, options::Optim.Options{Float64, Nothing}, state::Optim.BFGSState{Vector{Float64}, Matrix{Float64}, Float64, Vector{Float64}})
    @ Optim ~/.julia/packages/Optim/ocQqB/src/multivariate/optimize/optimize.jl:54
 [45] optimize(d::NLSolversBase.TwiceDifferentiable{Float64, Vector{Float64}, Matrix{Float64}, Vector{Float64}}, initial_x::Vector{Float64}, method::Optim.BFGS{LineSearches.InitialStatic{Float64}, LineSearches.HagerZhang{Float64, Base.RefValue{Bool}}, Nothing, Nothing, Optim.Flat}, options::Optim.Options{Float64, Nothing})
    @ Optim ~/.julia/packages/Optim/ocQqB/src/multivariate/optimize/optimize.jl:36
 [46] solveGraphParametric(fg::GraphsDFG{SolverParams, DFGVariable, DFGFactor}; computeCovariance::Bool, solveKey::Symbol, autodiff::Symbol, algorithm::Type{Optim.BFGS}, algorithmkwargs::Tuple{}, options::Optim.Options{Float64, Nothing})
    @ IncrementalInference ~/.julia/packages/IncrementalInference/lIyVR/src/ParametricUtils.jl:518
 [47] #solveGraphParametric!#492
    @ ~/.julia/packages/IncrementalInference/lIyVR/src/ParametricUtils.jl:769 [inlined]
 [48] top-level scope

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions