EnzymeAD / Enzyme.jl

Julia bindings for the Enzyme automatic differentiator
https://enzyme.mit.edu
MIT License
428 stars 59 forks source link

ERROR: AssertionError: Enzyme Internal Error: Illegal calling convention fixup #1393

Closed SamuelBadr closed 1 month ago

SamuelBadr commented 3 months ago

This is on Enzyme.jl 0.12.0 and

julia> versioninfo()
Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (x86_64-apple-darwin22.4.0)
  CPU: 12 × Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, skylake)
Threads: 6 default, 0 interactive, 3 GC (on 12 virtual cores)
Environment:
  JULIA_PKG_USE_CLI_GIT = true
  JULIA_NUM_THREADS = 6
  JULIA_EDITOR = code

I've got quite a bit of code I'm trying to differentiate through, so wouldn't be easy to make an MWE. I hope somehow the info in the error message is enough to diagnose my mistake. After a long time spent compiling I got this error: https://gist.github.com/SamuelBadr/3f886f19364d11a250d89561e4e8db19

In case it's relevant, this was preceded by some warnings:

┌ Warning: Using fallback BLAS replacements for (["zgemm_64_", "zherk_64_", "zhemv_64_", "zgemv_64_", "dznrm2_64_"]), performance may be degraded
└ @ Enzyme.Compiler ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
┌ Warning: Type does not have a definite number of fields
│   T = Tuple{Vararg{Base.OneTo{Int64}}}
└ @ Enzyme ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
┌ Warning: Type does not have a definite number of fields
│   T = Tuple{Vararg{Int64}}
└ @ Enzyme ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
┌ Warning: active variables passed by value to jl_new_task are not yet supported
└ @ Enzyme.Compiler ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
┌ Warning: Using fallback BLAS replacements for (["zgemm_64_", "zherk_64_", "zhemv_64_", "zgemv_64_", "dznrm2_64_"]), performance may be degraded
└ @ Enzyme.Compiler ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
┌ Warning: Type does not have a definite number of fields
│   T = Tuple{Vararg{Base.OneTo{Int64}}}
└ @ Enzyme ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
┌ Warning: Type does not have a definite number of fields
│   T = Tuple{Vararg{Int64}}
└ @ Enzyme ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
┌ Warning: active variables passed by value to jl_new_task are not yet supported
└ @ Enzyme.Compiler ~/.julia/packages/GPUCompiler/kqxyC/src/utils.jl:59
wsmoses commented 3 months ago

Okay that's definitely an error that we'd need to try to reproduce to be able to fix.

If even not minimal can you share the code that triggers?

wsmoses commented 2 months ago

bump @SamuelBadr

SamuelBadr commented 2 months ago

Oh, I'm sorry but I can't share the code. I instead started minimizing it but something else got in the way. (Revising my thesis!)

I'll update here as soon as I'm able to.

wsmoses commented 1 month ago

@SamuelBadr without a reproducer I'm going to go ahead and close the issue. Please reopen if it still errs.