Enzyme.jl icon indicating copy to clipboard operation
Enzyme.jl copied to clipboard

Handle `@allowscalar`

Open kbarros opened this issue 5 months ago • 5 comments

The code below first emits a warning and then crashes the Julia process. Without the @allowscalar markings, it seems to work correctly.

using LinearAlgebra
using Enzyme, Reactant

β = 100
μ = 0.3
fermi_fn(x; β, μ) = 1 / (1 + exp(β*(x-μ)))

const nlayers = 15
θ0 = fill(0.001, 4*nlayers)

X = collect(range(0, 1, length=100))
Y = @. 1 - fermi_fn(X; β, μ)

function model(θ, X)
    θ = reshape(θ, 4, :)
    Z = zero(X)
    A = zero(X)

    @. A = X
    for layer in axes(θ, 2)
        Z += @allowscalar @. θ[4, layer] * A
        A = @allowscalar @. θ[1, layer] * A^2 + θ[2, layer] * A + θ[3, layer]
    end
    Z += A
    return Z
end

model(θ0, X)

# Emits warnings then crashes
Enzyme.jacobian(Enzyme.Forward, model, θ0, Const(X))

kbarros avatar Jul 13 '25 17:07 kbarros

Reactant should be unnecessary since allowscalar is from GPUArraysCore?

using LinearAlgebra
using Enzyme, GPUArraysCore

β = 100
μ = 0.3
fermi_fn(x; β, μ) = 1 / (1 + exp(β*(x-μ)))

const nlayers = 15
θ0 = fill(0.001, 4*nlayers)

X = collect(range(0, 1, length=100))
Y = @. 1 - fermi_fn(X; β, μ)

function model(θ, X)
    θ = reshape(θ, 4, :)
    Z = zero(X)
    A = zero(X)

    @. A = X
    for layer in axes(θ, 2)
        Z += @allowscalar @. θ[4, layer] * A
        A = @allowscalar @. θ[1, layer] * A^2 + θ[2, layer] * A + θ[3, layer]
    end
    Z += A
    return Z
end

model(θ0, X)

# Emits warnings then crashes
Enzyme.jacobian(Enzyme.Forward, model, θ0, Const(X))

My log is:

julia> Enzyme.jacobian(Enzyme.Forward, model, θ0, Const(X))
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
┌ Warning: TODO forward zero-set of memorycopy used memset rather than runtime type 
│ Caused by:
│ Stacktrace:
│   [1] copy
│     @ ./array.jl:350
│   [2] unaliascopy
│     @ ./abstractarray.jl:1516
│   [3] unalias
│     @ ./abstractarray.jl:1500
│   [4] broadcast_unalias
│     @ ./broadcast.jl:946
│   [5] preprocess
│     @ ./broadcast.jl:953
│   [6] preprocess_args
│     @ ./broadcast.jl:956
│   [7] preprocess
│     @ ./broadcast.jl:952
│   [8] override_bc_copyto!
│     @ ~/.julia/packages/Enzyme/R9lJl/src/compiler/interpreter.jl:798
│   [9] copyto!
│     @ ./broadcast.jl:925
│  [10] materialize!
│     @ ./broadcast.jl:883
│  [11] materialize!
│     @ ./broadcast.jl:880
│  [12] model
│     @ ./REPL[12]:6
└ @ Enzyme.Compiler ~/.julia/packages/Enzyme/R9lJl/src/rules/llvmrules.jl:792
 o:   %511 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @ijl_eqtable_get({} addrspace(10)* nonnull %510, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140071093935392 to {}*) to {} addrspace(10)*), {} addrspace(10)* %231) #78, !dbg !730
 ot: {} addrspace(10)*
 ir:   %32537 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @ijl_eqtable_get({} addrspace(10)* nonnull %32530, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140071093935392 to {}*) to {} addrspace(10)*), {} addrspace(10)* %10449) #78, !dbg !10910
 irt: {} addrspace(10)*
 p:   %"'dual_phi292" = phi [60 x {} addrspace(10)*] , !dbg !11096
 PT: [60 x {} addrspace(10)*]
 newCall:   %32537 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @ijl_eqtable_get({} addrspace(10)* nonnull %32530, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140071093935392 to {}*) to {} addrspace(10)*), {} addrspace(10)* %10449) #78, !dbg !10910
 newCallT: {} addrspace(10)*
julia: /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:6145: void AdjointGenerator::visitCallInst(llvm::CallInst&): Assertion `invertedReturn->getType() == gutils->getShadowType(call.getType())' failed.

[521499] signal 6 (-6): Aborted
in expression starting at REPL[14]:1
unknown function (ip: 0x7f65321c974c)
gsignal at /usr/lib/libc.so.6 (unknown line)
abort at /usr/lib/libc.so.6 (unknown line)
unknown function (ip: 0x7f65321574e2)
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/AdjointGenerator.h:6145
visit at /opt/x86_64-linux-gnu/x86_64-linux-gnu/sys-root/usr/local/include/llvm/IR/InstVisitor.h:111 [inlined]
CreateForwardDiff at /workspace/srcdir/Enzyme/enzyme/Enzyme/EnzymeLogic.cpp:5064
EnzymeCreateForwardDiff at /workspace/srcdir/Enzyme/enzyme/Enzyme/CApi.cpp:617
EnzymeCreateForwardDiff at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/api.jl:342
unknown function (ip: 0x7f64d7708420)
enzyme! at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/compiler.jl:1856
compile_unhooked at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/compiler.jl:4819
unknown function (ip: 0x7f64d7691436)
#compile#153 at /home/vchuravy/.julia/packages/GPUCompiler/Ecaql/src/driver.jl:67
compile at /home/vchuravy/.julia/packages/GPUCompiler/Ecaql/src/driver.jl:55 [inlined]
_thunk at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/compiler.jl:5682
_thunk at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/compiler.jl:5680 [inlined]
cached_compilation at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/compiler.jl:5734 [inlined]
thunkbase at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/compiler.jl:5848
thunk_generator at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/compiler.jl:6041
unknown function (ip: 0x7f65261c8ec0)
jl_call_staged at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/method.c:601
ijl_code_for_staged at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/method.c:656
get_staged at ./compiler/utilities.jl:123
retrieve_code_info at ./compiler/utilities.jl:135 [inlined]
InferenceState at ./compiler/inferencestate.jl:497
typeinf_edge at ./compiler/typeinfer.jl:913
abstract_call_method at ./compiler/abstractinterpretation.jl:660
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2200
abstract_call at ./compiler/abstractinterpretation.jl:2282
abstract_call at ./compiler/abstractinterpretation.jl:2275
abstract_call at ./compiler/abstractinterpretation.jl:2423
abstract_eval_call at ./compiler/abstractinterpretation.jl:2438
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2454
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2752
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3044
typeinf_local at ./compiler/abstractinterpretation.jl:3331
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3413
_typeinf at ./compiler/typeinfer.jl:244
typeinf at ./compiler/typeinfer.jl:215
typeinf_edge at ./compiler/typeinfer.jl:923
abstract_call_method at ./compiler/abstractinterpretation.jl:660
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2200
abstract_call at ./compiler/abstractinterpretation.jl:2282
abstract_apply at ./compiler/abstractinterpretation.jl:1690
abstract_call_known at ./compiler/abstractinterpretation.jl:2102
abstract_call at ./compiler/abstractinterpretation.jl:2282
abstract_call at ./compiler/abstractinterpretation.jl:2275
abstract_call at ./compiler/abstractinterpretation.jl:2423
abstract_eval_call at ./compiler/abstractinterpretation.jl:2438
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2454
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2752
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3068
typeinf_local at ./compiler/abstractinterpretation.jl:3331
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3413
_typeinf at ./compiler/typeinfer.jl:244
typeinf at ./compiler/typeinfer.jl:215
typeinf_edge at ./compiler/typeinfer.jl:923
abstract_call_method at ./compiler/abstractinterpretation.jl:660
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:102
abstract_call_known at ./compiler/abstractinterpretation.jl:2200
abstract_call at ./compiler/abstractinterpretation.jl:2282
abstract_call at ./compiler/abstractinterpretation.jl:2275
abstract_call at ./compiler/abstractinterpretation.jl:2423
abstract_eval_call at ./compiler/abstractinterpretation.jl:2438
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2454
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2752
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:3044
typeinf_local at ./compiler/abstractinterpretation.jl:3331
typeinf_nocycle at ./compiler/abstractinterpretation.jl:3413
_typeinf at ./compiler/typeinfer.jl:244
typeinf at ./compiler/typeinfer.jl:215
typeinf_ext at ./compiler/typeinfer.jl:1101
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1139
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1135
jfptr_typeinf_ext_toplevel_39964.1 at /home/vchuravy/.julia/juliaup/julia-1.11.6+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/julia.h:2157 [inlined]
jl_type_infer at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/gf.c:390
jl_generate_fptr_impl at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/jitlayers.cpp:519
jl_compile_method_internal at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/gf.c:2536 [inlined]
jl_compile_method_internal at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/gf.c:2423
_jl_invoke at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/gf.c:2940 [inlined]
ijl_apply_generic at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/gf.c:3125
gradient at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/sugar.jl:582
unknown function (ip: 0x7f65261bc5a7)
#jacobian#114 at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/sugar.jl:789 [inlined]
jacobian at /home/vchuravy/.julia/packages/Enzyme/R9lJl/src/sugar.jl:788
unknown function (ip: 0x7f65261bc20e)
jl_apply at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/julia.h:2157 [inlined]
do_call at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/interpreter.c:126
eval_value at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/interpreter.c:223
eval_stmt_value at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/interpreter.c:174 [inlined]
eval_body at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/interpreter.c:666
jl_interpret_toplevel_thunk at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/interpreter.c:824
jl_toplevel_eval_flex at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/toplevel.c:943
jl_toplevel_eval_flex at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/toplevel.c:886
ijl_toplevel_eval_in at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/toplevel.c:994
eval at ./boot.jl:430 [inlined]
eval_user_input at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:261
repl_backend_loop at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:368
#start_repl_backend#59 at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:343
start_repl_backend at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:340
#run_repl#76 at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:500
run_repl at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/usr/share/julia/stdlib/v1.11/REPL/src/REPL.jl:486
jfptr_run_repl_10230.1 at /home/vchuravy/.julia/juliaup/julia-1.11.6+0.x64.linux.gnu/share/julia/compiled/v1.11/REPL/u0gqU_QBeOa.so (unknown line)
#1150 at ./client.jl:446
jfptr_YY.1150_14947.1 at /home/vchuravy/.julia/juliaup/julia-1.11.6+0.x64.linux.gnu/share/julia/compiled/v1.11/REPL/u0gqU_QBeOa.so (unknown line)
jl_apply at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/julia.h:2157 [inlined]
jl_f__call_latest at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/builtins.c:875
#invokelatest#2 at ./essentials.jl:1055 [inlined]
invokelatest at ./essentials.jl:1052 [inlined]
run_main_repl at ./client.jl:430
repl_main at ./client.jl:567 [inlined]
_start at ./client.jl:541
jfptr__start_73597.1 at /home/vchuravy/.julia/juliaup/julia-1.11.6+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
jl_apply at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/julia.h:2157 [inlined]
true_main at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/jlapi.c:900
jl_repl_entrypoint at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/src/jlapi.c:1059
main at /cache/build/tester-amdci4-12/julialang/julia-release-1-dot-11/cli/loader_exe.c:58
unknown function (ip: 0x7f65321596b4)
__libc_start_main at /usr/lib/libc.so.6 (unknown line)
unknown function (ip: 0x4010b8)
Allocations: 77026825 (Pool: 77021958; Big: 4867); GC: 44
fish: Job 1, 'julia' terminated by signal SIGABRT (Abort)

vchuravy avatar Jul 13 '25 18:07 vchuravy

Since allowscalar uses task_local_storage https://github.com/JuliaGPU/GPUArrays.jl/blob/3c16583dce63972a267b021cac841fbd19ec26df/lib/GPUArraysCore/src/GPUArraysCore.jl#L178-L210

and the error is for: o: %511 = call nonnull "enzyme_type"="{[-1]:Pointer}" {} addrspace(10)* @ijl_eqtable_get({} addrspace(10)* nonnull %510, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 140071093935392 to {}*) to {} addrspace(10)*), {} addrspace(10)* %231) #78, !dbg !730

I would venture a guess that we never fully modelled task-local-storage.

vchuravy avatar Jul 13 '25 18:07 vchuravy

no we didn't, and I tried and failed earlier to get a nice allowscalar fix marking the relevant pieces inactive (which would be the proper fix imo).

I don't think there's anything in upstream enzyme that can be done here though, it feels all julia side?

wsmoses avatar Jul 13 '25 18:07 wsmoses

Also following up here it looks like one of the Julia runtime rules didn’t support batch mode, and that happened to be called from within allowscalar

There are two things in play here:

  1. we should fix the rule so it throws a nice Julia error (or just supports batch mode properly)
  2. we need to properly handle allowscalar from within a non reactant compilation (@kbarros if you reactant compile the whole thing I presume it will work)

wsmoses avatar Jul 14 '25 02:07 wsmoses

this missing batching was fixed on the julia side, now we get:



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 model(::Vector{Float64}, ::Vector{Float64})
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:   %getfield98 = phi {} addrspace(10)* [ %newstruct86, %L232 ], [ %getfield, %L219 ], !dbg !248 const val:   %getfield = load atomic {} addrspace(10)*, {} addrspace(10)** %343 unordered, align 8, !dbg !232, !tbaa !234, !alias.scope !136, !noalias !207, !nonnull !0, !enzyme_type !235
Type tree: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-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,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer, [-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}
 llvalue=  %6 = call {}*** @julia.get_pgcstack() #45

Stacktrace:
 [1] getproperty
   @ ./task.jl:189
 [2] get_task_tls
   @ ./task.jl:274
 [3] task_local_storage
   @ ./task.jl:269
 [4] macro expansion
   @ ~/.julia/packages/GPUArraysCore/aNaXo/src/GPUArraysCore.jl:204
 [5] model
   @ ./REPL[10]:8

Stacktrace:
  [1] get_task_tls
    @ ./task.jl:271 [inlined]
  [2] task_local_storage
    @ ./task.jl:269 [inlined]
  [3] macro expansion
    @ ~/.julia/packages/GPUArraysCore/aNaXo/src/GPUArraysCore.jl:204 [inlined]
  [4] model
    @ ./REPL[10]:8 [inlined]
  [5] fwddiffe60julia_model_813wrap
    @ ./REPL[10]:0
  [6] macro expansion
    @ /mnt3/wmoses/git/Enzyme.jl/src/compiler.jl:5883 [inlined]
  [7] enzyme_call
    @ /mnt3/wmoses/git/Enzyme.jl/src/compiler.jl:5417 [inlined]
  [8] ForwardModeThunk
    @ /mnt3/wmoses/git/Enzyme.jl/src/compiler.jl:5319 [inlined]
  [9] autodiff
    @ /mnt3/wmoses/git/Enzyme.jl/src/Enzyme.jl:673 [inlined]
 [10] autodiff
    @ /mnt3/wmoses/git/Enzyme.jl/src/Enzyme.jl:542 [inlined]
 [11] macro expansion
    @ /mnt3/wmoses/git/Enzyme.jl/src/sugar.jl:683 [inlined]
 [12] gradient(fm::ForwardMode{false, FFIABI, false, false, false}, f::typeof(model), x::Vector{Float64}, args::Const{Vector{…}}; chunk::Nothing, shadows::Tuple{NTuple{…}, Nothing})
    @ Enzyme /mnt3/wmoses/git/Enzyme.jl/src/sugar.jl:585
 [13] gradient(fm::ForwardMode{false, FFIABI, false, false, false}, f::typeof(model), x::Vector{Float64}, args::Const{Vector{Float64}})
    @ Enzyme /mnt3/wmoses/git/Enzyme.jl/src/sugar.jl:585
 [14] #jacobian#138
    @ /mnt3/wmoses/git/Enzyme.jl/src/sugar.jl:794 [inlined]
 [15] jacobian(::ForwardMode{false, FFIABI, false, false, false}, ::Function, ::Vector{Float64}, ::Const{Vector{Float64}})
    @ Enzyme /mnt3/wmoses/git/Enzyme.jl/src/sugar.jl:793
 [16] top-level scope
    @ REPL[12]:1
Some type information was truncated. Use `show(err)` to see complete types.

wsmoses avatar Oct 27 '25 06:10 wsmoses