From 77b8c4d644830c993661ad46754757c05358310f Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Sep 2025 18:44:50 +0200 Subject: [PATCH 1/3] test: untoggle some passing Enzyme tests --- .../test/Back/Enzyme/test.jl | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/DifferentiationInterface/test/Back/Enzyme/test.jl b/DifferentiationInterface/test/Back/Enzyme/test.jl index 0a580badb..637309c29 100644 --- a/DifferentiationInterface/test/Back/Enzyme/test.jl +++ b/DifferentiationInterface/test/Back/Enzyme/test.jl @@ -1,3 +1,5 @@ +# see https://github.com/JuliaDiff/DifferentiationInterface.jl/issues/855 + using Pkg Pkg.add("Enzyme") @@ -55,7 +57,7 @@ end; ) test_differentiation( - backends[2], + backends[2:3], default_scenarios(; include_normal=false, include_cachified=true, @@ -75,23 +77,19 @@ end; end @testset "Second order" begin + forward_enzyme = AutoEnzyme(; mode=Enzyme.Reverse) + reverse_enzyme = AutoEnzyme(; mode=Enzyme.Reverse) test_differentiation( [ AutoEnzyme(), - SecondOrder( - AutoEnzyme(; mode=Enzyme.Reverse), AutoEnzyme(; mode=Enzyme.Forward) - ), + # SecondOrder(forward_enzyme, reverse_enzyme), # TODO: toggle + SecondOrder(reverse_enzyme, forward_enzyme), + # SecondOrder(forward_enzyme, forward_enzyme), # TODO: toggle ], - remove_matrix_inputs(default_scenarios(; include_constantified=true)); + default_scenarios(; include_constantified=true, include_cachified=true); excluded=FIRST_ORDER, logging=LOGGING, ) - - test_differentiation( - AutoEnzyme(; mode=Enzyme.Forward); - excluded=vcat(FIRST_ORDER, [:hessian, :hvp]), - logging=LOGGING, - ) end @testset "Sparse" begin @@ -100,12 +98,7 @@ end if VERSION < v"1.11" sparse_scenarios() else - filter(sparse_scenarios()) do s - # for https://github.com/EnzymeAD/Enzyme.jl/issues/2168 - (s.x isa AbstractVector) && - (s.f != DIT.sumdiffcube) && - (s.f != DIT.sumdiffcube_mat) - end + filter(s -> s.x isa AbstractVector, sparse_scenarios()) end; sparsity=true, logging=LOGGING, From b33ca52da6f111f940136ebdbc5accbc42e958ec Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Mon, 29 Sep 2025 18:45:35 +0200 Subject: [PATCH 2/3] Fix docs --- DifferentiationInterface/docs/src/explanation/backends.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DifferentiationInterface/docs/src/explanation/backends.md b/DifferentiationInterface/docs/src/explanation/backends.md index 845ab4b9b..efc68b20b 100644 --- a/DifferentiationInterface/docs/src/explanation/backends.md +++ b/DifferentiationInterface/docs/src/explanation/backends.md @@ -63,7 +63,7 @@ Moreover, each context type is supported by a specific subset of backends: | `AutoChainRules` | ✅ | ❌ | | `AutoDiffractor` | ❌ | ❌ | | `AutoEnzyme` (forward) | ✅ | ✅ | -| `AutoEnzyme` (reverse) | ✅ | ❌ (soon) | +| `AutoEnzyme` (reverse) | ✅ | ✅ | | `AutoFastDifferentiation` | ✅ | ✅ | | `AutoFiniteDiff` | ✅ | ✅ | | `AutoFiniteDifferences` | ✅ | ✅ | From 02dd8f9ed7fa95b8c31167eea6b6a44e76029a7b Mon Sep 17 00:00:00 2001 From: Guillaume Dalle <22795598+gdalle@users.noreply.github.com> Date: Tue, 30 Sep 2025 18:40:54 +0200 Subject: [PATCH 3/3] Tests now work on matrices --- .../test/Back/Enzyme/test.jl | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/DifferentiationInterface/test/Back/Enzyme/test.jl b/DifferentiationInterface/test/Back/Enzyme/test.jl index 637309c29..cb4fce824 100644 --- a/DifferentiationInterface/test/Back/Enzyme/test.jl +++ b/DifferentiationInterface/test/Back/Enzyme/test.jl @@ -16,15 +16,6 @@ check_no_implicit_imports(DifferentiationInterface) LOGGING = get(ENV, "CI", "false") == "false" -function remove_matrix_inputs(scens::Vector{<:Scenario}) # TODO: remove - if VERSION < v"1.11" - return scens - else - # for https://github.com/EnzymeAD/Enzyme.jl/issues/2071 - return filter(s -> s.x isa Union{Number,AbstractVector}, scens) - end -end - backends = [ AutoEnzyme(; mode=nothing), AutoEnzyme(; mode=Enzyme.Forward), @@ -77,14 +68,12 @@ end; end @testset "Second order" begin - forward_enzyme = AutoEnzyme(; mode=Enzyme.Reverse) - reverse_enzyme = AutoEnzyme(; mode=Enzyme.Reverse) test_differentiation( [ AutoEnzyme(), - # SecondOrder(forward_enzyme, reverse_enzyme), # TODO: toggle - SecondOrder(reverse_enzyme, forward_enzyme), - # SecondOrder(forward_enzyme, forward_enzyme), # TODO: toggle + SecondOrder( + AutoEnzyme(; mode=Enzyme.Reverse), AutoEnzyme(; mode=Enzyme.Forward) + ), ], default_scenarios(; include_constantified=true, include_cachified=true); excluded=FIRST_ORDER,