-
Notifications
You must be signed in to change notification settings - Fork 82
Closed
Description
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
Labels
No labels