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

partition, type analysis mismatch #880

Closed
jgreener64 opened this issue May 29, 2023 · 12 comments
Closed

partition, type analysis mismatch #880

jgreener64 opened this issue May 29, 2023 · 12 comments

Comments

@jgreener64
Copy link
Contributor

I am on Julia 1.9.0 and Enzyme 16818fd. The following errors, though it works on Julia 1.8.5 (with warning: didn't implement memmove, using memcpy as fallback which can result in errors).

using Enzyme, Statistics
f(x) = median([2.0, 1.0, x])
autodiff(Reverse, f, Active, Active(1.5))
Assertion failed: isPointerArithmeticInst(cur, true, true), file /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp, line 9182

[21744] signal (22): SIGABRT
in expression starting at REPL[3]:1
crt_sig_handler at C:/workdir/src\signals-win.c:95
raise at C:\WINDOWS\System32\msvcrt.dll (unknown line)
abort at C:\WINDOWS\System32\msvcrt.dll (unknown line)
assert at C:\WINDOWS\System32\msvcrt.dll (unknown line)
needsCacheWholeAllocation at /workspace/srcdir/Enzyme/enzyme/Enzyme\GradientUtils.cpp:9181
calculateUnusedValuesInFunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:661
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:2340
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:8778
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:12417
delegateCallInst at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209 [inlined]
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:4188
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:9164
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:12417
delegateCallInst at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209 [inlined]
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:4188
EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\CApi.cpp:567
EnzymeCreatePrimalAndGradient at C:\Users\Joe\.julia\dev\Enzyme\src\api.jl:128
enzyme! at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:7690
unknown function (ip: 0000025628022f01)
#codegen#193 at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9046
codegen at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:8654 [inlined]
_thunk at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9558
_thunk at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9555 [inlined]
cached_compilation at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9593 [inlined]
#s301#222 at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9651 [inlined]
#s301#222 at .\none:0
GeneratedFunctionStub at .\boot.jl:602
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_call_staged at C:/workdir/src\method.c:530
ijl_code_for_staged at C:/workdir/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_18220.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
_jl_invoke at C:/workdir/src\gf.c:2758 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2940 [inlined]
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_type_infer at C:/workdir/src\gf.c:320
jl_generate_fptr_impl at C:/workdir/src\jitlayers.cpp:444
jl_compile_method_internal at C:/workdir/src\gf.c:2348
jl_compile_method_internal at C:/workdir/src\gf.c:2241 [inlined]
_jl_invoke at C:/workdir/src\gf.c:2750 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2940
autodiff at C:\Users\Joe\.julia\dev\Enzyme\src\Enzyme.jl:214
unknown function (ip: 00000256140f57cb)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
do_call at C:/workdir/src\interpreter.c:126
eval_value at C:/workdir/src\interpreter.c:226
eval_stmt_value at C:/workdir/src\interpreter.c:177 [inlined]
eval_body at C:/workdir/src\interpreter.c:624
jl_interpret_toplevel_thunk at C:/workdir/src\interpreter.c:762
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:912
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:856
ijl_toplevel_eval at C:/workdir/src\toplevel.c:921 [inlined]
ijl_toplevel_eval_in at C:/workdir/src\toplevel.c:971
eval at .\boot.jl:370 [inlined]
eval_user_input at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:153
repl_backend_loop at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:249
#start_repl_backend#46 at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:234
start_repl_backend at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:231
#run_repl#59 at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:379
run_repl at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:365
jfptr_run_repl_62761.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
#1017 at .\client.jl:421
jfptr_YY.1017_37145.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_f__call_latest at C:/workdir/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_34279.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
true_main at C:/workdir/src\jlapi.c:573
jl_repl_entrypoint at C:/workdir/src\jlapi.c:717
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: 30113636 (Pool: 30078912; Big: 34724); GC: 40

Version info:

Julia Version 1.9.0
Commit 8e63055292 (2023-05-07 11:25 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: 6 × Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-14.0.6 (ORCJIT, skylake)
  Threads: 4 on 6 virtual cores
Environment:
  JULIA_NUM_THREADS = 4
@wsmoses
Copy link
Member

wsmoses commented May 29, 2023

per the recent jll bump, just to confirm, what error do you get?

@jgreener64
Copy link
Contributor Author

On Julia 1.9.0 and Enzyme 9487eb8 I get:

Assertion failed: isPointerArithmeticInst(cur, true, true), file /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp, line 9173

[19476] signal (22): SIGABRT
in expression starting at REPL[3]:1
crt_sig_handler at C:/workdir/src\signals-win.c:95
raise at C:\WINDOWS\System32\msvcrt.dll (unknown line)
abort at C:\WINDOWS\System32\msvcrt.dll (unknown line)
assert at C:\WINDOWS\System32\msvcrt.dll (unknown line)
needsCacheWholeAllocation at /workspace/srcdir/Enzyme/enzyme/Enzyme\GradientUtils.cpp:9172
calculateUnusedValuesInFunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:666
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:2347
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:8834
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:12708
delegateCallInst at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209 [inlined]visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:4211
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:9230
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:12708
delegateCallInst at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209 [inlined]visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:4211
EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\CApi.cpp:587
EnzymeCreatePrimalAndGradient at C:\Users\Joe\.julia\dev\Enzyme\src\api.jl:128
enzyme! at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:7691
unknown function (ip: 000002107173f801)
#codegen#193 at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9047
codegen at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:8655 [inlined]
_thunk at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9559
_thunk at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9556 [inlined]
cached_compilation at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9594 [inlined]
#s301#222 at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9652 [inlined]
#s301#222 at .\none:0
GeneratedFunctionStub at .\boot.jl:602
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_call_staged at C:/workdir/src\method.c:530
ijl_code_for_staged at C:/workdir/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_18220.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
_jl_invoke at C:/workdir/src\gf.c:2758 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2940 [inlined]
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_type_infer at C:/workdir/src\gf.c:320
jl_generate_fptr_impl at C:/workdir/src\jitlayers.cpp:444
jl_compile_method_internal at C:/workdir/src\gf.c:2348
jl_compile_method_internal at C:/workdir/src\gf.c:2241 [inlined]
_jl_invoke at C:/workdir/src\gf.c:2750 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2940
autodiff at C:\Users\Joe\.julia\dev\Enzyme\src\Enzyme.jl:214
unknown function (ip: 0000021059462a5b)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
do_call at C:/workdir/src\interpreter.c:126
eval_value at C:/workdir/src\interpreter.c:226
eval_stmt_value at C:/workdir/src\interpreter.c:177 [inlined]
eval_body at C:/workdir/src\interpreter.c:624
jl_interpret_toplevel_thunk at C:/workdir/src\interpreter.c:762
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:912
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:856
ijl_toplevel_eval at C:/workdir/src\toplevel.c:921 [inlined]
ijl_toplevel_eval_in at C:/workdir/src\toplevel.c:971
eval at .\boot.jl:370 [inlined]
eval_user_input at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:153
repl_backend_loop at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:249
#start_repl_backend#46 at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:234
start_repl_backend at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:231
#run_repl#59 at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:379
run_repl at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:365
jfptr_run_repl_62761.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
#1017 at .\client.jl:421
jfptr_YY.1017_37145.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_f__call_latest at C:/workdir/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_34279.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
true_main at C:/workdir/src\jlapi.c:573
jl_repl_entrypoint at C:/workdir/src\jlapi.c:717
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: 30106532 (Pool: 30071775; Big: 34757); GC: 40

@jgreener64
Copy link
Contributor Author

Possibly a related issue given the similar message and the fact that median involves sorting. If not I can open as a separate issue.

On Julia 1.9.0 and Enzyme 9487eb8:

using Enzyme
function f(x)
    y = [1.0, 2.0, 3.0]
    return sum(sort(x) .* y) # Works if sort is removed
end
x = [5.0, 6.0, 7.0]
dx = zero(x)
autodiff(Reverse, f, Active, Duplicated(x, dx))
warning: didn't implement memmove, using memcpy as fallback which can result in errors
Assertion failed: isPointerArithmeticInst(cur, true, true), file /workspace/srcdir/Enzyme/enzyme/Enzyme/GradientUtils.cpp, line 9173

[15408] signal (22): SIGABRT
in expression starting at REPL[7]:1
crt_sig_handler at C:/workdir/src\signals-win.c:95
raise at C:\WINDOWS\System32\msvcrt.dll (unknown line)
abort at C:\WINDOWS\System32\msvcrt.dll (unknown line)
assert at C:\WINDOWS\System32\msvcrt.dll (unknown line)
needsCacheWholeAllocation at /workspace/srcdir/Enzyme/enzyme/Enzyme\GradientUtils.cpp:9172
calculateUnusedValuesInFunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:666
CreateAugmentedPrimal at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:2347
recursivelyHandleSubfunction at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:8834
visitCallInst at /workspace/srcdir/Enzyme/enzyme/Enzyme\AdjointGenerator.h:12708
delegateCallInst at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:302 [inlined]
visitCall at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209 [inlined]
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\Instruction.def:209
visit at /opt/x86_64-w64-mingw32/x86_64-w64-mingw32/sys-root/usr/local/include/llvm/IR\InstVisitor.h:112 [inlined]
CreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\EnzymeLogic.cpp:4211
EnzymeCreatePrimalAndGradient at /workspace/srcdir/Enzyme/enzyme/Enzyme\CApi.cpp:587
EnzymeCreatePrimalAndGradient at C:\Users\Joe\.julia\dev\Enzyme\src\api.jl:128
enzyme! at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:7691
unknown function (ip: 000001d96e43b9e1)
#codegen#193 at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9047
codegen at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:8655 [inlined]
_thunk at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9559
_thunk at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9556 [inlined]
cached_compilation at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9594 [inlined]
#s301#222 at C:\Users\Joe\.julia\dev\Enzyme\src\compiler.jl:9652 [inlined]
#s301#222 at .\none:0
GeneratedFunctionStub at .\boot.jl:602
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_call_staged at C:/workdir/src\method.c:530
ijl_code_for_staged at C:/workdir/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_18220.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
_jl_invoke at C:/workdir/src\gf.c:2758 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2940 [inlined]
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_type_infer at C:/workdir/src\gf.c:320
jl_generate_fptr_impl at C:/workdir/src\jitlayers.cpp:444
jl_compile_method_internal at C:/workdir/src\gf.c:2348
jl_compile_method_internal at C:/workdir/src\gf.c:2241 [inlined]
_jl_invoke at C:/workdir/src\gf.c:2750 [inlined]
ijl_apply_generic at C:/workdir/src\gf.c:2940
autodiff at C:\Users\Joe\.julia\dev\Enzyme\src\Enzyme.jl:214
unknown function (ip: 000001d96e3d893b)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
do_call at C:/workdir/src\interpreter.c:126
eval_value at C:/workdir/src\interpreter.c:226
eval_stmt_value at C:/workdir/src\interpreter.c:177 [inlined]
eval_body at C:/workdir/src\interpreter.c:624
jl_interpret_toplevel_thunk at C:/workdir/src\interpreter.c:762
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:912
jl_toplevel_eval_flex at C:/workdir/src\toplevel.c:856
ijl_toplevel_eval at C:/workdir/src\toplevel.c:921 [inlined]
ijl_toplevel_eval_in at C:/workdir/src\toplevel.c:971
eval at .\boot.jl:370 [inlined]
eval_user_input at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:153
repl_backend_loop at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:249
#start_repl_backend#46 at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:234
start_repl_backend at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:231
#run_repl#59 at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:379
run_repl at C:\workdir\usr\share\julia\stdlib\v1.9\REPL\src\REPL.jl:365
jfptr_run_repl_62761.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
#1017 at .\client.jl:421
jfptr_YY.1017_37145.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
jl_f__call_latest at C:/workdir/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_34279.clone_1 at C:\Users\Joe\Documents\soft\Julia\Julia-1.9.0\lib\julia\sys.dll (unknown line)
jl_apply at C:/workdir/src\julia.h:1879 [inlined]
true_main at C:/workdir/src\jlapi.c:573
jl_repl_entrypoint at C:/workdir/src\jlapi.c:717
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: 31400677 (Pool: 31363020; Big: 37657); GC: 45

@wsmoses
Copy link
Member

wsmoses commented May 30, 2023

using Enzyme, Statistics
Enzyme.API.printall!(true)

function f(y)
    first(sort!(y))
end

autodiff(Reverse, f, Active, Duplicated([1.0], [0.0]))

@wsmoses
Copy link
Member

wsmoses commented Jun 5, 2023

@wsmoses
Copy link
Member

wsmoses commented Jun 5, 2023

@wsmoses
Copy link
Member

wsmoses commented Jun 5, 2023

@wsmoses
Copy link
Member

wsmoses commented Aug 6, 2023

This no longer gives the above error, but does have a type analysis mismatch, presumably due to the inner radix sort.

Nevertheless, @jgreener64 would you consider contributing a custom rule for sort!

@wsmoses wsmoses changed the title median gradient errors on Julia 1.9 Sort, type analysis mismatch Aug 6, 2023
@jgreener64
Copy link
Contributor Author

Nevertheless, @jgreener64 would you consider contributing a custom rule for sort!

Happy to try.

@wsmoses
Copy link
Member

wsmoses commented Feb 10, 2024

@jgreener64 I tried the code again, and it looks like this still would need a rule for partition! if you want to take a stab at that as well?

[presumably this: https://github.com/JuliaLang/julia/blob/604609a3fc1bf76470f4bca2333628cb08419f81/base/sort.jl#L1070 ]

@wsmoses wsmoses changed the title Sort, type analysis mismatch partition, type analysis mismatch Feb 10, 2024
@jgreener64
Copy link
Contributor Author

Yes I can try.

@jgreener64
Copy link
Contributor Author

I think a rule for partialsort! would be more generic, see #1373.

@wsmoses wsmoses closed this as completed Apr 20, 2024
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

2 participants