-
Notifications
You must be signed in to change notification settings - Fork 82
Open
Description
On Julia 1.10
using Optim
using Enzyme
using LinearAlgebra
function forward_optim(x, method)
f(y) = sum(abs2, y .^ 2 .- x)
y0 = ones(eltype(x), size(x))
result = optimize(f, y0, method)
y = Optim.minimizer(result)
z = nothing
return y, z
end
x = [4.0, 9.0]
J = Diagonal(0.5 ./ sqrt.(x))
Enzyme.jacobian(Forward, _x -> first(forward_optim(_x, LBFGS())), x)
ERROR: MethodError: no method matching insert_value!(::LLVM.IRBuilder, ::LLVM.UndefValue, ::Nothing, ::UInt64)
Closest candidates are:
insert_value!(::LLVM.IRBuilder, ::LLVM.Value, ::LLVM.Value, ::Any, ::String)
@ LLVM ~/.julia/packages/LLVM/iza6e/src/irbuilder.jl:302
insert_value!(::LLVM.IRBuilder, ::LLVM.Value, ::LLVM.Value, ::Any)
@ LLVM ~/.julia/packages/LLVM/iza6e/src/irbuilder.jl:302
Stacktrace:
[1] batch_call_same_with_inverted_arg_if_active!(B::LLVM.IRBuilder, gutils::Enzyme.Compiler.GradientUtils, orig::LLVM.CallInst, args::Vector{…}, valTys::Vector{…}, lookup::Bool; kwargs::@Kwargs{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/gradientutils.jl:349
[2] batch_call_same_with_inverted_arg_if_active!
@ ~/.julia/packages/Enzyme/i2rgS/src/gradientutils.jl:313 [inlined]
[3] common_setfield_fwd(offset::Int64, B::LLVM.IRBuilder, orig::LLVM.CallInst, gutils::Enzyme.Compiler.GradientUtils, normalR::Ptr{Ptr{LLVM.API.LLVMOpaqueValue}}, shadowR::Ptr{Ptr{LLVM.API.LLVMOpaqueValue}})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/rules/typeunstablerules.jl:1862
[4] jlcall_fwd
@ ~/.julia/packages/Enzyme/i2rgS/src/rules/llvmrules.jl:152 [inlined]
[5] jlcall_fwd_cfunc(B::Ptr{LLVM.API.LLVMOpaqueBuilder}, OrigCI::Ptr{LLVM.API.LLVMOpaqueValue}, gutils::Ptr{Nothing}, normalR::Ptr{Ptr{LLVM.API.LLVMOpaqueValue}}, shadowR::Ptr{Ptr{LLVM.API.LLVMOpaqueValue}})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/rules/llvmrules.jl:75
[6] 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/i2rgS/src/api.jl:342
[7] macro expansion
@ ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:2709 [inlined]
[8] macro expansion
@ ~/.julia/packages/LLVM/iza6e/src/base.jl:97 [inlined]
[9] 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::Tuple{…} where N, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:2534
[10] compile_unhooked(output::Symbol, job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget{GPUCompiler.NativeCompilerTarget}, Enzyme.Compiler.EnzymeCompilerParams{Enzyme.Compiler.PrimalCompilerParams}})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:5138
[11] compile(target::Symbol, job::GPUCompiler.CompilerJob; kwargs::@Kwargs{})
@ GPUCompiler ~/.julia/packages/GPUCompiler/4uj4i/src/driver.jl:67
[12] compile
@ ~/.julia/packages/GPUCompiler/4uj4i/src/driver.jl:55 [inlined]
[13] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget{GPUCompiler.NativeCompilerTarget}, Enzyme.Compiler.EnzymeCompilerParams{Enzyme.Compiler.PrimalCompilerParams}}, postopt::Bool)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:5996
[14] _thunk
@ ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:5994 [inlined]
[15] cached_compilation
@ ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:6051 [inlined]
[16] thunkbase(mi::Core.MethodInstance, World::UInt64, FA::Type{…}, A::Type{…}, TT::Type, Mode::Enzyme.API.CDerivativeMode, width::Int64, ModifiedBetween::Tuple{…} where N, ReturnPrimal::Bool, ShadowInit::Bool, ABI::Type, ErrIfFuncWritten::Bool, RuntimeActivity::Bool, StrongZero::Bool, edges::Vector{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:6167
[17] thunk_generator(world::UInt64, source::Union{…}, FA::Type, A::Type, TT::Type, Mode::Enzyme.API.CDerivativeMode, Width::Int64, ModifiedBetween::Tuple{…} 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/i2rgS/src/compiler.jl:6311
[18] macro expansion
@ ~/.julia/packages/Enzyme/i2rgS/src/rules/jitrules.jl:308 [inlined]
[19] runtime_generic_fwd(::Type{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::typeof(setproperty!), ::Nothing, ::Nothing, ::OnceDifferentiable{…}, ::OnceDifferentiable{…}, ::OnceDifferentiable{…}, ::Symbol, ::Nothing, ::Nothing, ::Float64, ::Float64, ::Float64)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/i2rgS/src/rules/jitrules.jl:357
[20] value_gradient!!
@ ~/.julia/packages/NLSolversBase/n7XXO/src/interface.jl:82
[21] initial_state
@ ~/.julia/packages/Optim/7krni/src/multivariate/solvers/first_order/l_bfgs.jl:168
[22] optimize
@ ~/.julia/packages/Optim/7krni/src/multivariate/optimize/optimize.jl:43 [inlined]
[23] #optimize#77
@ ~/.julia/packages/Optim/7krni/src/multivariate/optimize/interface.jl:274 [inlined]
[24] optimize (repeats 2 times)
@ ~/.julia/packages/Optim/7krni/src/multivariate/optimize/interface.jl:264 [inlined]
[25] forward_optim
@ ./REPL[4]:4
[26] #2
@ ./REPL[7]:1 [inlined]
[27] fwddiffe2julia__2_512wrap
@ ./REPL[7]:0
[28] macro expansion
@ ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:5923 [inlined]
[29] enzyme_call
@ ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:5454 [inlined]
[30] ForwardModeThunk
@ ~/.julia/packages/Enzyme/i2rgS/src/compiler.jl:5356 [inlined]
[31] autodiff
@ ~/.julia/packages/Enzyme/i2rgS/src/Enzyme.jl:686 [inlined]
[32] autodiff
@ ~/.julia/packages/Enzyme/i2rgS/src/Enzyme.jl:555 [inlined]
[33] macro expansion
@ ~/.julia/packages/Enzyme/i2rgS/src/sugar.jl:683 [inlined]
[34] gradient(::ForwardMode{false, FFIABI, false, false, false}, ::var"#2#3", ::Vector{Float64}; chunk::Nothing, shadows::Tuple{Tuple{Vector{Float64}, Vector{Float64}}})
@ Enzyme ~/.julia/packages/Enzyme/i2rgS/src/sugar.jl:585
[35] gradient(::ForwardMode{false, FFIABI, false, false, false}, ::var"#2#3", ::Vector{Float64})
@ Enzyme ~/.julia/packages/Enzyme/i2rgS/src/sugar.jl:585
[36] #jacobian#148
@ ~/.julia/packages/Enzyme/i2rgS/src/sugar.jl:794 [inlined]
[37] jacobian(::ForwardMode{false, FFIABI, false, false, false}, ::Function, ::Vector{Float64})
@ Enzyme ~/.julia/packages/Enzyme/i2rgS/src/sugar.jl:793
[38] top-level scope
@ REPL[7]:1
Some type information was truncated. Use `show(err)` to see complete types.
With chunk=Val(1) it fails on a mismatched activity function
Metadata
Metadata
Assignees
Labels
No labels