diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 89223f597..bb7cbd4d8 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -16,8 +16,8 @@ concurrency: cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }} jobs: - test-DI: - name: ${{ matrix.version }} - DI (${{ matrix.group }}) + test-DI-Core: + name: ${{ matrix.version }} - DI Core (${{ matrix.group }}) runs-on: ubuntu-latest if: ${{ !contains(github.event.pull_request.labels.*.name, 'skipci') }} timeout-minutes: 120 @@ -32,25 +32,9 @@ jobs: - '1.11' - '1.12' group: - - Core/Internals - - Back/DifferentiateWith - - Core/SimpleFiniteDiff - - Back/SparsityDetector - - Core/ZeroBackends - - Back/ChainRules - # - Back/Diffractor - - Back/Enzyme - - Back/FastDifferentiation - - Back/FiniteDiff - - Back/FiniteDifferences - - Back/ForwardDiff - - Back/GTPSA - - Back/Mooncake - - Back/PolyesterForwardDiff - - Back/ReverseDiff - - Back/Symbolics - - Back/Tracker - - Back/Zygote + - Internals + - SimpleFiniteDiff + - ZeroBackends skip_lts: - ${{ github.event.pull_request.draft }} skip_pre: @@ -60,13 +44,8 @@ jobs: version: '1.10' - skip_pre: true version: '1.12' - - version: '1.11' - group: Back/ChainRules - - version: '1.12' - group: Back/Enzyme - - version: '1.12' - group: Back/DifferentiateWith env: + JULIA_DI_TEST_TYPE: 'Core' JULIA_DI_TEST_GROUP: ${{ matrix.group }} JULIA_DI_PR_DRAFT: ${{ github.event.pull_request.draft }} steps: @@ -79,7 +58,6 @@ jobs: - name: Install dependencies & run tests run: julia --color=yes -e ' using Pkg; - Pkg.Registry.update(); Pkg.activate("./DifferentiationInterface/test"); if VERSION < v"1.11"; Pkg.rm("DifferentiationInterfaceTest"); @@ -104,6 +82,81 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: false + test-DI-Backend: + name: ${{ matrix.version }} - DI Back (${{ matrix.group }}) + runs-on: ubuntu-latest + if: ${{ !contains(github.event.pull_request.labels.*.name, 'skipci') }} + timeout-minutes: 120 + permissions: # needed to allow julia-actions/cache to proactively delete old caches that it has created + actions: write + contents: read + strategy: + fail-fast: false # TODO: toggle + matrix: + version: + - '1.10' + - '1.11' + - '1.12' + group: + - ChainRules + - DifferentiateWith + # - Diffractor + - Enzyme + - FastDifferentiation + - FiniteDiff + - FiniteDifferences + - ForwardDiff + - GTPSA + - Mooncake + - PolyesterForwardDiff + - ReverseDiff + - SparsityDetector + - Symbolics + - Tracker + - Zygote + skip_lts: + - ${{ github.event.pull_request.draft }} + skip_pre: + - ${{ github.event.pull_request.draft }} + exclude: + - skip_lts: true + version: '1.10' + - skip_pre: true + version: '1.12' + - version: '1.11' + group: ChainRules + - version: '1.12' + group: Enzyme + - version: '1.12' + group: DifferentiateWith + env: + JULIA_DI_TEST_TYPE: 'Back' + JULIA_DI_TEST_GROUP: ${{ matrix.group }} + JULIA_DI_PR_DRAFT: ${{ github.event.pull_request.draft }} + steps: + - uses: actions/checkout@v5 + - uses: julia-actions/setup-julia@v2 + with: + version: ${{ matrix.version }} + arch: x64 + - uses: julia-actions/cache@v2 + - name: Install dependencies & run tests + run: julia --code-coverage=user --color=yes -e ' + using Pkg; + group = ENV["JULIA_DI_TEST_GROUP"]; + Pkg.activate("./DifferentiationInterface/test/Back/$group"); + Pkg.develop([PackageSpec(path="./DifferentiationInterface"), PackageSpec(path="./DifferentiationInterfaceTest")]); + include("./DifferentiationInterface/test/Back/run_backend.jl");' + - uses: julia-actions/julia-processcoverage@v1 + with: + directories: ./DifferentiationInterface/src,./DifferentiationInterface/ext,./DifferentiationInterface/test + - uses: codecov/codecov-action@v5 + with: + files: lcov.info + flags: DI + token: ${{ secrets.CODECOV_TOKEN }} + fail_ci_if_error: false + test-DIT: name: ${{ matrix.version }} - DIT (${{ matrix.group }}) runs-on: ubuntu-latest diff --git a/DifferentiationInterface/test/Back/ChainRules/Project.toml b/DifferentiationInterface/test/Back/ChainRules/Project.toml new file mode 100644 index 000000000..8cb909466 --- /dev/null +++ b/DifferentiationInterface/test/Back/ChainRules/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" diff --git a/DifferentiationInterface/test/Back/ChainRules/zygote.jl b/DifferentiationInterface/test/Back/ChainRules/test.jl similarity index 85% rename from DifferentiationInterface/test/Back/ChainRules/zygote.jl rename to DifferentiationInterface/test/Back/ChainRules/test.jl index 9722220f4..b484a15cb 100644 --- a/DifferentiationInterface/test/Back/ChainRules/zygote.jl +++ b/DifferentiationInterface/test/Back/ChainRules/test.jl @@ -1,7 +1,5 @@ -using Pkg -Pkg.add(["ChainRulesCore", "Zygote"]) +include("../../testutils.jl") -using ChainRulesCore using DifferentiationInterface, DifferentiationInterfaceTest using Test using Zygote: ZygoteRuleConfig @@ -9,8 +7,6 @@ using Zygote: ZygoteRuleConfig using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoChainRules(ZygoteRuleConfig())] @test check_available(backend) @test !check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/DifferentiateWith/Project.toml b/DifferentiationInterface/test/Back/DifferentiateWith/Project.toml new file mode 100644 index 000000000..8fc6a2707 --- /dev/null +++ b/DifferentiationInterface/test/Back/DifferentiateWith/Project.toml @@ -0,0 +1,14 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ChainRulesTestUtils = "cdddcdb0-9152-4a09-a978-84456f9df70a" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" diff --git a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl index 04d9f5b99..860d5e85f 100644 --- a/DifferentiationInterface/test/Back/DifferentiateWith/test.jl +++ b/DifferentiationInterface/test/Back/DifferentiateWith/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add(["ChainRulesTestUtils", "FiniteDiff", "ForwardDiff", "Zygote", "Mooncake"]) +include("../../testutils.jl") using ChainRulesTestUtils: ChainRulesTestUtils using DifferentiationInterface, DifferentiationInterfaceTest @@ -11,8 +10,6 @@ using Mooncake: Mooncake using StableRNGs using Test -LOGGING = get(ENV, "CI", "false") == "false" - struct ADBreaker{F} f::F end diff --git a/DifferentiationInterface/test/Back/Diffractor/test.jl b/DifferentiationInterface/test/Back/Diffractor/test.jl deleted file mode 100644 index 57be809ea..000000000 --- a/DifferentiationInterface/test/Back/Diffractor/test.jl +++ /dev/null @@ -1,23 +0,0 @@ -using Pkg -Pkg.add("Diffractor") - -using DifferentiationInterface, DifferentiationInterfaceTest -using Diffractor: Diffractor -using Test - -using ExplicitImports -check_no_implicit_imports(DifferentiationInterface) - -LOGGING = get(ENV, "CI", "false") == "false" - -for backend in [AutoDiffractor()] - @test check_available(backend) - @test !check_inplace(backend) -end - -test_differentiation( - AutoDiffractor(), - default_scenarios(; linalg = false); - excluded = SECOND_ORDER, - logging = LOGGING, -); diff --git a/DifferentiationInterface/test/Back/Enzyme/Project.toml b/DifferentiationInterface/test/Back/Enzyme/Project.toml new file mode 100644 index 000000000..ee903053a --- /dev/null +++ b/DifferentiationInterface/test/Back/Enzyme/Project.toml @@ -0,0 +1,11 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/Enzyme/test.jl b/DifferentiationInterface/test/Back/Enzyme/test.jl index 892ac6c78..f80fc63c3 100644 --- a/DifferentiationInterface/test/Back/Enzyme/test.jl +++ b/DifferentiationInterface/test/Back/Enzyme/test.jl @@ -1,7 +1,4 @@ -# see https://github.com/JuliaDiff/DifferentiationInterface.jl/issues/855 - -using Pkg -Pkg.add("Enzyme") +include("../../testutils.jl") using ADTypes: ADTypes using DifferentiationInterface, DifferentiationInterfaceTest @@ -14,8 +11,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - backends = [ AutoEnzyme(; mode = nothing), AutoEnzyme(; mode = Enzyme.Forward), diff --git a/DifferentiationInterface/test/Back/FastDifferentiation/Project.toml b/DifferentiationInterface/test/Back/FastDifferentiation/Project.toml new file mode 100644 index 000000000..b7160b43f --- /dev/null +++ b/DifferentiationInterface/test/Back/FastDifferentiation/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/FastDifferentiation/fastdifferentiation.jl b/DifferentiationInterface/test/Back/FastDifferentiation/test.jl similarity index 93% rename from DifferentiationInterface/test/Back/FastDifferentiation/fastdifferentiation.jl rename to DifferentiationInterface/test/Back/FastDifferentiation/test.jl index 86d903faa..e42dc5132 100644 --- a/DifferentiationInterface/test/Back/FastDifferentiation/fastdifferentiation.jl +++ b/DifferentiationInterface/test/Back/FastDifferentiation/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("FastDifferentiation") +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using SparseMatrixColorings @@ -10,8 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoFastDifferentiation(), AutoSparse(AutoFastDifferentiation())] @test check_available(backend) @test check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/FiniteDiff/Project.toml b/DifferentiationInterface/test/Back/FiniteDiff/Project.toml new file mode 100644 index 000000000..e8c5eb3bc --- /dev/null +++ b/DifferentiationInterface/test/Back/FiniteDiff/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl b/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl index 96a0cb61e..cc24f47dc 100644 --- a/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl +++ b/DifferentiationInterface/test/Back/FiniteDiff/benchmark.jl @@ -1,5 +1,4 @@ using Pkg -Pkg.add("FiniteDiff") using ADTypes: ADTypes using DifferentiationInterface, DifferentiationInterfaceTest @@ -8,8 +7,6 @@ import DifferentiationInterfaceTest as DIT using FiniteDiff: FiniteDiff using Test -LOGGING = get(ENV, "CI", "false") == "false" - @testset "Benchmarking sparse" begin filtered_sparse_scenarios = filter(sparse_scenarios(; band_sizes = [])) do scen DIT.function_place(scen) == :in && diff --git a/DifferentiationInterface/test/Back/FiniteDiff/test.jl b/DifferentiationInterface/test/Back/FiniteDiff/test.jl index a7f5ad42f..d2a63f03e 100644 --- a/DifferentiationInterface/test/Back/FiniteDiff/test.jl +++ b/DifferentiationInterface/test/Back/FiniteDiff/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("FiniteDiff") +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using DifferentiationInterface: DenseSparsityDetector @@ -10,8 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoFiniteDiff()] @test check_available(backend) @test check_inplace(backend) @@ -114,3 +111,5 @@ end; @test prep.relstep_g == 0.1 @test prep.relstep_h == 0.1 end + +include("benchmark.jl") diff --git a/DifferentiationInterface/test/Back/FiniteDifferences/Project.toml b/DifferentiationInterface/test/Back/FiniteDifferences/Project.toml new file mode 100644 index 000000000..7082f1ff7 --- /dev/null +++ b/DifferentiationInterface/test/Back/FiniteDifferences/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/FiniteDifferences/test.jl b/DifferentiationInterface/test/Back/FiniteDifferences/test.jl index 7157a043c..ba585dc0c 100644 --- a/DifferentiationInterface/test/Back/FiniteDifferences/test.jl +++ b/DifferentiationInterface/test/Back/FiniteDifferences/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("FiniteDifferences") +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using FiniteDifferences: FiniteDifferences @@ -8,8 +7,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoFiniteDifferences(; fdm = FiniteDifferences.central_fdm(3, 1))] @test check_available(backend) @test !check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/ForwardDiff/Project.toml b/DifferentiationInterface/test/Back/ForwardDiff/Project.toml new file mode 100644 index 000000000..c780a32bc --- /dev/null +++ b/DifferentiationInterface/test/Back/ForwardDiff/Project.toml @@ -0,0 +1,12 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl b/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl index 256c8aaa2..a4a0b25f0 100644 --- a/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl +++ b/DifferentiationInterface/test/Back/ForwardDiff/benchmark.jl @@ -1,5 +1,4 @@ using Pkg -Pkg.add("ForwardDiff") using ADTypes: ADTypes using DifferentiationInterface, DifferentiationInterfaceTest @@ -9,8 +8,6 @@ using ForwardDiff: ForwardDiff using StaticArrays: StaticArrays, @SVector using Test -LOGGING = get(ENV, "CI", "false") == "false" - @testset verbose = true "Benchmarking static" begin filtered_static_scenarios = filter(static_scenarios(; include_batchified = false)) do scen DIT.function_place(scen) == :out && DIT.operator_place(scen) == :out diff --git a/DifferentiationInterface/test/Back/ForwardDiff/test.jl b/DifferentiationInterface/test/Back/ForwardDiff/test.jl index ef501aec1..df6050045 100644 --- a/DifferentiationInterface/test/Back/ForwardDiff/test.jl +++ b/DifferentiationInterface/test/Back/ForwardDiff/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("ForwardDiff") +include("../../testutils.jl") using ADTypes: ADTypes using ComponentArrays: ComponentArrays @@ -14,8 +13,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - struct MyTag end backends = [ @@ -124,3 +121,5 @@ end prepare_jacobian(copyto!, similar(x), sparse_backend, x) ) == Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(copyto!), Float64}, Float64, 1}} end; + +include("benchmark.jl") diff --git a/DifferentiationInterface/test/Back/GTPSA/Project.toml b/DifferentiationInterface/test/Back/GTPSA/Project.toml new file mode 100644 index 000000000..432414730 --- /dev/null +++ b/DifferentiationInterface/test/Back/GTPSA/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/GTPSA/test.jl b/DifferentiationInterface/test/Back/GTPSA/test.jl index 63d7e7ea5..6bdbcacbb 100644 --- a/DifferentiationInterface/test/Back/GTPSA/test.jl +++ b/DifferentiationInterface/test/Back/GTPSA/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("GTPSA") +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using GTPSA: GTPSA @@ -8,8 +7,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoGTPSA()] @test check_available(backend) @test check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/Mooncake/Project.toml b/DifferentiationInterface/test/Back/Mooncake/Project.toml new file mode 100644 index 000000000..39a878d7e --- /dev/null +++ b/DifferentiationInterface/test/Back/Mooncake/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/Mooncake/test.jl b/DifferentiationInterface/test/Back/Mooncake/test.jl index 3b61e3547..0f0aff4a9 100644 --- a/DifferentiationInterface/test/Back/Mooncake/test.jl +++ b/DifferentiationInterface/test/Back/Mooncake/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("Mooncake") +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using Mooncake: Mooncake @@ -8,7 +7,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" backends = [ AutoMooncake(; config = nothing), diff --git a/DifferentiationInterface/test/Back/PolyesterForwardDiff/Project.toml b/DifferentiationInterface/test/Back/PolyesterForwardDiff/Project.toml new file mode 100644 index 000000000..e487cb5f4 --- /dev/null +++ b/DifferentiationInterface/test/Back/PolyesterForwardDiff/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl b/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl index e1482731f..8ee877b98 100644 --- a/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl +++ b/DifferentiationInterface/test/Back/PolyesterForwardDiff/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add(["ForwardDiff", "PolyesterForwardDiff"]) +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest import DifferentiationInterface as DI @@ -10,8 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - struct MyTag end backends = [ diff --git a/DifferentiationInterface/test/Back/ReverseDiff/Project.toml b/DifferentiationInterface/test/Back/ReverseDiff/Project.toml new file mode 100644 index 000000000..a8190995d --- /dev/null +++ b/DifferentiationInterface/test/Back/ReverseDiff/Project.toml @@ -0,0 +1,11 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/ReverseDiff/test.jl b/DifferentiationInterface/test/Back/ReverseDiff/test.jl index 2043c60f2..2450b9bbf 100644 --- a/DifferentiationInterface/test/Back/ReverseDiff/test.jl +++ b/DifferentiationInterface/test/Back/ReverseDiff/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add(["ForwardDiff", "ReverseDiff"]) # ForwardDiff already in ReverseDiff's deps +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest import DifferentiationInterface as DI @@ -11,8 +10,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - backends = [AutoReverseDiff(; compile = false), AutoReverseDiff(; compile = true)] second_order_backends = [SecondOrder(AutoForwardDiff(), AutoReverseDiff())] diff --git a/DifferentiationInterface/test/Back/SparsityDetector/Project.toml b/DifferentiationInterface/test/Back/SparsityDetector/Project.toml new file mode 100644 index 000000000..ba2e0acc3 --- /dev/null +++ b/DifferentiationInterface/test/Back/SparsityDetector/Project.toml @@ -0,0 +1,13 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/SparsityDetector/test.jl b/DifferentiationInterface/test/Back/SparsityDetector/test.jl index f1de5c11b..cb77d0b44 100644 --- a/DifferentiationInterface/test/Back/SparsityDetector/test.jl +++ b/DifferentiationInterface/test/Back/SparsityDetector/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add(["ForwardDiff", "ReverseDiff"]) +include("../../testutils.jl") using ADTypes: jacobian_sparsity, hessian_sparsity using DifferentiationInterface diff --git a/DifferentiationInterface/test/Back/Symbolics/Project.toml b/DifferentiationInterface/test/Back/Symbolics/Project.toml new file mode 100644 index 000000000..2729711e1 --- /dev/null +++ b/DifferentiationInterface/test/Back/Symbolics/Project.toml @@ -0,0 +1,10 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/DifferentiationInterface/test/Back/Symbolics/symbolics.jl b/DifferentiationInterface/test/Back/Symbolics/test.jl similarity index 94% rename from DifferentiationInterface/test/Back/Symbolics/symbolics.jl rename to DifferentiationInterface/test/Back/Symbolics/test.jl index 5fe04d8c9..076d113e8 100644 --- a/DifferentiationInterface/test/Back/Symbolics/symbolics.jl +++ b/DifferentiationInterface/test/Back/Symbolics/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("Symbolics") +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using SparseMatrixColorings @@ -10,8 +9,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoSymbolics(), AutoSparse(AutoSymbolics())] @test check_available(backend) @test check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/Tracker/Project.toml b/DifferentiationInterface/test/Back/Tracker/Project.toml new file mode 100644 index 000000000..370fa405a --- /dev/null +++ b/DifferentiationInterface/test/Back/Tracker/Project.toml @@ -0,0 +1,9 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" diff --git a/DifferentiationInterface/test/Back/Tracker/test.jl b/DifferentiationInterface/test/Back/Tracker/test.jl index fe54c6aaf..a6fcfb671 100644 --- a/DifferentiationInterface/test/Back/Tracker/test.jl +++ b/DifferentiationInterface/test/Back/Tracker/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add("Tracker") +include("../../testutils.jl") using DifferentiationInterface, DifferentiationInterfaceTest using Tracker: Tracker @@ -8,8 +7,6 @@ using Test using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - for backend in [AutoTracker()] @test check_available(backend) @test !check_inplace(backend) diff --git a/DifferentiationInterface/test/Back/Zygote/Project.toml b/DifferentiationInterface/test/Back/Zygote/Project.toml new file mode 100644 index 000000000..d254f7d5f --- /dev/null +++ b/DifferentiationInterface/test/Back/Zygote/Project.toml @@ -0,0 +1,13 @@ +[deps] +ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +ComponentArrays = "b0b7db55-cfe3-40fc-9ded-d10e2dbeff66" +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +DifferentiationInterfaceTest = "a82114a7-5aa3-49a8-9643-716bb13727a3" +ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" +SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" diff --git a/DifferentiationInterface/test/Back/Zygote/test.jl b/DifferentiationInterface/test/Back/Zygote/test.jl index f9dc8c78f..ceeeedbc5 100644 --- a/DifferentiationInterface/test/Back/Zygote/test.jl +++ b/DifferentiationInterface/test/Back/Zygote/test.jl @@ -1,5 +1,4 @@ -using Pkg -Pkg.add(["ForwardDiff", "Zygote"]) +include("../../testutils.jl") using ComponentArrays: ComponentArrays using DifferentiationInterface, DifferentiationInterfaceTest @@ -12,8 +11,6 @@ using Zygote: Zygote using ExplicitImports check_no_implicit_imports(DifferentiationInterface) -LOGGING = get(ENV, "CI", "false") == "false" - backends = [AutoZygote()] second_order_backends = [SecondOrder(AutoForwardDiff(), AutoZygote())] diff --git a/DifferentiationInterface/test/Back/run_backend.jl b/DifferentiationInterface/test/Back/run_backend.jl new file mode 100644 index 000000000..637feb4c4 --- /dev/null +++ b/DifferentiationInterface/test/Back/run_backend.jl @@ -0,0 +1,5 @@ +using Test +group = ENV["JULIA_DI_TEST_GROUP"] +@testset "$group" begin + include(joinpath(@__DIR__, group, "test.jl")) +end diff --git a/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl b/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl index 1bd40bfa6..fe739284e 100644 --- a/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl +++ b/DifferentiationInterface/test/Core/SimpleFiniteDiff/test.jl @@ -8,8 +8,6 @@ using SparseMatrixColorings using JLArrays, StaticArrays using Test -LOGGING = get(ENV, "CI", "false") == "false" - backends = [ # AutoSimpleFiniteDiff(; chunksize = 5), AutoForwardFromPrimitive(AutoSimpleFiniteDiff(; chunksize = 4)), diff --git a/DifferentiationInterface/test/Core/ZeroBackends/test.jl b/DifferentiationInterface/test/Core/ZeroBackends/test.jl index 6b84e56a4..24aeb0d2c 100644 --- a/DifferentiationInterface/test/Core/ZeroBackends/test.jl +++ b/DifferentiationInterface/test/Core/ZeroBackends/test.jl @@ -8,7 +8,6 @@ using SparseMatrixColorings using StaticArrays: StaticArrays using Test -LOGGING = get(ENV, "CI", "false") == "false" zero_backends = [AutoZeroForward(), AutoZeroReverse()] diff --git a/DifferentiationInterface/test/runtests.jl b/DifferentiationInterface/test/runtests.jl index 66159c3d9..cd01c7f36 100644 --- a/DifferentiationInterface/test/runtests.jl +++ b/DifferentiationInterface/test/runtests.jl @@ -1,47 +1,25 @@ using DifferentiationInterface -using Pkg using Test -@static if VERSION < v"1.11" - DIT_PATH = joinpath(@__DIR__, "..", "..", "DifferentiationInterfaceTest") - if isdir(DIT_PATH) - Pkg.develop(; path = DIT_PATH) - else - Pkg.add("DifferentiationInterfaceTest") - end -end - include("testutils.jl") ## Main tests -@time @testset verbose = true "DifferentiationInterface.jl" begin - if haskey(ENV, "JULIA_DI_TEST_GROUP") - category, folder = split(ENV["JULIA_DI_TEST_GROUP"], '/') - @testset verbose = true "$category" begin - @testset verbose = true "$folder" begin - @testset verbose = true "$file" for file in readdir( - joinpath(@__DIR__, category, folder) - ) - endswith(file, ".jl") || continue - @info "Testing $category/$folder/$file" - include(joinpath(@__DIR__, category, folder, file)) - yield() - end - end - end - else - category = "Core" - @testset verbose = true for folder in readdir(joinpath(@__DIR__, category)) - isdir(joinpath(@__DIR__, category, folder)) || continue - @testset verbose = true "$file" for file in readdir( - joinpath(@__DIR__, category, folder) - ) - endswith(file, ".jl") || continue - @info "Testing $category/$folder/$file" - include(joinpath(@__DIR__, category, folder, file)) - yield() - end +if haskey(ENV, "JULIA_DI_TEST_GROUP") + folders = [ENV["JULIA_DI_TEST_GROUP"]] +else + folders = ["Internals", "SimpleFiniteDiff", "ZeroBackends"] +end + +@time @testset verbose = true "DifferentiationInterface.jl (Core)" begin + @testset verbose = true "$folder" for folder in folders + @testset verbose = true "$file" for file in readdir( + joinpath(@__DIR__, "Core", folder) + ) + endswith(file, ".jl") || continue + @info "Testing $folder/$file" + include(joinpath(@__DIR__, "Core", folder, file)) + yield() end end end; diff --git a/DifferentiationInterface/test/testutils.jl b/DifferentiationInterface/test/testutils.jl index 5bb8bd3a8..7329f4abf 100644 --- a/DifferentiationInterface/test/testutils.jl +++ b/DifferentiationInterface/test/testutils.jl @@ -1,7 +1,19 @@ +using Pkg + +@static if VERSION < v"1.11" + DIT_PATH = joinpath(@__DIR__, "..", "..", "DifferentiationInterfaceTest") + if isdir(DIT_PATH) + Pkg.develop(; path = DIT_PATH) + else + Pkg.add("DifferentiationInterfaceTest") + end +end + using ADTypes using DifferentiationInterfaceTest using SparseConnectivityTracer using SparseMatrixColorings +using Test using DifferentiationInterfaceTest: default_scenarios, @@ -22,3 +34,5 @@ function MyAutoSparse(backend::AbstractADType) end safetypestab(symb) = VERSION < v"1.12-" ? symb : :none # TODO: remove + +LOGGING = get(ENV, "CI", "false") == "false" diff --git a/DifferentiationInterfaceTest/test/runtests.jl b/DifferentiationInterfaceTest/test/runtests.jl index ee96ca118..4691fee52 100644 --- a/DifferentiationInterfaceTest/test/runtests.jl +++ b/DifferentiationInterfaceTest/test/runtests.jl @@ -19,6 +19,8 @@ GROUP = get(ENV, "JULIA_DIT_TEST_GROUP", "All") safetypestab(symb) = VERSION < v"1.12-" ? symb : :none # TODO: remove +LOGGING = get(ENV, "CI", "false") == "false" + ## Main tests @time @testset verbose = true "DifferentiationInterfaceTest.jl" begin diff --git a/DifferentiationInterfaceTest/test/standard.jl b/DifferentiationInterfaceTest/test/standard.jl index a3240e42e..1d26a0c75 100644 --- a/DifferentiationInterfaceTest/test/standard.jl +++ b/DifferentiationInterfaceTest/test/standard.jl @@ -7,8 +7,6 @@ using SparseConnectivityTracer using SparseMatrixColorings using Random -LOGGING = get(ENV, "CI", "false") == "false" - ## Dense test_differentiation( diff --git a/DifferentiationInterfaceTest/test/weird.jl b/DifferentiationInterfaceTest/test/weird.jl index f56831690..6f76c2dc0 100644 --- a/DifferentiationInterfaceTest/test/weird.jl +++ b/DifferentiationInterfaceTest/test/weird.jl @@ -13,8 +13,6 @@ using SparseMatrixColorings using StaticArrays: StaticArrays using Zygote: Zygote -LOGGING = get(ENV, "CI", "false") == "false" - ## Generate all scenarios gpu_scenarios(; diff --git a/DifferentiationInterfaceTest/test/zero_backends.jl b/DifferentiationInterfaceTest/test/zero_backends.jl index 8796d524f..b4a0f1bd1 100644 --- a/DifferentiationInterfaceTest/test/zero_backends.jl +++ b/DifferentiationInterfaceTest/test/zero_backends.jl @@ -5,8 +5,6 @@ using DifferentiationInterfaceTest using DifferentiationInterfaceTest: allocfree_scenarios, no_matrices using Test -LOGGING = get(ENV, "CI", "false") == "false" - ## Type stability test_differentiation(