-
Notifications
You must be signed in to change notification settings - Fork 90
Open
Description
I am on Enzyme 0.13.129 and Julia 1.12-nightly (release-1.12/a93bf9a805d). This works on Julia 1.11.8.
using Enzyme
struct MyStruct{I, DI}
is::I
js::I
oris::DI
orjs::DI
srjs::DI
end
dict_get(dic, key, default::T) where {T} = (haskey(dic, key) ? T(dic[key]) : default)
function f(params_dic, atoms)
d = Dict("C" => 1.0)
d2 = empty(d)
for k in keys(d)
d2[k] = dict_get(params_dic, "inter_GB_screen_C", d[k])
end
offset_radii = fill(0.1, length(atoms))
scaled_offset_radii = map(offset_radii) do offset_radius
screen = dict_get(d2, "C", d2["C"])
return screen * offset_radius
end
n_atoms = length(atoms)
inds_j = hcat(1:n_atoms...)
inds_i = permutedims(inds_j, (2, 1))
oris = @view offset_radii[inds_i]
orjs = @view offset_radii[inds_j]
srjs = @view offset_radii[inds_j]
inter = MyStruct{typeof(inds_i), typeof(oris)}(inds_i, inds_j, oris, orjs, srjs)
return 1.0
end
params_dic = Dict("inter_GB_screen_C" => 1.058554)
grads_enzyme = Dict(k => 0.0 for k in keys(params_dic))
atoms = fill(1.0, 100)
f(params_dic, atoms) # Works
autodiff(
set_runtime_activity(Reverse),
f,
Active,
Duplicated(params_dic, grads_enzyme),
Const(atoms),
)ERROR: invoke is not a generic function
Stacktrace:
[1] error(s::String)
@ Base ./error.jl:44
[2] primal_return_type_generator(world::UInt64, source::Any, self::Any, mode::Type, ft::Type, tt::Type)
@ Enzyme.Compiler ~/.julia/dev/Enzyme/src/typeutils/inference.jl:103
[3] augfwd_with_return(::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Type{…}, ::Val{…}, ::Type{…}, ::Type{…}, ::typeof(invoke), ::Nothing, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…})
@ Enzyme.Compiler ~/.julia/dev/Enzyme/src/rules/jitrules.jl:1247
[4] macro expansion
@ ~/.julia/dev/Enzyme/src/rules/jitrules.jl:1383 [inlined]
[5] runtime_iterate_augfwd(::Type{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::typeof(invoke), ::Nothing, ::Core.SimpleVector, ::Core.SimpleVector, ::Core.SimpleVector, ::Core.SimpleVector)
@ Enzyme.Compiler ~/.julia/dev/Enzyme/src/rules/jitrules.jl:1423
[6] hcat
@ ~/.julia/juliaup/julia-1.12-nightly/share/julia/stdlib/v1.12/SparseArrays/src/sparsevector.jl:1309 [inlined]
[7] augmented_julia_hcat_13766wrap
@ ~/.julia/juliaup/julia-1.12-nightly/share/julia/stdlib/v1.12/SparseArrays/src/sparsevector.jl:0
[8] macro expansion
@ ~/.julia/dev/Enzyme/src/compiler.jl:6672 [inlined]
[9] enzyme_call(::Val{…}, ::Ptr{…}, ::Type{…}, ::Val{…}, ::Val{…}, ::Type{…}, ::Type{…}, ::Const{…}, ::Type{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…})
@ Enzyme.Compiler ~/.julia/dev/Enzyme/src/compiler.jl:6151
[10] (::Enzyme.Compiler.AugmentedForwardThunk{…})(::Const{…}, ::Const{…}, ::Vararg{…})
@ Enzyme.Compiler ~/.julia/dev/Enzyme/src/compiler.jl:6099
[11] augfwd_with_return(::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Type{…}, ::Val{…}, ::Type{…}, ::Type{…}, ::typeof(hcat), ::Nothing, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…}, ::Const{…})
@ Enzyme.Compiler ~/.julia/dev/Enzyme/src/rules/jitrules.jl:1299
[12] macro expansion
@ ~/.julia/dev/Enzyme/src/rules/jitrules.jl:1383 [inlined]
[13] runtime_iterate_augfwd(::Type{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::Val{…}, ::typeof(hcat), ::Nothing, ::UnitRange{…}, ::Nothing)
@ Enzyme.Compiler ~/.julia/dev/Enzyme/src/rules/jitrules.jl:1423
[14] f
@ ~/dms/molly_dev/enzyme_err48.jl:29 [inlined]
[15] diffejulia_f_6814wrap
@ ~/dms/molly_dev/enzyme_err48.jl:0
[16] macro expansion
@ ~/.julia/dev/Enzyme/src/compiler.jl:6672 [inlined]
[17] enzyme_call
@ ~/.julia/dev/Enzyme/src/compiler.jl:6151 [inlined]
[18] CombinedAdjointThunk
@ ~/.julia/dev/Enzyme/src/compiler.jl:6035 [inlined]
[19] autodiff
@ ~/.julia/dev/Enzyme/src/Enzyme.jl:528 [inlined]
[20] autodiff(::ReverseMode{…}, ::typeof(f), ::Type{…}, ::Duplicated{…}, ::Const{…})
@ Enzyme ~/.julia/dev/Enzyme/src/Enzyme.jl:549
[21] top-level scope
@ REPL[2]:1
Some type information was truncated. Use `show(err)` to see complete types.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels