Second order AD error
- Dominant language
- Julia
- Stars
- 586
- Forks
- 108
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 44
Description
I am on Enzyme 0.13.12, StaticArrays 1.9.8 and Julia 1.10.5 on Mac.
```julia
using Enzyme, StaticArrays, LinearAlgebra
function mvp(a, b)
o = zeros(size(a, 1))
for i in axes(a, 1)
s = 0.0
for j in axes(a, 2)
s += a[i, j] * b[j]
end
o[i] = s
end
return o
end
function g(E_rep, params)
w1, b1, w2, b2 = params
h1 = mvp(w1, E_rep) .+ b1
return mvp(w2, h1) .+ b2
end
function f(coords, params)
E_rep = norm.(coords)
E = g(E_rep, params)
return E[1]
end
coords = rand(SVector{3, Float64}, 8)
params = (rand(16, 8), rand(16), rand(1, 16), rand(1))
f(coords, params)
function f2(coords, params)
d_coords = zero(coords)
autodiff(
set_runtime_activity(Reverse),
f,
Active,
Duplicated(coords, d_coords),
Const(params),
)
return -d_coords
end
loss(coords, params) = f2(coords, params)[1][1]
loss(coords, params)
# First order works
d_params = (zeros(16, 8), zeros(16), zeros(1, 16), zeros(1))
autodiff(
set_runtime_activity(Reverse),
loss,
Active,
Const(coords),
Duplicated(params, d_params),
)
# Second order errors
```
```
freeing without malloc %2 = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 4
freeing without malloc %2 = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 4
ERROR: LoadError: Enzyme cannot deduce type
Current scope:
; Function Attrs: mustprogress willreturn
define private fastcc void @preprocess_diffejulia_mvp_3682({} addrspace(10)* nocapture nonnull readonly align 16 dereferenceable(40) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]: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}" "enzymejl_parmtype"="4721353664" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* nocapture readonly align 16 "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]: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}" "enzymejl_parmtype"="4721353664" "enzymejl_parmtype_ref"="2" %"'", { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg) unnamed_addr #20 !dbg !3379 {
top:
%1 = call {}*** @julia.get_pgcstack() #33
%2 = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 4
%arraysize = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 1, !dbg !3380
%3 = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 0, !dbg !3380
%arraylen = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 2, !dbg !3386
%.not = icmp eq i64 %arraylen, 0, !dbg !3386
%.not73 = icmp eq i64 %arraysize, 0, !dbg !3392
br i1 %.not73, label %invertL33, label %invertidxend51.preheader, !dbg !3396
inverttop: ; preds = %invertL33, %inverttop.L15_crit_edge
fence syncscope("singlethread") seq_cst
ret void
inverttop.L15_crit_edge: ; preds = %invertL33
%_unwrap = shl nuw i64 %arraylen, 3, !dbg !3397
%"'ipc_unwrap" = addrspacecast {} addrspace(10)* %3 to i8 addrspace(13)* addrspace(11)*, !dbg !3397
%"arrayptr.pre7190'il_phi_unwrap" = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(11)* %"'ipc_unwrap", align 8, !dbg !3397, !tbaa !128, !alias.scope !3399, !noalias !3408
call void @llvm.memset.p13i8.i64(i8 addrspace(13)* align 8 %"arrayptr.pre7190'il_phi_unwrap", i8 noundef 0, i64 %_unwrap, i1 noundef false) #33, !dbg !3397, !tbaa !424, !noalias !3410
br label %inverttop
invertL33: ; preds = %invertL33.L45_crit_edge, %top
br i1 %.not, label %inverttop, label %inverttop.L15_crit_edge
invertL33.L45_crit_edge: ; preds = %invertL45
%4 = bitcast double* %2 to i8*
call void @free(i8* nonnull %4) #33, !dbg !3411
br label %invertL33
invertL45.loopexit: ; preds = %invertidxend38_amerge
br label %invertL45
invertL45: ; preds = %invertL45.loopexit, %invertidxend51
%"'de.0" = phi double [ %19, %invertidxend51 ], [ 0.000000e+00, %invertL45.loopexit ]
%5 = icmp eq i64 %storemerge, 0
br i1 %5, label %invertL33.L45_crit_edge, label %invertidxend51
invertidxend51.preheader: ; preds = %top
%arraysize18.pre = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 3
%.not74 = icmp eq i64 %arraysize18.pre, 0
%"'ipc30_unwrap" = addrspacecast {} addrspace(10)* %3 to double addrspace(13)* addrspace(11)*
%"arrayptr5379'il_phi_unwrap" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc30_unwrap", align 8, !tbaa !128, !alias.scope !3399, !noalias !3408, !nonnull !0
%_unwrap21 = addrspacecast {} addrspace(10)* %0 to double addrspace(13)* addrspace(11)*
%arrayptr4077_unwrap = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %_unwrap21, align 16, !alias.scope !3412
%"'ipc11_unwrap" = addrspacecast {} addrspace(10)* %"'" to double addrspace(13)* addrspace(11)*
br label %invertidxend51
invertidxend38: ; preds = %invertidxend38.preheader, %invertidxend38_amerge
%iv1 = phi i64 [ 0, %invertidxend38.preheader ], [ %iv.next2, %invertidxend38_amerge ]
%6 = mul nsw i64 %iv1, -1
%iv.next2 = add nuw nsw i64 %iv1, 1
%7 = add nsw i64 %arraysize18.pre, %6
%storemerge1 = add nsw i64 %7, -1
br i1 %.not2, label %invertidxend38_amerge, label %invertidxend38_active, !dbg !3413
invertidxend38_active: ; preds = %invertidxend38
%8 = add nuw nsw i64 %storemerge1, %20, !dbg !3415
%9 = getelementptr inbounds double, double* %2, i64 %8, !dbg !3415
%10 = load double, double* %9, align 8, !dbg !3416, !tbaa !424, !alias.scope !41, !noalias !1118, !invariant.group !3417
%"'ipg_unwrap" = getelementptr inbounds double, double addrspace(13)* %"arrayptr4077'ipl_unwrap", i64 %storemerge1, !dbg !3413
%11 = fmul fast double %10, %19, !dbg !3415
%12 = load double, double addrspace(13)* %"'ipg_unwrap", align 8, !dbg !3413, !tbaa !424, !alias.scope !3418, !noalias !3421
%13 = fadd fast double %12, %11, !dbg !3413
store double %13, double addrspace(13)* %"'ipg_unwrap", align 8, !dbg !3413, !tbaa !424, !alias.scope !3418, !noalias !3423
br label %invertidxend38_amerge, !dbg !3413
invertidxend38_amerge: ; preds = %invertidxend38_active, %invertidxend38
%14 = icmp eq i64 %storemerge1, 0
br i1 %14, label %invertL45.loopexit, label %invertidxend38
invertidxend51: ; preds = %invertidxend51.preheader, %invertL45
%iv = phi i64 [ 0, %invertidxend51.preheader ], [ %iv.next, %invertL45 ]
%"'de.2" = phi double [ %"'de.0", %invertL45 ], [ 0.000000e+00, %invertidxend51.preheader ]
%15 = mul nsw i64 %iv, -1
%iv.next = add nuw nsw i64 %iv, 1
%16 = add nsw i64 %arraysize, %15
%storemerge = add nsw i64 %16, -1
%"'ipg29_unwrap" = getelementptr inbounds double, double addrspace(13)* %"arrayptr5379'il_phi_unwrap", i64 %storemerge, !dbg !3424
%17 = load double, double addrspace(13)* %"'ipg29_unwrap", align 8, !dbg !3424, !tbaa !424, !alias.scope !3426, !noalias !3429
store double 0.000000e+00, double addrspace(13)* %"'ipg29_unwrap", align 8, !dbg !3424, !tbaa !424, !alias.scope !3426, !noalias !3431
%18 = select fast i1 %.not74, double 0.000000e+00, double %17
%19 = fadd fast double %18, %"'de.2"
br i1 %.not74, label %invertL45, label %invertidxend38.preheader
invertidxend38.preheader: ; preds = %invertidxend51
%"arrayptr4077'ipl_unwrap" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc11_unwrap", align 16, !alias.scope !3432, !noalias !3435, !invariant.group !3437
%.not2 = icmp eq double addrspace(13)* %arrayptr4077_unwrap, %"arrayptr4077'ipl_unwrap"
%20 = mul nuw nsw i64 %storemerge, %arraysize18.pre
br label %invertidxend38, !dbg !3413
}
Type analysis state:
i64 1: {[-1]:Integer}, intvals: {1,}
i64 0: {[-1]:Anything}, intvals: {0,}
i64 3: {[-1]:Integer}, intvals: {3,}
i64 -1: {[-1]:Anything}, intvals: {-1,}
double 0.000000e+00: {[-1]:Anything}, intvals: {}
%18 = select fast i1 %.not74, double 0.000000e+00, double %17: {[-1]:Float@double}, intvals: {}
%"'ipg_unwrap" = getelementptr inbounds double, double addrspace(13)* %"arrayptr4077'ipl_unwrap", i64 %storemerge1, !dbg !82: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%"'ipg29_unwrap" = getelementptr inbounds double, double addrspace(13)* %"arrayptr5379'il_phi_unwrap", i64 %storemerge, !dbg !99: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
call void @free(i8* nonnull %4) #33, !dbg !80: {}, intvals: {}
%9 = getelementptr inbounds double, double* %2, i64 %8, !dbg !86: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%12 = load double, double addrspace(13)* %"'ipg_unwrap", align 8, !dbg !82, !tbaa !76, !alias.scope !93, !noalias !96: {[-1]:Float@double}, intvals: {}
%"arrayptr.pre7190'il_phi_unwrap" = load i8 addrspace(13)*, i8 addrspace(13)* addrspace(11)* %"'ipc_unwrap", align 8, !dbg !51, !tbaa !54, !alias.scope !59, !noalias !70: {[-1]:Pointer}, intvals: {}
%arrayptr4077_unwrap = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %_unwrap21, align 16, !alias.scope !81: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%"'ipc_unwrap" = addrspacecast {} addrspace(10)* %3 to i8 addrspace(13)* addrspace(11)*, !dbg !51: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%10 = load double, double* %9, align 8, !dbg !89, !tbaa !76, !alias.scope !90, !noalias !91, !invariant.group !92: {[-1]:Float@double}, intvals: {}
%4 = bitcast double* %2 to i8*: {[-1]:Pointer}, intvals: {}
%"'ipc30_unwrap" = addrspacecast {} addrspace(10)* %3 to double addrspace(13)* addrspace(11)*: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%"arrayptr5379'il_phi_unwrap" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc30_unwrap", align 8, !tbaa !54, !alias.scope !59, !noalias !70, !nonnull !0: {[-1]:Pointer}, intvals: {}
%17 = load double, double addrspace(13)* %"'ipg29_unwrap", align 8, !dbg !99, !tbaa !76, !alias.scope !101, !noalias !104: {[-1]:Float@double}, intvals: {}
%_unwrap21 = addrspacecast {} addrspace(10)* %0 to double addrspace(13)* addrspace(11)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]: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}, intvals: {}
%"'ipc11_unwrap" = addrspacecast {} addrspace(10)* %"'" to double addrspace(13)* addrspace(11)*: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]: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}, intvals: {}
%"arrayptr4077'ipl_unwrap" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc11_unwrap", align 16, !alias.scope !107, !noalias !110, !invariant.group !112: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%iv1 = phi i64 [ 0, %invertidxend38.preheader ], [ %iv.next2, %invertidxend38_amerge ]: {[-1]:Integer}, intvals: {0,}
%iv = phi i64 [ 0, %invertidxend51.preheader ], [ %iv.next, %invertL45 ]: {[-1]:Integer}, intvals: {0,}
%"'de.0" = phi double [ %19, %invertidxend51 ], [ 0.000000e+00, %invertL45.loopexit ]: {[-1]:Float@double}, intvals: {}
%"'de.2" = phi double [ %"'de.0", %invertL45 ], [ 0.000000e+00, %invertidxend51.preheader ]: {[-1]:Float@double}, intvals: {}
%1 = call {}*** @julia.get_pgcstack() #33: {}, intvals: {}
%.not73 = icmp eq i64 %arraysize, 0, !dbg !46: {[-1]:Integer}, intvals: {}
%14 = icmp eq i64 %storemerge1, 0: {[-1]:Integer}, intvals: {}
%storemerge1 = add nsw i64 %7, -1: {[-1]:Integer}, intvals: {}
%16 = add nsw i64 %arraysize, %15: {[-1]:Integer}, intvals: {}
%iv.next = add nuw nsw i64 %iv, 1: {[-1]:Integer}, intvals: {1,}
%storemerge = add nsw i64 %16, -1: {[-1]:Integer}, intvals: {}
%20 = mul nuw nsw i64 %storemerge, %arraysize18.pre: {[-1]:Integer}, intvals: {}
%arraysize = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 1, !dbg !22: {[-1]:Integer}, intvals: {}
%.not2 = icmp eq double addrspace(13)* %arrayptr4077_unwrap, %"arrayptr4077'ipl_unwrap": {[-1]:Integer}, intvals: {}
%11 = fmul fast double %10, %19, !dbg !86: {[-1]:Float@double}, intvals: {}
%2 = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 4: {[-1]:Pointer}, intvals: {}
%7 = add nsw i64 %arraysize18.pre, %6: {[-1]:Integer}, intvals: {}
%5 = icmp eq i64 %storemerge, 0: {[-1]:Integer}, intvals: {}
%arraysize18.pre = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 3: {[-1]:Integer}, intvals: {}
%13 = fadd fast double %12, %11, !dbg !82: {[-1]:Float@double}, intvals: {}
%arraylen = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 2, !dbg !32: {}, intvals: {}
{} addrspace(10)* %0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]: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}, intvals: {}
{} addrspace(10)* %"'": {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]: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}, intvals: {}
{ {} addrspace(10)*, i64, i64, i64, double* } %tapeArg: {[0]:Pointer, [0,0]:Pointer, [8]:Integer, [9]:Integer, [10]:Integer, [11]:Integer, [12]:Integer, [13]:Integer, [14]:Integer, [15]:Integer, [24]:Integer, [25]:Integer, [26]:Integer, [27]:Integer, [28]:Integer, [29]:Integer, [30]:Integer, [31]:Integer, [32]:Pointer}, intvals: {}
%8 = add nuw nsw i64 %storemerge1, %20, !dbg !86: {[-1]:Integer}, intvals: {}
%15 = mul nsw i64 %iv, -1: {[-1]:Integer}, intvals: {0,}
%3 = extractvalue { {} addrspace(10)*, i64, i64, i64, double* } %tapeArg, 0, !dbg !22: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%6 = mul nsw i64 %iv1, -1: {[-1]:Integer}, intvals: {0,}
%19 = fadd fast double %18, %"'de.2": {[-1]:Float@double}, intvals: {}
%.not74 = icmp eq i64 %arraysize18.pre, 0: {[-1]:Integer}, intvals: {}
%iv.next2 = add nuw nsw i64 %iv1, 1: {[-1]:Integer}, intvals: {1,}
%_unwrap = shl nuw i64 %arraylen, 3, !dbg !51: {}, intvals: {}
%.not = icmp eq i64 %arraylen, 0, !dbg !32: {[-1]:Integer}, intvals: {}
Cannot deduce type of memset call void @llvm.memset.p13i8.i64(i8 addrspace(13)* align 8 %"arrayptr.pre7190'il_phi_unwrap", i8 noundef 0, i64 %_unwrap, i1 noundef false) #33, !dbg !51, !tbaa !76, !noalias !79
Caused by:
Stacktrace:
[1] setindex!
@ ./array.jl:1021
[2] fill!
@ ./array.jl:395
[3] zeros
@ ./array.jl:637
[4] zeros
@ ./array.jl:633
[5] zeros
@ ./array.jl:631
[6] mvp
@ ~/Downloads/enzyme_err.jl:4
within MethodInstance for mvp(::Matrix{Float64}, ::Vector{Float64})
Stacktrace:
[1] setindex!
@ ./array.jl:1021 [inlined]
[2] fill!
@ ./array.jl:395 [inlined]
[3] zeros
@ ./array.jl:637 [inlined]
[4] zeros
@ ./array.jl:633 [inlined]
[5] zeros
@ ./array.jl:631 [inlined]
[6] mvp
@ ~/Downloads/enzyme_err.jl:4
[7] g
@ ~/Downloads/enzyme_err.jl:15
[8] f
@ ~/Downloads/enzyme_err.jl:23 [inlined]
[9] f
@ ~/Downloads/enzyme_err.jl:0 [inlined]
[10] diffejulia_f_3663_inner_1wrap
@ ~/Downloads/enzyme_err.jl:0 [inlined]
[11] macro expansion
@ ~/.julia/packages/Enzyme/BRtTP/src/compiler.jl:8137 [inlined]
[12] enzyme_call
@ ~/.julia/packages/Enzyme/BRtTP/src/compiler.jl:7703 [inlined]
[13] CombinedAdjointThunk
@ ~/.julia/packages/Enzyme/BRtTP/src/compiler.jl:7476 [inlined]
[14] autodiff_deferred
@ ~/.julia/packages/Enzyme/BRtTP/src/Enzyme.jl:781 [inlined]
[15] autodiff
@ ~/.julia/packages/Enzyme/BRtTP/src/Enzyme.jl:512 [inlined]
[16] f2
@ ~/Downloads/enzyme_err.jl:42
[17] loss
@ ~/Downloads/enzyme_err.jl:52 [inlined]
[18] loss
@ ~/Downloads/enzyme_err.jl:0 [inlined]
[19] diffejulia_loss_3263_inner_1wrap
@ ~/Downloads/enzyme_err.jl:0
[20] macro expansion
@ ~/.julia/packages/Enzyme/BRtTP/src/compiler.jl:8137 [inlined]
[21] enzyme_call
@ ~/.julia/packages/Enzyme/BRtTP/src/compiler.jl:7703 [inlined]
[22] CombinedAdjointThunk
@ ~/.julia/packages/Enzyme/BRtTP/src/compiler.jl:7476 [inlined]
[23] autodiff
@ ~/.julia/packages/Enzyme/BRtTP/src/Enzyme.jl:491 [inlined]
[24] autodiff(::ReverseMode{false, true, FFIABI, false, false}, ::typeof(loss), ::Type{Active}, ::Const{Vector{SVector{3, Float64}}}, ::Duplicated{Tuple{Matrix{Float64}, Vector{Float64}, Matrix{Float64}, Vector{Float64}}})
@ Enzyme ~/.julia/packages/Enzyme/BRtTP/src/Enzyme.jl:512
[25] top-level scope
@ ~/Downloads/enzyme_err.jl:56
in expression starting at /Users/jgreener/Downloads/enzyme_err.jl:56
```
Contributor guide
Assessment
This issue has not been assessed yet.