Skip to content

Releases: EnzymeAD/Enzyme.jl

v0.11.8

22 Sep 18:09
45bbf24
Compare
Choose a tag to compare

Enzyme v0.11.8

Diff since v0.11.7

Merged pull requests:

  • Add EnzymeTestUtils package for testing Enzyme rules (#782) (@sethaxen)
  • Add tests for BLAS.dot, BLAS.dotc, and BLAS.dotu (#842) (@sethaxen)
  • CompatHelper: bump compat for GPUCompiler to 0.22, (keep existing compat) (#1001) (@github-actions[bot])
  • support wide ints in tape (#1002) (@motabbara)
  • add 1.10 cpu features string (#1003) (@wsmoses)
  • Fix poison value handling (#1006) (@wsmoses)
  • Abstract state is default duplicated (#1007) (@wsmoses)
  • Reduce amount of printing during 'cannot find shadow' error of an arg… (#1012) (@wsmoses)
  • Attempt fix of nicer error handler for jl_f__apply_iterate (#1013) (@wsmoses)
  • Fix 0 arg wait (#1014) (@wsmoses)
  • Fix display of formula in documentation (#1015) (@metab0t)
  • Fix fallback apply iterate in vector mode (#1016) (@wsmoses)
  • Fix order of args to occursin to reduce printing on store error (#1017) (@wsmoses)
  • Fix UndefVarError: ST not defined (#1019) (@devmotion)
  • Mark custom rule tape loads as needing caching (#1024) (@wsmoses)
  • Fix batched arraycopy (reverse mode) (#1033) (@wsmoses)
  • CompatHelper: bump compat for GPUCompiler to 0.23, (keep existing compat) (#1034) (@github-actions[bot])
  • Add getri nice backtrace (#1040) (@wsmoses)
  • Add missing julia compat to EnzymeTestUtils (#1041) (@sethaxen)
  • Unmark reverse mutating test as broken (#1042) (@sethaxen)
  • Add nicer nc_sync error (#1044) (@wsmoses)
  • Fix print for abi wrapper error (#1049) (@wsmoses)
  • Fix array type cast (#1050) (@wsmoses)
  • CompatHelper: bump compat for GPUCompiler to 0.24, (keep existing compat) (#1051) (@github-actions[bot])
  • Set active_reg for mutable structs to be duplicated rather than active (#1052) (@wsmoses)
  • Fix error when returning undef from function (#1054) (@wsmoses)
  • Fix shadow segfault on custom rule (#1056) (@wsmoses)
  • Add guess activity of ref of int (#1060) (@wsmoses)
  • Fix ordering for vector fallback of apply iterate (#1062) (@wsmoses)
  • Adapt to jll bump and use nice default error for unknown c functions (#1064) (@wsmoses)
  • Better Store Activity Error Messages (#1066) (@wsmoses)

Closed issues:

  • Adding testing utilities (#780)
  • JLJit duplicate symbol (#991)
  • tape width issue using InlineStrings (#998)
  • Incorrect Jacobian when indexing an Array using begin & end (#1008)
  • Catching assertions / debugging mode? (#1009)
  • Assertion failed error (#1011)
  • Illegal type analysis error with gemv call (#1020)
  • Incorrect tape provided to custom reverse rule in for loop (#1022)
  • Cannot deduce type error (#1023)
  • mixed activity for jl_new_struct (#1026)
  • dval of mutated vector not zeroed when other activities are Const (#1028)
  • LLVM failed verification error with BatchDuplicated return type on reverse autodiff_thunk (#1032)
  • No augmented forward pass found for dgemqrt_64_ (#1037)
  • Precompilation failed; has_orc_v1 not defined (#1043)
  • BLAS.scal! error with autodiff_thunk in batch reverse-mode (#1048)
  • Crash with BLAS.scal! as argument in calling method with complex inputs (#1053)
  • AssertionError: Tuple{Vector{Float64}, Float64} has mixed internal activity types (#1055)
  • Invalid unwrap (#1058)

v0.11.7

15 Aug 03:14
8f92f38
Compare
Choose a tag to compare

Enzyme v0.11.7

Diff since v0.11.6

Closed issues:

  • Better error for Active{Vector{Float64}} (#318)
  • Differentiating Gridap code (#447)
  • getting a function call location from a stacktrace (#854)
  • improve debugging (#864)
  • CUDA sin is broken (#924)
  • runtime activity changes AD result (#947)
  • quantile gives wrong gradient on Julia 1.6 (#973)
  • hypot error on Julia 1.7 (#974)
  • Set error with x86 (#975)
  • Incorrect gradients when using views (#979)

Merged pull requests:

v0.11.6

24 Jul 03:41
044fae7
Compare
Choose a tag to compare

Enzyme v0.11.6

Diff since v0.11.5

Closed issues:

  • autodiff_deferred failing on Metal.jl kernel (#925)
  • 1.10 Forward mode segfault (#948)
  • Compilation error for custom reverse rule (#952)

Merged pull requests:

v0.11.5

13 Jul 17:05
b4c6ec6
Compare
Choose a tag to compare

Enzyme v0.11.5

Diff since v0.11.4

Closed issues:

  • Gradient computation "corrupted" on ARM-based M2 CPU (#611)
  • Error with missing value (#801)
  • Derivative leaks into Const input view (#804)
  • Segfaults in LLVM.jl on Julia 1.9.0 (#860)
  • Enzyme + KernelAbstractions: KA syntax changes and differentiating multiple kernels (#896)
  • Handle the new calling convention that julia emits for cheaper ptls (#909)
  • Enzyme compilation failed when using logpdf (#910)
  • Enzyme troubles with ElectrochemicalKinetics (#931)
  • Asserts on upcoming Julia 1.10 (#933)
  • Regression on differentiating Bessels.jl (#941)

Merged pull requests:

v0.11.4

07 Jul 19:06
cac60b1
Compare
Choose a tag to compare

Enzyme v0.11.4

Diff since v0.11.3

Merged pull requests:

  • Fix apply iterate fwd mode error message (#937) (@wsmoses)

v0.11.3

07 Jul 17:08
4c464e7
Compare
Choose a tag to compare

Enzyme v0.11.3

Diff since v0.11.2

Closed issues:

  • Erroneous autodiff results when multi-threading enabled on various CPU arch (#903)
  • Enzyme execution failed with Functors.jl (#916)
  • GC invariant error (#919)

Merged pull requests:

v0.11.2

26 Jun 17:06
c29e611
Compare
Choose a tag to compare

Enzyme v0.11.2

Diff since v0.11.1

Closed issues:

  • Define custom adjoint for jl_f_getfield (#176)
  • Jit dangling reference (#208)
  • Numerically Incorrect sinpi Derivatives (#443)
  • Add jl_nthfield in reverse mode (#645)
  • CUDA.jl kernel errors with Julia 1.9.0-rc3 (#746)
  • Incorrect return type for const return type forward-mode rule (#774)
  • Function failed verification error for BatchDuplicated with complex (#778)
  • Enzyme 0.11.1 segfaults (#779)
  • Cannot deduce type after recent commit (#784)
  • Composing with an inactive function (#786)
  • Illegal type analysis error for BLAS.nrm2 rule (#789)
  • Error using autodiff_thunk (#791)
  • Error differentiating 2-arg BLAS.dot with defined 5-arg rule (#793)
  • Performance regression (#796)
  • Support for jl_eqtable_get (#803)
  • Error reverse-mode differentiating 2-arg BLAS.dot with defined 5-arg rule (#811)
  • Crash when trying to differentiate DynamicExpressions.jl (#816)
  • Expected not LegalFullUnwrap for potentially last-value phi node (#817)
  • Add reshape test (#819)
  • Terribly slow compile time for to_tape_type (#823)
  • Incorrect forward-mode result with Const argument (#830)
  • Segfault differentiating sincos in forward-mode (#834)
  • LLVM error: function failed verification (4) (#840)
  • Warning: TypeAnalysisDepthLimit, incorrect gradient (#841)
  • void GradientUtils::eraseFictiousPHIs(): Assertion `pp->getNumUses() == 0' failed. (#848)
  • GC segfault (no MWE, private repo) (#853)
  • sincos errors for ComplexF64 forward-mode (#855)
  • Compilation failed for sum(sin, x) for complex x (#856)
  • ERROR: AssertionError: p isa LLVM.Instruction (#859)
  • sincos segfaults for ComplexF64 batch forward-mode (#867)
  • Clarification on mutable objects (#869)
  • Complex cos fails verification in reverse-mode (#875)
  • middle from Statistics errors in reverse mode (#876)
  • empty! gives error with reverse mode (#882)
  • Julia nightly broken due to attribute mismatch (#884)
  • Error from untaken branch with Float32 (#886)

Merged pull requests:

v0.11.1

24 Apr 05:05
b85a7c3
Compare
Choose a tag to compare

Enzyme v0.11.1

Diff since v0.11.0

Closed issues:

  • Differentiating Gridap code (#447)
  • Garbage Collection (Oceananigans) (#480)
  • Enzyme segfaults on Turing model (#650)
  • [EnzymeRules]: Original function implementation determines types of augemented_primal() and reverse() (#695)
  • Incomplete doc sentence for autodiff forward mode (#698)
  • gc seg fault (#727)
  • Uninterpretable error with simple mistake (#730)
  • cispi gradient is incorrect (#735)
  • Segfault when rerunning gradient computation multiple times (#737)
  • Help with gemm! (#738)
  • Error when using closure over type (#741)
  • Help writing complex rules (#744)
  • Error with LoopVectorization.jl (#745)
  • Julia Nightly custom interpreter (#749)
  • Incomplete sentence in docstring of autodiff(::ForwardMode, ...) (#752)
  • LLVM error: function failed verification for reverse rule with complex inputs (#758)
  • Incorrect zero primal returned for ComplexF64 inputs (#761)
  • Extra 32-byte allocation per-input when using forward-mode rule (#763)
  • 32bit probably get's wrong floating-point mode. (#765)

Merged pull requests:

v0.11.0

12 Apr 19:05
a23e75f
Compare
Choose a tag to compare

Enzyme v0.11.0

Diff since v0.10.18

Closed issues:

  • EnzymeRules (#172)
  • Stable docs missing from scripts deploy (#354)
  • Missing support for erf (and related I guess) (#364)
  • Error differentiating past FFT (#369)
  • Merge fwddiff_deferred and autodiff_deferred (#483)
  • Segmentation Fault (#514)
  • Incorrect gradient returned when vector splatting is used (#545)
  • lowerGCAllocBytes LLVM error running tests (#553)
  • GC Segfault [private repo] (#555)
  • Julia 1.9 GC segfault (#597)
  • Linking two modules of different target triples: 'bcloader' is 'arm64-apple-macosx11.0.0' whereas 'text' is 'arm64-apple-darwin21.5.0' (#607)
  • Test faulting in specialfunctions on ARM-based Apple M2 CPU (#609)
  • Supporting rules on functions with keyword arguments (#617)
  • Segmentation Fault (#630)
  • Segment violation when trying to run an optimization problem with DiffEqFlux.jl (#634)
  • Wrong gradients when modifying a vector in a struct (#639)
  • Enzyme is modifying variables in a struct that is not part of active data (#640)
  • getfield calls not supported (#644)
  • Type insertion error (#646)
  • cannot handle (forward) unknown intrinsic llvm.rint and pretty nasty segfault (#647)
  • Cannot handle instrinsic @llvm.trunc.f64 (#648)
  • Computing hessian of unnamed functions throws error (#649)
  • Calling convention mismatch autodiff(Forward, rosenbrock_inp, Duplicated, BatchDuplicated(x, (dx_1, dx_2))) causes segmentation fault (#652)
  • LLVM bug encountered in Turing.jl (#658)
  • 50% correctness with certain Turing models (#659)
  • Insufficiently aggressive activity analysis (#660)
  • Primal returned instead of shadow? (#667)
  • incorrect value when comparing with ForwardDiff (Forward mode) (#672)
  • Duplicated of Ref value does not accumulate gradient in GPU kernel (#674)
  • Active variables passed by value to jl_threadsfor (#675)
  • Parameter unpacking yields ERRORs (#677)
  • Forward over reverse of a simple spring energy (#684)
  • Forward over Reverse Example broken on 0.11-dev (#685)
  • Unhandled binary operator (#688)
  • Inconsistent results with ParameterHandling.jl (#691)
  • Realloc error on Reverse over Forward (#693)
  • Custom rule not detected if defined after call to autodiff (#696)
  • running autodiff twice leads to bad result when result vector is preallocated (#699)
  • Missing docstrings for types used in custom reverse rules (#704)
  • Calling convention mismatch error with custom reverse rule (#706)
  • Gradient of matrix determinant errors (#709)
  • seg fault in legalRecompute (#716)
  • CUDA test fails - no method matching LLVM.Value (#718)

Merged pull requests:

v0.10.18

04 Feb 18:16
a4819ba
Compare
Choose a tag to compare

Enzyme v0.10.18

Diff since v0.10.17

Closed issues:

  • CombinedAdjointThunk should also return ret value (#107)
  • KernelGradients: GPU compilation of kernel failed. (#221)
  • Segfault when autodiff a function containing function with user-defined rule (#496)
  • Weird gradient values (#584)

Merged pull requests: