EnzymeAD / Enzyme.jl

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

Recent updates broke LLVM.jl downstream CI #1688

Closed maleadt closed 2 months ago

maleadt commented 2 months ago

https://github.com/maleadt/LLVM.jl/actions/runs/10124866534/job/28002054712: OK on ad1f2d853a70c003fa0944ef8a4e87e801e4bdc9 https://github.com/maleadt/LLVM.jl/actions/runs/10126480217/job/28010087884: broken on b0e13be0ff478267b1981093fdd4e8e7d981b812

ABI & Calling convention: Error During Test at /home/runner/work/LLVM.jl/LLVM.jl/downstream/test/abi.jl:4
  Got exception outside of a @test
  UndefRefError: access to undefined reference
  Stacktrace:
    [1] LLVM.LLVMType(ref::Ptr{LLVM.API.LLVMOpaqueType})
      @ LLVM ~/work/LLVM.jl/LLVM.jl/src/core/type.jl:36
    [2] julia_undef_value_for_type(mod::Ptr{LLVM.API.LLVMOpaqueModule}, Ty::Ptr{LLVM.API.LLVMOpaqueType}, forceZero::UInt8)
      @ Enzyme.Compiler ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:2881
    [3] EnzymeCreatePrimalAndGradient(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{Enzyme.API.CDIFFE_TYPE}, TA::Enzyme.TypeAnalysis, returnValue::Bool, dretUsed::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{Nothing}, forceAnonymousTape::Bool, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{Bool}, augmented::Ptr{Nothing}, atomicAdd::Bool)
      @ Enzyme.API ~/work/LLVM.jl/LLVM.jl/downstream/src/api.jl:157
    [4] enzyme!(job::CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::Tuple{Bool, Bool}, returnPrimal::Bool, expectedTapeType::Type, loweredArgs::Set{Int64}, boxedArgs::Set{Int64})
      @ Enzyme.Compiler ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:3932
    [5] codegen(output::Symbol, job::CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing)
      @ Enzyme.Compiler ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:6063
    [6] codegen
      @ ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:5371 [inlined]
    [7] _thunk(job::CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool)
      @ Enzyme.Compiler ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:6871
    [8] _thunk
      @ ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:6871 [inlined]
    [9] cached_compilation
      @ ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:6909 [inlined]
   [10] thunkbase(ctx::LLVM.Context, mi::Core.MethodInstance, ::Val{0x0000000000007b24}, ::Type{Const{var"#sumlist#40"}}, ::Type{Active}, tt::Type{Tuple{Duplicated{LList}}}, ::Val{Enzyme.API.DEM_ReverseModeCombined}, ::Val{1}, ::Val{(false, false)}, ::Val{false}, ::Val{false}, ::Type{FFIABI})
      @ Enzyme.Compiler ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:6982
   [11] #s2043#28379
      @ ~/work/LLVM.jl/LLVM.jl/downstream/src/compiler.jl:7034 [inlined]
   [12] var"#s2043#28379"(FA::Any, A::Any, TT::Any, Mode::Any, ModifiedBetween::Any, width::Any, ReturnPrimal::Any, ShadowInit::Any, World::Any, ABI::Any, ::Any, ::Type, ::Type, ::Type, tt::Any, ::Type, ::Type, ::Type, ::Type, ::Type, ::Any)
      @ Enzyme.Compiler ./none:0
   [13] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any})
      @ Core ./boot.jl:602
   [14] autodiff
      @ ~/work/LLVM.jl/LLVM.jl/downstream/src/Enzyme.jl:309 [inlined]
   [15] autodiff(mode::ReverseMode{false, FFIABI, false}, f::var"#sumlist#40", ::Type{Active}, args::Duplicated{LList})
      @ Enzyme ~/work/LLVM.jl/LLVM.jl/downstream/src/Enzyme.jl:326
   [16] macro expansion
      @ ~/work/LLVM.jl/LLVM.jl/downstream/test/abi.jl:256 [inlined]
   [17] macro expansion
      @ /opt/hostedtoolcache/julia/1.10.4/x64/share/julia/stdlib/v1.10/Test/src/Test.jl:1577 [inlined]
   [18] top-level scope
      @ ~/work/LLVM.jl/LLVM.jl/downstream/test/abi.jl:6
   [19] include(fname::String)
      @ Base.MainInclude ./client.jl:489
   [20] top-level scope
      @ ~/work/LLVM.jl/LLVM.jl/downstream/test/runtests.jl:85
   [21] include(fname::String)
      @ Base.MainInclude ./client.jl:489
   [22] top-level scope
      @ none:6
   [23] eval
      @ ./boot.jl:385 [inlined]
   [24] exec_options(opts::Base.JLOptions)
      @ Base ./client.jl:291
   [25] _start()
      @ Base ./client.jl:552
wsmoses commented 2 months ago

Yeah our jll had an ABI change which is adopted on master, but just made its way though ygg an hour ago. A release should happen soon