Skip to content

DelinearizeIndexingPass crashes with --check-bounds=yes #2347

@dkytezab

Description

@dkytezab

The following code crashes only when the --check-bounds flag is set to yes:

using Reactant, Enzyme, KernelAbstractions, CUDA
using Statistics: mean
using KernelAbstractions: StaticSize

Reactant.set_default_backend("cpu")
Reactant.allowscalar(true)

H, N = 2, 4
total = N + 2*H

@kernel function halo_kernel!(c, H, N)
    j = @index(Global, Linear)
    @inbounds for i = 1:H
        c[i, j] = c[N+i, j]
    end
end

const ReactantBackend = Base.get_extension(Reactant, :ReactantKernelAbstractionsExt).ReactantBackend
dev = ReactantBackend() 

kernel! = halo_kernel!(dev, StaticSize((8)), StaticSize((total)))

loss(c) = (kernel!(c, H, N); mean(c.^2))
grad(c, dc) = (dc .= 0; Enzyme.autodiff(Enzyme.ReverseWithPrimal, loss, Active, Duplicated(c, dc)))

c  = Reactant.to_rarray(zeros(total, total))
dc = Reactant.to_rarray(zeros(total, total))

Reactant.@compile raise=true raise_first=true sync=true grad(c, dc)

with

[93780] signal 11 (2): Segmentation fault: 11
in expression starting at /Users/danielkz/Aeolus2/Breeze.jl/test/delinearize/test_reactant.jl:34
_ZN23DelinearizeIndexingPass14runOnOperationEv at /Users/danielkz/.julia/artifacts/c9416b570799802958b689f9d33ce9ac2af42e0a/lib/libReactantExtra.dylib (unknown line)
_ZN4mlir6detail17OpToOpPassAdaptor3runEPNS_4PassEPNS_9OperationENS_15AnalysisManagerEbj at /Users/danielkz/.julia/artifacts/c9416b570799802958b689f9d33ce9ac2af42e0a/lib/libReactantExtra.dylib (unknown line)
_ZN4mlir11PassManager9runPassesEPNS_9OperationENS_15AnalysisManagerE at /Users/danielkz/.julia/artifacts/c9416b570799802958b689f9d33ce9ac2af42e0a/lib/libReactantExtra.dylib (unknown line)
_ZN4mlir11PassManager3runEPNS_9OperationE at /Users/danielkz/.julia/artifacts/c9416b570799802958b689f9d33ce9ac2af42e0a/lib/libReactantExtra.dylib (unknown line)
mlirPassManagerRunOnOp at /Users/danielkz/.julia/artifacts/c9416b570799802958b689f9d33ce9ac2af42e0a/lib/libReactantExtra.dylib (unknown line)
jlplt_mlirPassManagerRunOnOp_48189 at /Users/danielkz/.julia/compiled/v1.11/Reactant/p9PzF_EWBkJ.dylib (unknown line)
mlirPassManagerRunOnOp at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/mlir/libMLIR_h.jl:9634 [inlined]
run! at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/mlir/IR/Pass.jl:187
#run_pass_pipeline!#2 at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:1436
run_pass_pipeline! at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:1431 [inlined]
#compile_mlir!#15 at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:1919
unknown function (ip: 0x1272ea54f)
compile_mlir! at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:1721
compile_mlir! at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:1721 [inlined]
#compile_xla#58 at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:3727
compile_xla at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:3700 [inlined]
#compile#59 at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:3815
compile at /Users/danielkz/.julia/packages/Reactant/EhaVb/src/Compiler.jl:3812
unknown function (ip: 0x12729018f)
jl_apply at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/./julia.h:2157 [inlined]
do_call at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/interpreter.c:126
eval_stmt_value at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/interpreter.c:174
eval_body at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/interpreter.c:666
jl_interpret_toplevel_thunk at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/interpreter.c:824
jl_toplevel_eval_flex at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/toplevel.c:943
jl_toplevel_eval_flex at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/toplevel.c:886
ijl_toplevel_eval at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/toplevel.c:952 [inlined]
ijl_toplevel_eval_in at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/toplevel.c:994
eval at ./boot.jl:430 [inlined]
include_string at ./loading.jl:2775
_include at ./loading.jl:2835
include at ./Base.jl:562
jfptr_include_47084.1 at /Users/danielkz/.julia/juliaup/julia-1.11.8+0.aarch64.apple.darwin14/lib/julia/sys.dylib (unknown line)
exec_options at ./client.jl:316
_start at ./client.jl:524
jfptr__start_73921.1 at /Users/danielkz/.julia/juliaup/julia-1.11.8+0.aarch64.apple.darwin14/lib/julia/sys.dylib (unknown line)
jl_apply at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/./julia.h:2157 [inlined]
true_main at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/jlapi.c:900
jl_repl_entrypoint at /Users/julia/.julia/scratchspaces/a66863c6-20e8-4ff4-8a62-49f30b1f605e/agent-cache/default-honeycrisp-XG3Q6T6R70.0/build/default-honeycrisp-XG3Q6T6R70-0/julialang/julia-release-1-dot-11/src/jlapi.c:1059
Allocations: 74733344 (Pool: 74732134; Big: 1210); GC: 51
zsh: segmentation fault  julia --project=test --check-bounds=yes test/delinearize/test_reactant.jl

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions