Skip to content

Conversation

@kshyatt
Copy link
Collaborator

@kshyatt kshyatt commented Nov 13, 2025

No idea if this is the correct approach, I'm getting errors when I try to use it like:

test_reverse: eig_trunc with return activity EnzymeCore.MixedDuplicated on (::Matrix{Float64}, EnzymeCore.Duplicated): Error During Test at /Users/khyatt/.julia/dev/Enzyme/lib/EnzymeTestUtils/src/test_reverse.jl:84
  Got exception outside of a @test
  MethodError: no method matching (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, EnzymeCore.MixedDuplicated{Tuple{LinearAlgebra.Diagonal{ComplexF64, Vector{ComplexF64}}, Matrix{ComplexF64}, Float64}}, Tuple{EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, EnzymeCore.Duplicated{Matrix{Float64}}}, 1, @NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5}})(::EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, ::EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, ::EnzymeCore.Duplicated{Matrix{Float64}}, ::@NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5})
  This error has been manually thrown, explicitly, so the method may exist but be intentionally marked as unimplemented.
  
  Closest candidates are:
    (::Enzyme.Compiler.AdjointThunk{PT, FA, RT, TT, Width, TapeT})(::FA, ::Any...) where {PT, FA, Width, RT, TT, TapeT}
     @ Enzyme ~/.julia/packages/Enzyme/EITgk/src/compiler.jl:5372

@kshyatt kshyatt requested a review from wsmoses November 13, 2025 17:35
@github-actions
Copy link
Contributor

github-actions bot commented Nov 13, 2025

Benchmark Results

main 4864386... main / 4864386...
basics/make_zero/namedtuple 0.0549 ± 0.0021 μs 0.0537 ± 0.0025 μs 1.02 ± 0.061
basics/make_zero/struct 0.262 ± 0.0063 μs 0.264 ± 0.0064 μs 0.993 ± 0.034
basics/overhead 4.65 ± 0.01 ns 5.56 ± 0.01 ns 0.836 ± 0.0023
basics/remake_zero!/namedtuple 0.235 ± 0.0078 μs 0.235 ± 0.0091 μs 0.997 ± 0.051
basics/remake_zero!/struct 0.243 ± 0.0086 μs 0.242 ± 0.0095 μs 1 ± 0.053
fold_broadcast/multidim_sum_bcast/1D 10.3 ± 0.47 μs 10.5 ± 1.7 μs 0.985 ± 0.17
fold_broadcast/multidim_sum_bcast/2D 12.1 ± 0.32 μs 12.2 ± 0.37 μs 0.997 ± 0.04
time_to_load 1.32 ± 0.017 s 1.32 ± 0.014 s 0.995 ± 0.017

Benchmark Plots

A plot of the benchmark results has been uploaded as an artifact at https://github.com/EnzymeAD/Enzyme.jl/actions/runs/19358856206/artifacts/4566096215.

@codecov
Copy link

codecov bot commented Nov 13, 2025

Codecov Report

❌ Patch coverage is 0% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 68.99%. Comparing base (ab96c82) to head (4864386).

Files with missing lines Patch % Lines
lib/EnzymeTestUtils/src/generate_tangent.jl 0.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2777      +/-   ##
==========================================
- Coverage   69.00%   68.99%   -0.02%     
==========================================
  Files          58       58              
  Lines       19996    19999       +3     
==========================================
  Hits        13799    13799              
- Misses       6197     6200       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@wsmoses
Copy link
Member

wsmoses commented Nov 14, 2025

#2780 should improve the error messages to give more actionable feedback

@kshyatt
Copy link
Collaborator Author

kshyatt commented Nov 14, 2025

On "0.13.102" I'm still getting

eig_trunc reverse: RT EnzymeCore.MixedDuplicated, TA EnzymeCore.Duplicated: Error During Test at /Users/khyatt/.julia/dev/MatrixAlgebraKit/test/enzyme.jl:183
  Got exception outside of a @test
  MethodError: no method matching (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, EnzymeCore.MixedDuplicated{Tuple{LinearAlgebra.Diagonal{ComplexF64, Vector{ComplexF64}}, Matrix{ComplexF64}, Float64}}, Tuple{EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, EnzymeCore.Duplicated{Matrix{Float64}}}, 1, @NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5}})(::EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, ::EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, ::EnzymeCore.Duplicated{Matrix{Float64}}, ::@NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5})
  This error has been manually thrown, explicitly, so the method may exist but be intentionally marked as unimplemented.
  
  Closest candidates are:
    (::Enzyme.Compiler.AdjointThunk{PT, FA, RT, TT, Width, TapeT})(::FA, ::Any...) where {PT, FA, Width, RT, TT, TapeT}
     @ Enzyme ~/.julia/packages/Enzyme/EITgk/src/compiler.jl:5372
  
  Stacktrace:
    [1] macro expansion
      @ ~/.julia/packages/Enzyme/EITgk/src/compiler.jl:5498 [inlined]
    [2] enzyme_call(::Val{false}, ::Ptr{Nothing}, ::Type{Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, EnzymeCore.MixedDuplicated{Tuple{LinearAlgebra.Diagonal{ComplexF64, Vector{ComplexF64}}, Matrix{ComplexF64}, Float64}}, Tuple{EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, EnzymeCore.Duplicated{Matrix{Float64}}}, 1, @NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5}}}, ::Val{1}, ::Val{false}, ::Type{Tuple{EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, EnzymeCore.Duplicated{Matrix{Float64}}}}, ::Type{EnzymeCore.MixedDuplicated{Tuple{LinearAlgebra.Diagonal{ComplexF64, Vector{ComplexF64}}, Matrix{ComplexF64}, Float64}}}, ::EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::Type{@NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5}}, ::EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, ::EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, ::EnzymeCore.Duplicated{Matrix{Float64}}, ::@NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5})
      @ Enzyme.Compiler ~/.julia/packages/Enzyme/EITgk/src/compiler.jl:5454
    [3] (::Enzyme.Compiler.AdjointThunk{Ptr{Nothing}, EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, EnzymeCore.MixedDuplicated{Tuple{LinearAlgebra.Diagonal{ComplexF64, Vector{ComplexF64}}, Matrix{ComplexF64}, Float64}}, Tuple{EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, EnzymeCore.Const{typeof(MatrixAlgebraKit.eig_trunc)}, EnzymeCore.Duplicated{Matrix{Float64}}}, 1, @NamedTuple{1::@NamedTuple{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11::@NamedTuple{1, 2::Tuple{Core.LLVMPtr{UInt8, 0}, Core.LLVMPtr{UInt8, 0}, @NamedTuple{1::@NamedTuple{1, 2, 3, 4::@NamedTuple{1, 2, 3, 4::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 5::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 6::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 7::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 10::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 11::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 12::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 13::UInt64, 14::Float64, 15::Float64, 16::Float64, 17::Float64, 18::Core.LLVMPtr{Float64, 0}, 19::Float64, 20::Float64, 21::Float64, 22::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 23::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 24::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 25::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 26::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 27::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 28::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 29::Core.LLVMPtr{Core.LLVMPtr{Float64, 0}, 0}, 30::Core.LLVMPtr{Float64, 0}, 31::Core.LLVMPtr{Float64, 0}}, 5::Float64, 6::Float64, 7::Core.LLVMPtr{Float64, 0}, 8::UInt64, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Float64, 12::Float64, 13::Float64, 14::Float64, 15::Float64, 16::Core.LLVMPtr{Float64, 0}, 17::Core.LLVMPtr{Float64, 0}}, 2::Float64, 3, 4::Float64, 5, 6::Core.LLVMPtr{Float64, 0}, 7::UInt64, 8::Core.LLVMPtr{Float64, 0}, 9::Core.LLVMPtr{Float64, 0}, 10::Float64, 11::Core.LLVMPtr{Float64, 0}, 12::Core.LLVMPtr{Float64, 0}, 13::Core.LLVMPtr{Bool, 0}, 14::Float64, 15::Float64, 16::Float64}, Tuple{Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Core.LLVMPtr{Float64, 0}, Float64, Float64}, Core.LLVMPtr{UInt8, 0}, UInt64, UInt64}, 3::Bool, 4::Bool, 5, 6::Core.LLVMPtr{Any, 0}, 7::UInt64, 8::UInt64, 9, 10::Bool, 11::Bool, 12::Core.LLVMPtr{UInt64, 0}}, 12::@NamedTuple{1, 2, 3::Core.LLVMPtr{UInt8, 0}, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14::Core.LLVMPtr{UInt8, 0}, 15, 16::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 17, 18::@NamedTuple{1, 2, 3, 4, 5, 6::UInt64, 7::Core.LLVMPtr{UInt64, 0}, 8::Core.LLVMPtr{UInt64, 0}}, 19, 20, 21, 22::Bool, 23::Bool, 24::UInt64, 25::UInt64, 26::Core.LLVMPtr{UInt8, 0}, 27, 28::Core.LLVMPtr{Core.LLVMPtr{UInt8, 0}, 0}, 29, 30::UInt64, 31::UInt64, 32::Core.LLVMPtr{UInt64, 0}}, 13::@NamedTuple{1}, 14, 15, 16::UInt64}, 2, 3, 4, 5}})(::EnzymeCore.Const{typeof(EnzymeTestUtils.call_with_kwargs)}, ::EnzymeCore.Const{@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}}, ::Vararg{Any})
      @ Enzyme.Compiler ~/.julia/packages/Enzyme/EITgk/src/compiler.jl:5372
    [4] test_reverse(f::typeof(MatrixAlgebraKit.eig_trunc), ret_activity::Type, args::Tuple{Matrix{Float64}, UnionAll}; rng::Random.TaskLocalRNG, fdm::FiniteDifferences.AdaptedFiniteDifferenceMethod{5, 1, FiniteDifferences.UnadaptedFiniteDifferenceMethod{7, 5}}, fkwargs::@NamedTuple{alg::MatrixAlgebraKit.TruncatedAlgorithm{MatrixAlgebraKit.LAPACK_Simple{@NamedTuple{}}, MatrixAlgebraKit.TruncationByOrder{typeof(abs)}}}, rtol::Float64, atol::Float64, testset_name::Nothing, runtime_activity::Bool, output_tangent::Tuple{LinearAlgebra.Diagonal{ComplexF64, Vector{ComplexF64}}, Matrix{ComplexF64}, Float64})
      @ EnzymeTestUtils ~/.julia/dev/Enzyme/lib/EnzymeTestUtils/src/test_reverse.jl:143

@wsmoses
Copy link
Member

wsmoses commented Nov 14, 2025

the pr was merged but not released, if you want to try via main

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants