Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation failed for sum(sin, x) for complex x #856

Closed
sethaxen opened this issue May 18, 2023 · 5 comments
Closed

Compilation failed for sum(sin, x) for complex x #856

sethaxen opened this issue May 18, 2023 · 5 comments

Comments

@sethaxen
Copy link
Collaborator

The following example errors for eltype ComplexF32 (attached) and segfaults for ComplexF64:

using Enzyme
f(x) = sum(sin, x)

T = ComplexF32
x = randn(T, 3)
∂x = randn(T, 3)
autodiff(Forward, f, Duplicated, Duplicated(x, ∂x))

dump.txt

@vchuravy
Copy link
Member

It's not a segmentation fault:

ERROR: Enzyme compilation failed.
Current scope: 
...
cannot handle unknown binary operator:   %4 = and i64 %3, 4503599627370495, !dbg !32


Stacktrace:
 [1] &
   @ ./int.jl:347
 [2] paynehanek
   @ ./special/rem_pio2.jl:142

Segmentation fault in particular refer to Signal 11 -- i.e. access to out of bounds memory, memory with wrong permissions.
A common example is the dereferencing of a null pointer.

@vchuravy vchuravy changed the title Segfault with sum(sin, x) for complex x Compilation failed for sum(sin, x) for complex x May 18, 2023
@sethaxen
Copy link
Collaborator Author

It's not a segmentation fault:

On my machine, for T=ComplexF64, this does segfault:

[912688] signal (11.1): Segmentation fault
in expression starting at REPL[15]:1
_ZL17createSlotTrackerPKN4llvm5ValueE at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZL22WriteAsOperandInternalRN4llvm11raw_ostreamEPKNS_5ValueERN12_GLOBAL__N_116AsmWriterContextE at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZN12_GLOBAL__N_114AssemblyWriter12writeOperandEPKN4llvm5ValueEb at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZN12_GLOBAL__N_114AssemblyWriter16printInstructionERKN4llvm11InstructionE at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZNK4llvm5Value5printERNS_11raw_ostreamERNS_17ModuleSlotTrackerEb at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZN4llvm15VerifierSupport5WriteERKNS_5ValueE at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZN12_GLOBAL__N_18Verifier13visitCallBaseERN4llvm8CallBaseE at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZN12_GLOBAL__N_18Verifier6verifyERKN4llvm8FunctionE.part.1398 at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
_ZN4llvm12verifyModuleERKNS_6ModuleEPNS_11raw_ostreamEPb at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
LLVMVerifyModule at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/bin/../lib/julia/libLLVM-14jl.so (unknown line)
LLVMVerifyModule at /home/sethaxen/.julia/packages/LLVM/bsdku/lib/13/libLLVM_h.jl:576 [inlined]
post_optimze! at /home/sethaxen/.julia/packages/Enzyme/tHbH4/src/compiler/optimize.jl:1047
post_optimze! at /home/sethaxen/.julia/packages/Enzyme/tHbH4/src/compiler/optimize.jl:1041
unknown function (ip: 0x7f2d17f723f1)
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
_thunk at /home/sethaxen/.julia/packages/Enzyme/tHbH4/src/compiler.jl:9571
_thunk at /home/sethaxen/.julia/packages/Enzyme/tHbH4/src/compiler.jl:9549 [inlined]
cached_compilation at /home/sethaxen/.julia/packages/Enzyme/tHbH4/src/compiler.jl:9587 [inlined]
#s301#222 at /home/sethaxen/.julia/packages/Enzyme/tHbH4/src/compiler.jl:9645 [inlined]
#s301#222 at ./none:0
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
GeneratedFunctionStub at ./boot.jl:602
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
jl_call_staged at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/method.c:530
ijl_code_for_staged at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/method.c:581
get_staged at ./compiler/utilities.jl:115
retrieve_code_info at ./compiler/utilities.jl:127 [inlined]
InferenceState at ./compiler/inferencestate.jl:354
typeinf_edge at ./compiler/typeinfer.jl:924
abstract_call_method at ./compiler/abstractinterpretation.jl:611
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:152
abstract_call_known at ./compiler/abstractinterpretation.jl:1949
abstract_call at ./compiler/abstractinterpretation.jl:2020
abstract_call at ./compiler/abstractinterpretation.jl:1999
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2183
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2396
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:2684
typeinf_local at ./compiler/abstractinterpretation.jl:2869
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2957
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:216
typeinf_edge at ./compiler/typeinfer.jl:933
abstract_call_method at ./compiler/abstractinterpretation.jl:611
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:152
abstract_call_known at ./compiler/abstractinterpretation.jl:1949
abstract_call at ./compiler/abstractinterpretation.jl:2020
abstract_call at ./compiler/abstractinterpretation.jl:1999
abstract_eval_statement_expr at ./compiler/abstractinterpretation.jl:2183
abstract_eval_statement at ./compiler/abstractinterpretation.jl:2396
abstract_eval_basic_statement at ./compiler/abstractinterpretation.jl:2660
typeinf_local at ./compiler/abstractinterpretation.jl:2869
typeinf_nocycle at ./compiler/abstractinterpretation.jl:2957
_typeinf at ./compiler/typeinfer.jl:246
typeinf at ./compiler/typeinfer.jl:216
typeinf_ext at ./compiler/typeinfer.jl:1058
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1091
typeinf_ext_toplevel at ./compiler/typeinfer.jl:1087
jfptr_typeinf_ext_toplevel_14294.clone_1 at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
jl_type_infer at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:320
jl_generate_fptr_impl at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/jitlayers.cpp:444
jl_compile_method_internal at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2348 [inlined]
jl_compile_method_internal at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2237
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2750 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
autodiff at /home/sethaxen/.julia/packages/Enzyme/tHbH4/src/Enzyme.jl:214
unknown function (ip: 0x7f2d17f66f87)
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
do_call at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/interpreter.c:126
eval_value at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/interpreter.c:226
eval_stmt_value at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/interpreter.c:177 [inlined]
eval_body at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/interpreter.c:624
jl_interpret_toplevel_thunk at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/interpreter.c:762
jl_toplevel_eval_flex at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/toplevel.c:912
jl_toplevel_eval_flex at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/toplevel.c:856
ijl_toplevel_eval_in at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/toplevel.c:971
eval at ./boot.jl:370 [inlined]
eval_user_input at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:153
repl_backend_loop at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:249
#start_repl_backend#46 at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:234
start_repl_backend at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:231
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
#run_repl#59 at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:379
run_repl at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/usr/share/julia/stdlib/v1.9/REPL/src/REPL.jl:365
jfptr_run_repl_60276.clone_1 at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
#1017 at ./client.jl:421
jfptr_YY.1017_32248.clone_1 at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
jl_f__call_latest at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/builtins.c:774
#invokelatest#2 at ./essentials.jl:816 [inlined]
invokelatest at ./essentials.jl:813 [inlined]
run_main_repl at ./client.jl:405
exec_options at ./client.jl:322
_start at ./client.jl:522
jfptr__start_37386.clone_1 at /home/sethaxen/.julia/juliaup/julia-1.9.0+0.x64.linux.gnu/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2758 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/gf.c:2940
jl_apply at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/julia.h:1879 [inlined]
true_main at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/jlapi.c:573
jl_repl_entrypoint at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/src/jlapi.c:717
main at /cache/build/default-amdci4-0/julialang/julia-release-1-dot-9/cli/loader_exe.c:59
unknown function (ip: 0x7f2d56c29d8f)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x401098)
Allocations: 23869797 (Pool: 23840204; Big: 29593); GC: 31
Segmentation fault (core dumped)

@wsmoses
Copy link
Member

wsmoses commented May 21, 2023

autodiff(Forward, sincos, Duplicated, Duplicated(1.0f0, 1.0f0))

@sethaxen
Copy link
Collaborator Author

autodiff(Forward, sincos, Duplicated, Duplicated(1.0f0, 1.0f0))

What does this mean?

@wsmoses
Copy link
Member

wsmoses commented May 21, 2023

Oh I just minimized the bug to sincos of a float32.

@wsmoses wsmoses closed this as completed May 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants