JuliaDiff / JuliaDiff/DifferentiationInterface.jl
Failing Enzyme tests
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 313
- Forks
- 35
- PR merge metrics
- No merged PRs in 30d
Description
An issue to list some failing Enzyme tests which I deactivated.
Common setup:
using DifferentiationInterface
import DifferentiationInterfaceTest as DIT
using SparseConnectivityTracer
using SparseMatrixColorings
import Enzyme
function MyAutoSparse(backend)
return AutoSparse(
backend;
sparsity_detector=TracerSparsityDetector(),
coloring_algorithm=GreedyColoringAlgorithm(),
)
end
Forward-over-forward HVP (see also https://github.com/EnzymeAD/Enzyme.jl/issues/2437):
julia> hvp(
sum,
SecondOrder(AutoEnzyme(; mode=Enzyme.Forward), AutoEnzyme(; mode=Enzyme.Forward)),
[1.0],
([1.0],),
)
ERROR:
No forward mode derivative found for jl_get_builtin_fptr
at context: %10 = call {} addrspace(10)* ({} addrspace(10)*, {} addrspace(10)**, i32)* @jl_get_builtin_fptr({} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 4725148592 to {}*) to {} addrspace(10)*)) #14, !dbg !38
Stacktrace:
[1] make_context_shadows
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/utils.jl:99
[2] prepare_gradient_nokwarg
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/forward_onearg.jl:151
Stacktrace:
[1] make_context_shadows
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/utils.jl:99 [inlined]
[2] prepare_gradient_nokwarg
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/forward_onearg.jl:151
[3] gradient
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/first_order/gradient.jl:62
[4] shuffled_gradient
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/first_order/gradient.jl:160 [inlined]
[5] fwddiffejulia_shuffled_gradient_360996wrap
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/first_order/gradient.jl:0
[6] macro expansion
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5717 [inlined]
[7] enzyme_call
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5251 [inlined]
[8] ForwardModeThunk
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5153 [inlined]
[9] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:669 [inlined]
[10] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:558 [inlined]
[11] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:530 [inlined]
[12] pushforward
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/forward_onearg.jl:76 [inlined]
[13] hvp
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/second_order/hvp.jl:331 [inlined]
[14] hvp(::typeof(sum), ::SecondOrder{AutoEnzyme{…}, AutoEnzyme{…}}, ::Vector{Float64}, ::Tuple{Vector{…}})
@ DifferentiationInterface ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/second_order/hvp.jl:75
[15] top-level scope
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/test/Back/Enzyme/playground.jl:37
Some type information was truncated. Use `show(err)` to see complete types.
Forward-over-reverse second derivative with matrix output (doesn't happen with vector output) (see https://github.com/EnzymeAD/Enzyme.jl/issues/2635):
julia> second_derivative(
DIT.num_to_mat,
SecondOrder(AutoEnzyme(; mode=Enzyme.Forward), AutoEnzyme(; mode=Enzyme.Reverse)),
1.0,
)
ERROR: AssertionError: ; Function Attrs: mustprogress willreturn
define internal fastcc { { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i1*, i64* }, {} addrspace(10)*, {} addrspace(10)* }, { { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i1*, i64* }, {} addrspace(10)*, {} addrspace(10)* } } @fwddiffeaugmented_julia_collect_304589({ [1 x [2 x {} addrspace(10)*]], [1 x [2 x [2 x i64]]] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(48) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer}" "enzymejl_parmtype"="13174803792" "enzymejl_parmtype_ref"="1" %0, { [1 x [2 x {} addrspace(10)*]], [1 x [2 x [2 x i64]]] } addrspace(11)* nocapture align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer}" "enzymejl_parmtype"="13174803792" "enzymejl_parmtype_ref"="1" %"'", { [1 x [2 x {} addrspace(10)*]], [1 x [2 x [2 x i64]]] } addrspace(11)* nocapture readonly align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer}" "enzymejl_parmtype"="13174803792" "enzymejl_parmtype_ref"="1" %"'1", { [1 x [2 x {} addrspace(10)*]], [1 x [2 x [2 x i64]]] } addrspace(11)* nocapture align 8 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Pointer, [-1,0,8,0]:Integer, [-1,0,8,1]:Integer, [-1,0,8,2]:Integer, [-1,0,8,3]:Integer, [-1,0,8,4]:Integer, [-1,0,8,5]:Integer, [-1,0,8,6]:Integer, [-1,0,8,7]:Integer, [-1,0,8,8]:Pointer, [-1,0,8,8,-1]:Float@double, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Pointer, [-1,8,8,0]:Integer, [-1,8,8,1]:Integer, [-1,8,8,2]:Integer, [-1,8,8,3]:Integer, [-1,8,8,4]:Integer, [-1,8,8,5]:Integer, [-1,8,8,6]:Integer, [-1,8,8,7]:Integer, [-1,8,8,8]:Pointer, [-1,8,8,8,-1]:Float@double, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer, [-1,40]:Integer, [-1,41]:Integer, [-1,42]:Integer, [-1,43]:Integer, [-1,44]:Integer, [-1,45]:Integer, [-1,46]:Integer, [-1,47]:Integer}" "enzymejl_parmtype"="13174803792" "enzymejl_parmtype_ref"="1" %"''") unnamed_addr #30 !dbg !5104 {
top:
%1 = call {}*** @julia.get_pgcstack() #53
%2 = alloca [1 x i64], align 8
%3 = alloca [1 x i64], align 8
%4 = alloca [1 x i64], align 8
...
Allocation could not have its type statically determined %226 = call noalias nonnull "enzyme_ReadOnlyOrThrow" "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @julia.gc_alloc_obj({}* nonnull %17, i64 %197, {} addrspace(10)* %224) #60, !dbg !272
Stacktrace:
[1] shadow_alloc_rewrite(V::Ptr{…}, gutils::Ptr{…}, Orig::Ptr{…}, idx::UInt64, prev::Ptr{…}, used::UInt8)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:1516
[2] EnzymeCreateForwardDiff(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnValue::Bool, mode::Enzyme.API.CDerivativeMode, runtimeActivity::Bool, strongZero::Bool, width::Int64, additionalArg::Ptr{…}, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…})
@ Enzyme.API ~/.julia/packages/Enzyme/HWLY7/src/api.jl:342
[3] enzyme!(job::GPUCompiler.CompilerJob{…}, interp::Enzyme.Compiler.Interpreter.EnzymeInterpreter{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…} where N, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:2553
[4] compile_unhooked(output::Symbol, job::GPUCompiler.CompilerJob{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:4936
[5] compile(target::Symbol, job::GPUCompiler.CompilerJob; kwargs::@Kwargs{})
@ GPUCompiler ~/.julia/packages/GPUCompiler/Ecaql/src/driver.jl:67
[6] compile
@ ~/.julia/packages/GPUCompiler/Ecaql/src/driver.jl:55 [inlined]
[7] _thunk(job::GPUCompiler.CompilerJob{…}, postopt::Bool)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5790
[8] _thunk
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5788 [inlined]
[9] cached_compilation
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5845 [inlined]
[10] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{…}, A::Type{…}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, StrongZero::Bool, edges::Vector{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5959
[11] thunk_generator(world::UInt64, source::Union{…}, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::NTuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, StrongZero::Bool, self::Any, fakeworld::Any, fa::Type, a::Type, tt::Type, mode::Type, width::Type, modifiedbetween::Type, returnprimal::Type, shadowinit::Type, abi::Type, erriffuncwritten::Type, runtimeactivity::Type, strongzero::Type)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:6152
[12] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:654 [inlined]
[13] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:558 [inlined]
[14] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:530 [inlined]
[15] pushforward(::typeof(DifferentiationInterface.shuffled_derivative), ::DifferentiationInterfaceEnzymeExt.EnzymeOneArgPushforwardPrep{…}, ::AutoEnzyme{…}, ::Float64, ::Tuple{…}, ::DifferentiationInterface.FunctionContext{…}, ::Constant{…}, ::Constant{…})
@ DifferentiationInterfaceEnzymeExt ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/forward_onearg.jl:76
[16] derivative
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/first_order/derivative.jl:200 [inlined]
[17] second_derivative
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/second_order/second_derivative.jl:126 [inlined]
[18] second_derivative(::typeof(DifferentiationInterfaceTest.num_to_mat), ::SecondOrder{…}, ::Float64)
@ DifferentiationInterface ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/second_order/second_derivative.jl:43
[19] top-level scope
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/test/Back/Enzyme/playground.jl:45
Some type information was truncated. Use `show(err)` to see complete types.
Failing sparse example (see https://github.com/EnzymeAD/Enzyme.jl/issues/2634)
julia> jacobian(DIT.diffsquarecube_matvec!, zeros(10), AutoEnzyme(), rand(2, 3))
ERROR: Constant memory is stored (or returned) to a differentiable variable.
As a result, Enzyme cannot provably ensure correctness and throws this error.
This might be due to the use of a constant variable as temporary storage for active memory (https://enzyme.mit.edu/julia/stable/faq/#Runtime-Activity).
If Enzyme should be able to prove this use non-differentable, open an issue!
To work around this issue, either:
a) rewrite this variable to not be conditionally active (fastest, but requires a code change), or
b) set the Enzyme mode to turn on runtime activity (e.g. autodiff(set_runtime_activity(Reverse), ...) ). This will maintain correctness, but may slightly reduce performance.
Failure within method: MethodInstance for Base.Broadcast.preprocess(::SubArray{…}, ::SubArray{…})
Hint: catch this exception as `err` and call `code_typed(err)` to inspect the errornous code.
If you have Cthulu.jl loaded you can also use `code_typed(err; interactive = true)` to interactively introspect the code.
Mismatched activity for: %109 = insertvalue { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [1 x i8], [1 x i64] } %108, [1 x i64] [i64 1], 2, !dbg !217 const val: [1 x i64] [i64 1]
Type tree: {[0]:Pointer, [0,0]:Pointer, [0,0,-1]:Float@double, [0,8]:Pointer, [0,8,0]:Integer, [0,8,1]:Integer, [0,8,2]:Integer, [0,8,3]:Integer, [0,8,4]:Integer, [0,8,5]:Integer, [0,8,6]:Integer, [0,8,7]:Integer, [0,8,8]:Pointer, [0,8,8,-1]:Float@double, [0,16]:Integer, [0,17]:Integer, [0,18]:Integer, [0,19]:Integer, [0,20]:Integer, [0,21]:Integer, [0,22]:Integer, [0,23]:Integer, [8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer, [16]:Integer, [17]:Integer, [18]:Integer, [19]:Integer, [20]:Integer, [21]:Integer, [22]:Integer, [23]:Integer, [24]:Integer, [25]:Integer, [26]:Integer, [27]:Integer, [28]:Integer, [29]:Integer, [30]:Integer, [31]:Integer, [32]:Integer, [33]:Integer, [34]:Integer, [35]:Integer, [36]:Integer, [37]:Integer, [38]:Integer, [39]:Integer, [40]:Integer, [41]:Integer, [42]:Integer, [43]:Integer, [44]:Integer, [45]:Integer, [46]:Integer, [47]:Integer, [48]:Anything, [49]:Anything, [50]:Anything, [51]:Anything, [52]:Anything, [53]:Anything, [54]:Anything, [55]:Anything}
llvalue=[1 x i64] [i64 1]
Stacktrace:
[1] Extruded
@ ./broadcast.jl:639
[2] extrude
@ ./broadcast.jl:645
[3] preprocess
@ ./broadcast.jl:953
Stacktrace:
[1] Extruded
@ ./broadcast.jl:639 [inlined]
[2] extrude
@ ./broadcast.jl:645 [inlined]
[3] preprocess
@ ./broadcast.jl:953
[4] preprocess_args
@ ./broadcast.jl:955 [inlined]
[5] preprocess
@ ./broadcast.jl:952 [inlined]
[6] copyto!
@ ./broadcast.jl:969 [inlined]
[7] copyto!
@ ./broadcast.jl:925 [inlined]
[8] materialize!
@ ./broadcast.jl:883 [inlined]
[9] materialize!
@ ./broadcast.jl:880 [inlined]
[10] diffsquare!
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterfaceTest/src/scenarios/sparse.jl:9
[11] diffsquarecube_matvec!
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterfaceTest/src/scenarios/sparse.jl:64 [inlined]
[12] fwddiffe6julia_diffsquarecube_matvec__96226wrap
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterfaceTest/src/scenarios/sparse.jl:0
[13] macro expansion
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5717 [inlined]
[14] enzyme_call
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5251 [inlined]
[15] ForwardModeThunk
@ ~/.julia/packages/Enzyme/HWLY7/src/compiler.jl:5153 [inlined]
[16] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:669 [inlined]
[17] autodiff
@ ~/.julia/packages/Enzyme/HWLY7/src/Enzyme.jl:538 [inlined]
[18] value_and_pushforward(::typeof(DifferentiationInterfaceTest.diffsquarecube_matvec!), ::Vector{…}, ::DifferentiationInterfaceEnzymeExt.EnzymeTwoArgPushforwardPrep{…}, ::AutoEnzyme{…}, ::Matrix{…}, ::NTuple{…})
@ DifferentiationInterfaceEnzymeExt ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/forward_twoarg.jl:64
[19] pushforward
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/ext/DifferentiationInterfaceEnzymeExt/forward_twoarg.jl:78 [inlined]
[20] _jacobian_aux
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/first_order/jacobian.jl:364 [inlined]
[21] jacobian(::typeof(DifferentiationInterfaceTest.diffsquarecube_matvec!), ::Vector{…}, ::DifferentiationInterface.PushforwardJacobianPrep{…}, ::AutoEnzyme{…}, ::Matrix{…})
@ DifferentiationInterface ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/first_order/jacobian.jl:313
[22] jacobian(::typeof(DifferentiationInterfaceTest.diffsquarecube_matvec!), ::Vector{…}, ::AutoEnzyme{…}, ::Matrix{…})
@ DifferentiationInterface ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/src/first_order/jacobian.jl:107
[23] top-level scope
@ ~/Documents/GitHub/Julia/DifferentiationInterface.jl/DifferentiationInterface/test/Back/Enzyme/playground.jl:24
Some type information was truncated. Use `show(err)` to see complete types.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with test/Back/Enzyme/playground.jl:37 and reproduce the two examples using the common setup in the issue. Trace the failures through ext/DifferentiationInterfaceEnzymeExt/utils.jl:99 and forward_onearg.jl:151, then consult the linked Enzyme issues. Done means the deactivated Enzyme cases are resolved and can be restored without these errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend, testing
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100