Skip to content

Segfault with constant variables? "Enzyme cannot deduce type"? #571

@ChrisRackauckas

Description

@ChrisRackauckas
using Enzyme

# Define the constants for the PDE
const λ = 50.0      # Thermal conductivity
const α = 1e-5;     # Diffusivity constant

# Discretization  
const Nx = 101;     # Number of elements x-direction
const L  = 0.1;     # Length of plate
const Δx = L/(Nx-1) # Spatial sampling
const Tf = 6000.0;  # Final time
const dt = 2.0;     # Time step width

function input_signal(time,params)
    t = time
    a = params[1];
    b = params[2];
    q = 1e-6;
    c = b*(-log(q))^(1/2);

    return  exp(a- (c * (t - 1/b))^2)
end


# Diffusion: x-direction
function diffusion_x!(dx,x,Nx, Ny, Δx) # in-place
    
    for iy in 1 : Ny
        for ix in 2 : Nx-1
            i = (iy-1)*Nx + ix
            dx[i] =  (x[i-1] - 2*x[i] + x[i+1])/Δx^2
        end
        i1 = (iy-1)*Nx + 1      # West
        i2 = (iy-1)*Nx + Nx     # East
        dx[i1] = (-2*x[i1] + 2*x[i1+1])/Δx^2
        dx[i2] = (2*x[i2-1] - 2*x[i2])/Δx^2
    end

    nothing 
end


# 1D heat equation
function heat_eq!(dx,x,p,t)       
    time = t/Tf;
    u = input_signal(time, p)
    
    diffusion_x!(dx,x,Nx,1,Δx)
  
    dx .= α * dx
    dx[1] = dx[1] + α/* Δx) * u
end

x = 300 * ones(Nx) # Intial values
dx = similar(x)
d_dx = similar(dx)
d_x = similar(x)
t = 0.0
p = [15.0,10.0]
d_p = similar(p)

heat_eq!(dx,x,p,t)

Enzyme.autodiff(heat_eq!, Duplicated(dx, d_dx), Duplicated(x, d_x), Duplicated(p, d_p), Enzyme.Const(t));
Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x7ff9672c0a2b -- jl_table_peek_bp at C:/workdir/src\iddict.c:119 [inlined]
ijl_eqtable_get at C:/workdir/src\iddict.c:158
in expression starting at REPL[32]:1
jl_table_peek_bp at C:/workdir/src\iddict.c:119 [inlined]
ijl_eqtable_get at C:/workdir/src\iddict.c:158
mtcache_hash_lookup at C:/workdir/src\typemap.c:292 [inlined]
mtcache_hash_lookup at C:/workdir/src\typemap.c:288 [inlined]
jl_typemap_level_assoc_exact at C:/workdir/src\typemap.c:1055
jl_typemap_assoc_exact at C:/workdir/src\julia_internal.h:1329 [inlined]
jl_lookup_generic_ at C:/workdir/src\gf.c:2499
ijl_apply_generic at C:/workdir/src\gf.c:2555
enzyme_custom_extract_mi at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:4729
unknown function (ip: 000001ea244f9f45)
julia_type_rule at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:4743
unknown function (ip: 000001ea244f6f74)
operator() at /workspace/srcdir/Enzyme/enzyme/Enzyme\CApi.cpp:209 [inlined]
_M_invoke at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/include/c++/8.1.0/bits\std_function.h:282
operator() at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/include/c++/8.1.0/bits\std_function.h:687 [inlined]
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis\TypeAnalysis.cpp:3608
visitValue at /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis\TypeAnalysis.cpp:1171
run at /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis\TypeAnalysis.cpp:1100
analyzeFunction at /workspace/srcdir/Enzyme/enzyme/Enzyme/TypeAnalysis\TypeAnalysis.cpp:5046
CreateFromClone at /workspace/srcdir/Enzyme/enzyme/Enzyme\GradientUtils.cpp:3754
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:3704
EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\CApi.cpp:474
EnzymeCreatePrimalAndGradient at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\api.jl:123
enzyme! at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:5049
unknown function (ip: 000001ea244f312e)
#codegen#142 at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:6242
codegen##kw at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:5911 [inlined]
_thunk at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:6729 [inlined]
_thunk at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:6723
unknown function (ip: 000001ea08491cb5)
cached_compilation at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:6767
unknown function (ip: 000001ea08468fc0)
#s879#169 at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\compiler.jl:6827 [inlined]
#s879#169 at .\none:0
GeneratedFunctionStub at .\boot.jl:582
jl_apply at C:/workdir/src\julia.h:1843 [inlined]
jl_call_staged at C:/workdir/src\method.c:520
ijl_code_for_staged at C:/workdir/src\method.c:571
get_staged at .\compiler\utilities.jl:114
retrieve_code_info at .\compiler\utilities.jl:126 [inlined]
InferenceState at .\compiler\inferencestate.jl:284
typeinf_edge at .\compiler\typeinfer.jl:868
abstract_call_method at .\compiler\abstractinterpretation.jl:647
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:139
abstract_call_known at .\compiler\abstractinterpretation.jl:1716
abstract_call at .\compiler\abstractinterpretation.jl:1786
abstract_call at .\compiler\abstractinterpretation.jl:1753
abstract_eval_statement at .\compiler\abstractinterpretation.jl:1910
typeinf_local at .\compiler\abstractinterpretation.jl:2386
typeinf_nocycle at .\compiler\abstractinterpretation.jl:2482
_typeinf at .\compiler\typeinfer.jl:230
typeinf at .\compiler\typeinfer.jl:213
typeinf_edge at .\compiler\typeinfer.jl:877
abstract_call_method at .\compiler\abstractinterpretation.jl:647
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:139
abstract_call_known at .\compiler\abstractinterpretation.jl:1716
abstract_call at .\compiler\abstractinterpretation.jl:1786
abstract_call at .\compiler\abstractinterpretation.jl:1753
abstract_eval_statement at .\compiler\abstractinterpretation.jl:1910
typeinf_local at .\compiler\abstractinterpretation.jl:2386
typeinf_nocycle at .\compiler\abstractinterpretation.jl:2482
_typeinf at .\compiler\typeinfer.jl:230
typeinf at .\compiler\typeinfer.jl:213
typeinf_edge at .\compiler\typeinfer.jl:877
abstract_call_method at .\compiler\abstractinterpretation.jl:647
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:139
abstract_call_known at .\compiler\abstractinterpretation.jl:1716
abstract_call at .\compiler\abstractinterpretation.jl:1786
abstract_call at .\compiler\abstractinterpretation.jl:1753
abstract_eval_statement at .\compiler\abstractinterpretation.jl:1910
typeinf_local at .\compiler\abstractinterpretation.jl:2386
typeinf_nocycle at .\compiler\abstractinterpretation.jl:2482
_typeinf at .\compiler\typeinfer.jl:230
typeinf at .\compiler\typeinfer.jl:213
typeinf_edge at .\compiler\typeinfer.jl:877
abstract_call_method at .\compiler\abstractinterpretation.jl:647
abstract_call_gf_by_type at .\compiler\abstractinterpretation.jl:139
abstract_call_known at .\compiler\abstractinterpretation.jl:1716
abstract_call at .\compiler\abstractinterpretation.jl:1786
abstract_call at .\compiler\abstractinterpretation.jl:1753
abstract_eval_statement at .\compiler\abstractinterpretation.jl:1910
typeinf_local at .\compiler\abstractinterpretation.jl:2386
typeinf_nocycle at .\compiler\abstractinterpretation.jl:2482
_typeinf at .\compiler\typeinfer.jl:230
typeinf at .\compiler\typeinfer.jl:213
typeinf_ext at .\compiler\typeinfer.jl:967
typeinf_ext_toplevel at .\compiler\typeinfer.jl:1000
typeinf_ext_toplevel at .\compiler\typeinfer.jl:996
jfptr_typeinf_ext_toplevel_14214.clone_1 at C:\Users\accou\.julia\juliaup\julia-1.8.4+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
_jl_invoke at C:/workdir/src\gf.c:2377 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2559 [inlined]
jl_apply at C:/workdir/src\julia.h:1843 [inlined]
jl_type_infer at C:/workdir/src\gf.c:315
jl_generate_fptr_impl at C:/workdir/src\jitlayers.cpp:319
jl_compile_method_internal at C:/workdir/src\gf.c:2091
jl_compile_method_internal at C:/workdir/src\gf.c:2038 [inlined]
_jl_invoke at C:/workdir/src\gf.c:2369 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2559
autodiff at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\Enzyme.jl:211
jl_apply at C:/workdir/src\julia.h:1843 [inlined]
do_apply at C:/workdir/src\builtins.c:730
autodiff at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\Enzyme.jl:248
jl_apply at C:/workdir/src\julia.h:1843 [inlined]
do_apply at C:/workdir/src\builtins.c:730
autodiff at C:\Users\accou\.julia\packages\Enzyme\I25Pv\src\Enzyme.jl:354
jl_apply at C:/workdir/src\julia.h:1843 [inlined]
do_call at C:/workdir/src\interpreter.c:126
eval_value at C:/workdir/src\interpreter.c:215
eval_stmt_value at C:/workdir/src\interpreter.c:166 [inlined]
eval_body at C:/workdir/src\interpreter.c:612
jl_interpret_toplevel_thunk at C:/workdir/src\interpreter.c:750
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:906
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:850
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:850
ijl_toplevel_eval at C:/workdir/src\toplevel.c:915 [inlined]
ijl_toplevel_eval_in at C:/workdir/src\toplevel.c:965
eval at .\boot.jl:368 [inlined]
eval_user_input at C:\workdir\usr\share\julia\stdlib\v1.8\REPL\src\REPL.jl:151
repl_backend_loop at C:\workdir\usr\share\julia\stdlib\v1.8\REPL\src\REPL.jl:247
start_repl_backend at C:\workdir\usr\share\julia\stdlib\v1.8\REPL\src\REPL.jl:232
#run_repl#47 at C:\workdir\usr\share\julia\stdlib\v1.8\REPL\src\REPL.jl:369
run_repl at C:\workdir\usr\share\julia\stdlib\v1.8\REPL\src\REPL.jl:355
jfptr_run_repl_65713.clone_1 at C:\Users\accou\.julia\juliaup\julia-1.8.4+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
#967 at .\client.jl:419
jfptr_YY.967_33782.clone_1 at C:\Users\accou\.julia\juliaup\julia-1.8.4+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1843 [inlined]
jl_f__call_latest at C:/workdir/src\builtins.c:774
#invokelatest#2 at .\essentials.jl:729 [inlined]
invokelatest at .\essentials.jl:726 [inlined]
run_main_repl at .\client.jl:404
exec_options at .\client.jl:318
_start at .\client.jl:522
jfptr__start_50673.clone_1 at C:\Users\accou\.julia\juliaup\julia-1.8.4+0.x64.w64.mingw32\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1843 [inlined]
true_main at C:/workdir/src\jlapi.c:575
jl_repl_entrypoint at C:/workdir/src\jlapi.c:719
mainCRTStartup at C:/workdir/cli\loader_exe.c:59
BaseThreadInitThunk at C:\WINDOWS\System32\KERNEL32.DLL (unknown line)
RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
Allocations: 29372639 (Pool: 29351204; Big: 21435); GC: 36

Is an isolated version of SciML/SciMLSensitivity.jl#744. I didn't get Enzyme cannot deduce type but maybe that's a Windows thing.

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