Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch backends to ADTypes.jl #28

Merged
merged 9 commits into from
Mar 11, 2024
Merged

Switch backends to ADTypes.jl #28

merged 9 commits into from
Mar 11, 2024

Conversation

gdalle
Copy link
Owner

@gdalle gdalle commented Mar 8, 2024

Main idea

Replace our backends with the ones from ADTypes.jl to become compatible with the SciML ecosystem.
ADTypes.jl is used by Lux.jl, Optimization.jl, NonLinearSolve.jl, OrdinaryDiffEq.jl and Turing.jl, among others.

This reduces the number of LOCs in our package, and only moderately complexifies the custom/fallback mechanism.

Core

  • Add dependency on ADTypes.jl and use their structs to specify backends
  • Remove all our backend code, except for the ChainRules one (which ADTypes.jl doesn't have until Add AutoChainRules(ruleconfig) SciML/ADTypes.jl#21), renamed to AutoChainRules
  • Implement trait-based dispatch for forward and reverse mode with autodiff_mode(backend), because some backends from ADTypes.jl can do both (mostly AutoEnzyme)
  • Replace the custom type parameter with another trait-based dispatch:
    • gradient(backend, f, x) will call the version using custom package functions
    • gradient(Val(:fallback), backend, f, x) will call our fallbacks

Note: the Val-based traits can be replaced with custom structs if we want

Tests

  • Make sure that custom and fallback versions are still tested

Docs

  • Remove the now useless backends page

Benchmarks

  • Make sure that custom and fallback versions are still benchmarked
  • Add pretty printing

@gdalle gdalle linked an issue Mar 8, 2024 that may be closed by this pull request
@gdalle gdalle requested a review from adrhill March 8, 2024 16:46
Copy link
Contributor

github-actions bot commented Mar 8, 2024

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmarks:
    • Target: 8 Mar 2024 - 16:49
    • Baseline: 8 Mar 2024 - 16:53
  • Package commits:
    • Target: 9b5759
    • Baseline: 83d370
  • Julia commits:
    • Target: bd47ec
    • Baseline: bd47ec
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

Julia versioninfo

Target

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       2721 s          0 s        167 s       6232 s          0 s
       #2  3243 MHz       3162 s          0 s        156 s       5796 s          0 s
       #3  2594 MHz       2257 s          0 s        173 s       6683 s          0 s
       #4  2445 MHz       2717 s          0 s        150 s       6249 s          0 s
  Memory: 15.606491088867188 GB (13986.62109375 MB free)
  Uptime: 915.99 sec
  Load Avg:  1.11  1.18  0.91
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       3017 s          0 s        182 s       8360 s          0 s
       #2  3243 MHz       3347 s          0 s        185 s       8022 s          0 s
       #3  2445 MHz       3309 s          0 s        190 s       8056 s          0 s
       #4  2612 MHz       3619 s          0 s        169 s       7772 s          0 s
  Memory: 15.606491088867188 GB (14014.4375 MB free)
  Uptime: 1160.53 sec
  Load Avg:  1.03  1.11  0.95
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 8 Mar 2024 - 16:49
  • Package commit: 9b5759
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "Enzyme (forward) - fallback"] 26.552 ns (5%)
["derivative", (1, 1), "Enzyme (forward)"] 26.854 ns (5%)
["derivative", (1, 1), "Enzyme (reverse) - fallback"] 29.019 ns (5%)
["derivative", (1, 1), "Enzyme (reverse)"] 29.019 ns (5%)
["derivative", (1, 1), "FiniteDiff - fallback"] 38.185 ns (5%)
["derivative", (1, 1), "FiniteDiff"] 37.944 ns (5%)
["derivative", (1, 1), "ForwardDiff - fallback"] 11.322 ns (5%)
["derivative", (1, 1), "ForwardDiff"] 11.422 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff - fallback"] 11.332 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff"] 11.432 ns (5%)
["derivative", (1, 1), "Zygote - fallback"] 3.589 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "Zygote"] 3.603 μs (5%) 1.16 KiB (1%) 41
["gradient!", (10, 1), "Enzyme (forward) - fallback"] 894.465 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (forward)"] 894.065 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (reverse) - fallback"] 117.867 ns (5%)
["gradient!", (10, 1), "Enzyme (reverse)"] 117.966 ns (5%)
["gradient!", (10, 1), "FiniteDiff - fallback"] 1.581 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "FiniteDiff"] 1.581 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiff - fallback"] 833.860 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "ForwardDiff"] 836.806 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 844.313 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiff"] 840.330 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "ReverseDiff - fallback"] 526.763 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "ReverseDiff"] 517.860 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "Zygote - fallback"] 3.926 μs (5%) 1.39 KiB (1%) 38
["gradient!", (10, 1), "Zygote"] 3.935 μs (5%) 1.39 KiB (1%) 38
["gradient", (10, 1), "Enzyme (forward) - fallback"] 923.400 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (forward)"] 924.645 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (reverse) - fallback"] 147.029 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "Enzyme (reverse)"] 146.315 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiff - fallback"] 1.621 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "FiniteDiff"] 1.621 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiff - fallback"] 885.275 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "ForwardDiff"] 887.942 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiff - fallback"] 893.765 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiff"] 872.513 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "ReverseDiff - fallback"] 545.524 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "ReverseDiff"] 552.360 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "Zygote - fallback"] 3.992 μs (5%) 1.53 KiB (1%) 39
["gradient", (10, 1), "Zygote"] 3.976 μs (5%) 1.53 KiB (1%) 39
["jacobian!", (10, 10), "Enzyme (forward) - fallback"] 5.871 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "Enzyme (forward)"] 5.884 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiff - fallback"] 9.939 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "FiniteDiff"] 9.959 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiff - fallback"] 3.716 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "ForwardDiff"] 3.729 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiff - fallback"] 3.820 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiff"] 3.832 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "ReverseDiff - fallback"] 126.046 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "ReverseDiff"] 127.489 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "Zygote - fallback"] 45.916 μs (5%) 29.03 KiB (1%) 462
["jacobian!", (10, 10), "Zygote"] 45.845 μs (5%) 29.03 KiB (1%) 462
["jacobian", (10, 10), "Enzyme (forward) - fallback"] 6.097 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "Enzyme (forward)"] 6.141 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiff - fallback"] 10.229 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "FiniteDiff"] 10.731 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiff - fallback"] 3.985 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "ForwardDiff"] 4.040 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiff - fallback"] 4.070 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiff"] 4.099 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "ReverseDiff - fallback"] 126.647 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "ReverseDiff"] 125.545 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "Zygote - fallback"] 46.477 μs (5%) 30.19 KiB (1%) 465
["jacobian", (10, 10), "Zygote"] 46.377 μs (5%) 30.19 KiB (1%) 465
["multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 357.777 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "Enzyme (forward)"] 355.687 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiff - fallback"] 623.509 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiff"] 622.029 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiff - fallback"] 185.112 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiff"] 185.923 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 176.449 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff"] 176.640 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "Zygote - fallback"] 43.992 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "Zygote"] 43.992 μs (5%) 19.98 KiB (1%) 481
["multiderivative", (1, 10), "Enzyme (forward) - fallback"] 498.723 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "Enzyme (forward)"] 501.092 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiff - fallback"] 767.143 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "FiniteDiff"] 759.636 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiff - fallback"] 342.532 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "ForwardDiff"] 343.098 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 322.054 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff"] 321.858 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "Zygote - fallback"] 44.092 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "Zygote"] 44.262 μs (5%) 20.27 KiB (1%) 483
["pullback!", (1, 1), "Enzyme (reverse)"] 29.643 ns (5%)
["pullback!", (1, 1), "Zygote"] 3.619 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 10), "Zygote"] 4.328 μs (5%) 1.89 KiB (1%) 46
["pullback!", (10, 1), "Enzyme (reverse)"] 90.734 ns (5%)
["pullback!", (10, 1), "ReverseDiff"] 493.897 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "Zygote"] 3.919 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 10), "ReverseDiff"] 12.473 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "Zygote"] 4.567 μs (5%) 2.66 KiB (1%) 42
["pullback", (1, 1), "Enzyme (reverse)"] 30.329 ns (5%)
["pullback", (1, 1), "Zygote"] 3.514 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 10), "Zygote"] 4.195 μs (5%) 1.83 KiB (1%) 43
["pullback", (10, 1), "Enzyme (reverse)"] 116.111 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiff"] 532.875 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "Zygote"] 3.811 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 10), "ReverseDiff"] 12.533 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "Zygote"] 4.355 μs (5%) 2.62 KiB (1%) 41
["pushforward!", (1, 1), "Enzyme (forward)"] 32.708 ns (5%)
["pushforward!", (1, 1), "FiniteDiff"] 38.076 ns (5%)
["pushforward!", (1, 1), "ForwardDiff"] 11.644 ns (5%)
["pushforward!", (1, 1), "PolyesterForwardDiff"] 11.544 ns (5%)
["pushforward!", (1, 10), "Enzyme (forward)"] 367.322 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiff"] 632.861 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiff"] 178.366 ns (5%) 368 bytes (1%) 2
["pushforward!", (1, 10), "PolyesterForwardDiff"] 178.933 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "Enzyme (forward)"] 56.131 ns (5%)
["pushforward!", (10, 1), "FiniteDiff"] 160.601 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiff"] 84.021 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 1), "PolyesterForwardDiff"] 83.131 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "Enzyme (forward)"] 536.344 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiff"] 934.886 ns (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiff"] 617.665 ns (5%) 816 bytes (1%) 4
["pushforward!", (10, 10), "PolyesterForwardDiff"] 359.977 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "Enzyme (forward)"] 32.798 ns (5%)
["pushforward", (1, 1), "FiniteDiff"] 66.385 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiff"] 11.543 ns (5%)
["pushforward", (1, 1), "PolyesterForwardDiff"] 11.543 ns (5%)
["pushforward", (1, 10), "Enzyme (forward)"] 514.591 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiff"] 765.795 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiff"] 333.198 ns (5%) 656 bytes (1%) 4
["pushforward", (1, 10), "PolyesterForwardDiff"] 329.898 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "Enzyme (forward)"] 65.424 ns (5%)
["pushforward", (10, 1), "FiniteDiff"] 178.556 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiff"] 89.535 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 1), "PolyesterForwardDiff"] 88.466 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "Enzyme (forward)"] 775.652 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiff"] 1.160 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiff"] 604.374 ns (5%) 1.22 KiB (1%) 7
["pushforward", (10, 10), "PolyesterForwardDiff"] 592.038 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "Enzyme (forward) - fallback"] 26.562 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (forward)"] 26.864 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse) - fallback"] 29.936 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse)"] 29.633 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff - fallback"] 38.872 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff"] 40.116 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff - fallback"] 11.855 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff"] 20.158 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff - fallback"] 11.945 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff"] 11.944 ns (5%)
["value_and_derivative", (1, 1), "Zygote - fallback"] 3.558 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "Zygote"] 3.570 μs (5%) 1.14 KiB (1%) 40
["value_and_gradient!", (10, 1), "Enzyme (forward) - fallback"] 899.857 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (forward)"] 903.267 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (reverse) - fallback"] 117.999 ns (5%)
["value_and_gradient!", (10, 1), "Enzyme (reverse)"] 105.518 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiff - fallback"] 1.594 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "FiniteDiff"] 540.058 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "ForwardDiff - fallback"] 860.887 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "ForwardDiff"] 635.203 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 849.911 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiff"] 313.096 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "ReverseDiff - fallback"] 522.542 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "ReverseDiff"] 496.546 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "Zygote - fallback"] 4.016 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient!", (10, 1), "Zygote"] 195.520 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "Enzyme (forward) - fallback"] 930.129 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (forward)"] 931.758 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (reverse) - fallback"] 147.921 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "Enzyme (reverse)"] 135.172 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiff - fallback"] 1.633 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "FiniteDiff"] 1.379 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "ForwardDiff - fallback"] 877.610 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "ForwardDiff"] 751.406 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "PolyesterForwardDiff - fallback"] 889.844 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiff"] 886.338 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "ReverseDiff - fallback"] 546.152 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "ReverseDiff"] 524.813 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "Zygote - fallback"] 4.043 μs (5%) 1.58 KiB (1%) 41
["value_and_gradient", (10, 1), "Zygote"] 181.331 ns (5%) 576 bytes (1%) 6
["value_and_jacobian!", (10, 10), "Enzyme (forward) (:fallback)"] 5.908 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "Enzyme (forward)"] 5.888 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiff (:fallback)"] 10.019 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "FiniteDiff"] 6.188 μs (5%) 14.03 KiB (1%) 112
["value_and_jacobian!", (10, 10), "ForwardDiff (:fallback)"] 3.746 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "ForwardDiff"] 1.453 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff (:fallback)"] 3.812 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff"] 1.587 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "ReverseDiff (:fallback)"] 126.838 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "ReverseDiff"] 12.414 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "Zygote (:fallback)"] 45.666 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian!", (10, 10), "Zygote"] 126.556 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian", (10, 10), "Enzyme (forward) (:fallback)"] 6.137 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "Enzyme (forward)"] 3.337 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "FiniteDiff (:fallback)"] 10.179 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "FiniteDiff"] 6.168 μs (5%) 14.05 KiB (1%) 112
["value_and_jacobian", (10, 10), "ForwardDiff (:fallback)"] 3.986 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "ForwardDiff"] 1.578 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "PolyesterForwardDiff (:fallback)"] 4.098 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiff"] 4.085 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "ReverseDiff (:fallback)"] 126.397 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "ReverseDiff"] 12.584 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "Zygote (:fallback)"] 45.626 μs (5%) 30.19 KiB (1%) 465
["value_and_jacobian", (10, 10), "Zygote"] 125.264 μs (5%) 42.05 KiB (1%) 951
["value_and_multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 358.014 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Enzyme (forward)"] 357.777 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiff - fallback"] 619.029 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiff"] 622.891 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiff - fallback"] 186.234 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiff"] 288.084 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 177.372 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff"] 177.452 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Zygote - fallback"] 44.263 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "Zygote"] 44.223 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative", (1, 10), "Enzyme (forward) - fallback"] 500.887 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Enzyme (forward)"] 502.485 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiff - fallback"] 769.596 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "FiniteDiff"] 1.232 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "ForwardDiff - fallback"] 342.518 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "ForwardDiff"] 394.964 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 319.979 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff"] 320.275 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Zygote - fallback"] 44.313 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "Zygote"] 44.072 μs (5%) 20.27 KiB (1%) 483
["value_and_pullback!", (1, 1), "Enzyme (reverse)"] 30.258 ns (5%)
["value_and_pullback!", (1, 1), "Zygote"] 3.575 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 10), "Zygote"] 4.311 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (10, 1), "Enzyme (reverse)"] 95.674 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiff"] 510.649 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "Zygote"] 3.900 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 10), "ReverseDiff"] 12.363 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "Zygote"] 4.450 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (1, 1), "Enzyme (reverse)"] 29.966 ns (5%)
["value_and_pullback", (1, 1), "Zygote"] 3.546 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 10), "Zygote"] 4.281 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (10, 1), "Enzyme (reverse)"] 119.051 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiff"] 525.307 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "Zygote"] 3.892 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 10), "ReverseDiff"] 12.613 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "Zygote"] 4.392 μs (5%) 2.66 KiB (1%) 42
["value_and_pushforward!", (1, 1), "Enzyme (forward)"] 33.022 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiff"] 38.933 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiff"] 11.944 ns (5%)
["value_and_pushforward!", (1, 1), "PolyesterForwardDiff"] 11.965 ns (5%)
["value_and_pushforward!", (1, 10), "Enzyme (forward)"] 369.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiff"] 625.971 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiff"] 179.475 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (1, 10), "PolyesterForwardDiff"] 179.885 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "Enzyme (forward)"] 55.418 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiff"] 162.101 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiff"] 89.273 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 1), "PolyesterForwardDiff"] 95.646 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "Enzyme (forward)"] 544.349 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiff"] 936.176 ns (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiff"] 369.460 ns (5%) 816 bytes (1%) 4
["value_and_pushforward!", (10, 10), "PolyesterForwardDiff"] 361.093 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "Enzyme (forward)"] 32.868 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiff"] 38.772 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiff"] 11.944 ns (5%)
["value_and_pushforward", (1, 1), "PolyesterForwardDiff"] 11.935 ns (5%)
["value_and_pushforward", (1, 10), "Enzyme (forward)"] 517.233 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiff"] 775.595 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiff"] 329.026 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (1, 10), "PolyesterForwardDiff"] 330.837 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "Enzyme (forward)"] 65.455 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiff"] 183.515 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiff"] 92.152 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 1), "PolyesterForwardDiff"] 92.825 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "Enzyme (forward)"] 778.890 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiff"] 1.160 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiff"] 605.236 ns (5%) 1.22 KiB (1%) 7
["value_and_pushforward", (10, 10), "PolyesterForwardDiff"] 590.130 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       2721 s          0 s        167 s       6232 s          0 s
       #2  3243 MHz       3162 s          0 s        156 s       5796 s          0 s
       #3  2594 MHz       2257 s          0 s        173 s       6683 s          0 s
       #4  2445 MHz       2717 s          0 s        150 s       6249 s          0 s
  Memory: 15.606491088867188 GB (13986.62109375 MB free)
  Uptime: 915.99 sec
  Load Avg:  1.11  1.18  0.91
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 8 Mar 2024 - 16:53
  • Package commit: 83d370
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 60.000 ns (5%)
["derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 60.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 60.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{custom}()"] 30.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 30.000 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 40.000 ns (5%)
["derivative", (1, 1), "ZygoteBackend{custom}()"] 3.677 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "ZygoteBackend{fallback}()"] 3.676 μs (5%) 1.16 KiB (1%) 41
["gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 911.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 861.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 130.000 ns (5%)
["gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 210.000 ns (5%)
["gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 570.000 ns (5%) 144 bytes (1%) 1
["gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.592 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 581.000 ns (5%) 1.84 KiB (1%) 4
["gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 801.000 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 290.000 ns (5%) 512 bytes (1%) 2
["gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 561.000 ns (5%) 1.22 KiB (1%) 18
["gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "ZygoteBackend{custom}()"] 230.000 ns (5%) 576 bytes (1%) 6
["gradient!", (10, 1), "ZygoteBackend{fallback}()"] 4.047 μs (5%) 1.39 KiB (1%) 38
["gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 942.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 891.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 170.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 180.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.423 μs (5%) 400 bytes (1%) 6
["gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.623 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiffBackend{custom}()"] 601.000 ns (5%) 1.98 KiB (1%) 5
["gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 832.000 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 330.000 ns (5%) 656 bytes (1%) 3
["gradient", (10, 1), "ReverseDiffBackend{custom}()"] 590.000 ns (5%) 1.36 KiB (1%) 19
["gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 591.000 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "ZygoteBackend{custom}()"] 210.000 ns (5%) 576 bytes (1%) 6
["gradient", (10, 1), "ZygoteBackend{fallback}()"] 4.258 μs (5%) 1.53 KiB (1%) 39
["jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 5.881 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.901 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 9.778 μs (5%) 19.34 KiB (1%) 202
["jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.700 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.332 μs (5%) 4.09 KiB (1%) 8
["jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.878 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.543 μs (5%) 3.67 KiB (1%) 9
["jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.493 μs (5%) 6.95 KiB (1%) 91
["jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 124.503 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "ZygoteBackend{custom}()"] 124.072 μs (5%) 42.03 KiB (1%) 951
["jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 48.681 μs (5%) 29.03 KiB (1%) 462
["jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 20.869 μs (5%) 9.89 KiB (1%) 47
["jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 6.342 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 9.498 μs (5%) 19.33 KiB (1%) 201
["jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.821 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 16.701 μs (5%) 4.97 KiB (1%) 9
["jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 4.137 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 2.274 μs (5%) 4.83 KiB (1%) 12
["jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 173.796 μs (5%) 7.83 KiB (1%) 92
["jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 124.284 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "ZygoteBackend{custom}()"] 154.148 μs (5%) 42.02 KiB (1%) 950
["jacobian", (10, 10), "ZygoteBackend{fallback}()"] 51.666 μs (5%) 30.19 KiB (1%) 465
["multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 401.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 400.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 641.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 661.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 280.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 200.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 190.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 44.894 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 44.433 μs (5%) 19.98 KiB (1%) 481
["multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 561.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.433 μs (5%) 1.12 KiB (1%) 13
["multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 791.000 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 310.000 ns (5%) 512 bytes (1%) 3
["multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 331.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 320.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "ZygoteBackend{custom}()"] 44.964 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 44.634 μs (5%) 20.27 KiB (1%) 483
["pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["pullback!", (1, 1), "ZygoteBackend{fallback}()"] 3.656 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 10), "ZygoteBackend{fallback}()"] 4.428 μs (5%) 1.89 KiB (1%) 46
["pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 120.000 ns (5%)
["pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 561.000 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "ZygoteBackend{fallback}()"] 4.218 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.433 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "ZygoteBackend{fallback}()"] 4.829 μs (5%) 2.66 KiB (1%) 42
["pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["pullback", (1, 1), "ZygoteBackend{fallback}()"] 3.527 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 10), "ZygoteBackend{fallback}()"] 4.288 μs (5%) 1.83 KiB (1%) 43
["pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 150.000 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "ZygoteBackend{fallback}()"] 4.137 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.854 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "ZygoteBackend{fallback}()"] 4.739 μs (5%) 2.62 KiB (1%) 41
["pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 49.000 ns (5%)
["pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 391.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 671.000 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 200.000 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 80.000 ns (5%)
["pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 200.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 110.000 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 581.000 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.072 μs (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 380.000 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 80.000 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 531.000 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 792.000 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 331.000 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 210.000 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 120.000 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 841.000 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.292 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 641.000 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 60.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 60.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 60.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{custom}()"] 40.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 30.000 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 40.000 ns (5%)
["value_and_derivative", (1, 1), "ZygoteBackend{custom}()"] 3.637 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "ZygoteBackend{fallback}()"] 3.627 μs (5%) 1.14 KiB (1%) 40
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 922.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 861.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 140.000 ns (5%)
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 150.000 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 571.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.593 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 571.000 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 811.000 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 300.000 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 551.000 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "ZygoteBackend{custom}()"] 230.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient!", (10, 1), "ZygoteBackend{fallback}()"] 4.288 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 951.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 901.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 170.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 180.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.422 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.623 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "ForwardDiffBackend{custom}()"] 672.000 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 841.000 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 330.000 ns (5%) 656 bytes (1%) 3
["value_and_gradient", (10, 1), "ReverseDiffBackend{custom}()"] 581.000 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 601.000 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "ZygoteBackend{custom}()"] 210.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "ZygoteBackend{fallback}()"] 4.318 μs (5%) 1.58 KiB (1%) 41
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 5.891 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.921 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 9.869 μs (5%) 19.34 KiB (1%) 202
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.300 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.342 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.867 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.533 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.493 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 125.635 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "ZygoteBackend{custom}()"] 121.106 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 45.655 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 3.176 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 6.171 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 9.518 μs (5%) 19.36 KiB (1%) 202
["value_and_jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.670 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 1.483 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 4.107 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.773 μs (5%) 4.83 KiB (1%) 12
["value_and_jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 12.593 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 127.058 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "ZygoteBackend{custom}()"] 124.243 μs (5%) 42.05 KiB (1%) 951
["value_and_jacobian", (10, 10), "ZygoteBackend{fallback}()"] 49.032 μs (5%) 30.19 KiB (1%) 465
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 410.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 410.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 631.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 651.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 280.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 200.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 190.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 44.654 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 44.493 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.393 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 791.000 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 300.000 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 330.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 320.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "ZygoteBackend{custom}()"] 44.493 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 44.814 μs (5%) 20.27 KiB (1%) 483
["value_and_pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["value_and_pullback!", (1, 1), "ZygoteBackend{fallback}()"] 3.647 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 10), "ZygoteBackend{fallback}()"] 4.388 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 130.000 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 561.000 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "ZygoteBackend{fallback}()"] 4.227 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.633 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "ZygoteBackend{fallback}()"] 4.859 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["value_and_pullback", (1, 1), "ZygoteBackend{fallback}()"] 3.567 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 10), "ZygoteBackend{fallback}()"] 4.348 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 160.000 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "ZygoteBackend{fallback}()"] 4.188 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.433 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "ZygoteBackend{fallback}()"] 4.839 μs (5%) 2.66 KiB (1%) 42
["value_and_pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 50.000 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 420.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 661.000 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 200.000 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 89.000 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 200.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 110.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 581.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.072 μs (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 380.000 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 530.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 801.000 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 340.000 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 220.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 121.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 842.000 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.302 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 631.000 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       3017 s          0 s        182 s       8360 s          0 s
       #2  3243 MHz       3347 s          0 s        185 s       8022 s          0 s
       #3  2445 MHz       3309 s          0 s        190 s       8056 s          0 s
       #4  2612 MHz       3619 s          0 s        169 s       7772 s          0 s
  Memory: 15.606491088867188 GB (14014.4375 MB free)
  Uptime: 1160.53 sec
  Load Avg:  1.03  1.11  0.95
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() lbt
Sys.CPU_THREADS 4

lscpu output:

Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             4
On-line CPU(s) list:                0-3
Vendor ID:                          AuthenticAMD
Model name:                         AMD EPYC 7763 64-Core Processor
CPU family:                         25
Model:                              1
Thread(s) per core:                 2
Core(s) per socket:                 2
Socket(s):                          1
Stepping:                           1
BogoMIPS:                           4890.85
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization:                     AMD-V
Hypervisor vendor:                  Microsoft
Virtualization type:                full
L1d cache:                          64 KiB (2 instances)
L1i cache:                          64 KiB (2 instances)
L2 cache:                           1 MiB (2 instances)
L3 cache:                           32 MiB (1 instance)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec rstack overflow: Mitigation; safe RET, no microcode
Vulnerability Spec store bypass:    Vulnerable
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

Copy link
Contributor

github-actions bot commented Mar 8, 2024

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmarks:
    • Target: 8 Mar 2024 - 16:51
    • Baseline: 8 Mar 2024 - 16:54
  • Package commits:
    • Target: a79c82
    • Baseline: 83d370
  • Julia commits:
    • Target: bd47ec
    • Baseline: bd47ec
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

Julia versioninfo

Target

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2597 MHz       2377 s          0 s        142 s       9704 s          0 s
       #2  3242 MHz       2878 s          0 s        144 s       9190 s          0 s
       #3  3241 MHz       2491 s          0 s        163 s       9550 s          0 s
       #4  2445 MHz       2810 s          0 s        164 s       9253 s          0 s
  Memory: 15.606491088867188 GB (13851.5 MB free)
  Uptime: 1226.67 sec
  Load Avg:  1.37  1.22  0.89
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       3105 s          0 s        156 s      11247 s          0 s
       #2  3202 MHz       3666 s          0 s        159 s      10674 s          0 s
       #3  3241 MHz       3029 s          0 s        178 s      11283 s          0 s
       #4  3280 MHz       3037 s          0 s        179 s      11297 s          0 s
  Memory: 15.606491088867188 GB (14074.09765625 MB free)
  Uptime: 1455.72 sec
  Load Avg:  1.03  1.12  0.93
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 8 Mar 2024 - 16:51
  • Package commit: a79c82
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "Enzyme (forward) - fallback"] 30.378 ns (5%)
["derivative", (1, 1), "Enzyme (forward)"] 29.663 ns (5%)
["derivative", (1, 1), "Enzyme (reverse) - fallback"] 32.102 ns (5%)
["derivative", (1, 1), "Enzyme (reverse)"] 38.266 ns (5%)
["derivative", (1, 1), "FiniteDiff - fallback"] 22.421 ns (5%)
["derivative", (1, 1), "FiniteDiff"] 22.300 ns (5%)
["derivative", (1, 1), "ForwardDiff - fallback"] 11.332 ns (5%)
["derivative", (1, 1), "ForwardDiff"] 11.473 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff - fallback"] 11.332 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff"] 11.342 ns (5%)
["derivative", (1, 1), "Zygote - fallback"] 3.742 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "Zygote"] 3.746 μs (5%) 1.16 KiB (1%) 41
["gradient!", (10, 1), "Enzyme (forward) - fallback"] 893.082 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (forward)"] 891.875 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (reverse) - fallback"] 124.016 ns (5%)
["gradient!", (10, 1), "Enzyme (reverse)"] 125.188 ns (5%)
["gradient!", (10, 1), "FiniteDiff - fallback"] 1.380 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "FiniteDiff"] 1.375 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiff - fallback"] 833.806 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "ForwardDiff"] 826.374 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 822.608 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiff"] 819.961 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "ReverseDiff - fallback"] 568.807 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "ReverseDiff"] 565.540 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "Zygote - fallback"] 4.086 μs (5%) 1.39 KiB (1%) 38
["gradient!", (10, 1), "Zygote"] 4.091 μs (5%) 1.39 KiB (1%) 38
["gradient", (10, 1), "Enzyme (forward) - fallback"] 928.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (forward)"] 920.788 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (reverse) - fallback"] 149.230 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "Enzyme (reverse)"] 148.944 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiff - fallback"] 1.391 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "FiniteDiff"] 1.396 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiff - fallback"] 854.296 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "ForwardDiff"] 854.087 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiff - fallback"] 855.854 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiff"] 858.857 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "ReverseDiff - fallback"] 600.343 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "ReverseDiff"] 599.177 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "Zygote - fallback"] 4.126 μs (5%) 1.53 KiB (1%) 39
["gradient", (10, 1), "Zygote"] 4.126 μs (5%) 1.53 KiB (1%) 39
["jacobian!", (10, 10), "Enzyme (forward) - fallback"] 5.995 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "Enzyme (forward)"] 6.017 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiff - fallback"] 9.878 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "FiniteDiff"] 9.879 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiff - fallback"] 3.827 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "ForwardDiff"] 3.864 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiff - fallback"] 3.871 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiff"] 3.855 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "ReverseDiff - fallback"] 122.777 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "ReverseDiff"] 121.937 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "Zygote - fallback"] 56.825 μs (5%) 29.03 KiB (1%) 462
["jacobian!", (10, 10), "Zygote"] 56.565 μs (5%) 29.03 KiB (1%) 462
["jacobian", (10, 10), "Enzyme (forward) - fallback"] 6.242 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "Enzyme (forward)"] 6.208 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiff - fallback"] 10.179 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "FiniteDiff"] 10.098 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiff - fallback"] 4.052 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "ForwardDiff"] 4.083 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiff - fallback"] 4.065 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiff"] 4.068 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "ReverseDiff - fallback"] 122.417 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "ReverseDiff"] 121.886 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "Zygote - fallback"] 56.886 μs (5%) 30.19 KiB (1%) 465
["jacobian", (10, 10), "Zygote"] 56.905 μs (5%) 30.19 KiB (1%) 465
["multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 363.724 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "Enzyme (forward)"] 362.867 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiff - fallback"] 616.661 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiff"] 610.563 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiff - fallback"] 165.511 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiff"] 166.355 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 171.179 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff"] 172.099 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "Zygote - fallback"] 45.835 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "Zygote"] 45.655 μs (5%) 19.98 KiB (1%) 481
["multiderivative", (1, 10), "Enzyme (forward) - fallback"] 497.778 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "Enzyme (forward)"] 497.990 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiff - fallback"] 764.025 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "FiniteDiff"] 762.672 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiff - fallback"] 306.866 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "ForwardDiff"] 307.933 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 319.425 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff"] 318.377 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "Zygote - fallback"] 46.105 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "Zygote"] 46.126 μs (5%) 20.27 KiB (1%) 483
["pullback!", (1, 1), "Enzyme (reverse)"] 33.032 ns (5%)
["pullback!", (1, 1), "Zygote"] 3.734 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 10), "Zygote"] 4.484 μs (5%) 1.89 KiB (1%) 46
["pullback!", (10, 1), "Enzyme (reverse)"] 97.637 ns (5%)
["pullback!", (10, 1), "ReverseDiff"] 534.587 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "Zygote"] 4.093 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 10), "ReverseDiff"] 12.263 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "Zygote"] 5.564 μs (5%) 2.66 KiB (1%) 42
["pullback", (1, 1), "Enzyme (reverse)"] 33.143 ns (5%)
["pullback", (1, 1), "Zygote"] 3.628 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 10), "Zygote"] 4.354 μs (5%) 1.83 KiB (1%) 43
["pullback", (10, 1), "Enzyme (reverse)"] 121.783 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiff"] 569.859 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "Zygote"] 3.965 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 10), "ReverseDiff"] 12.313 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "Zygote"] 5.485 μs (5%) 2.62 KiB (1%) 41
["pushforward!", (1, 1), "Enzyme (forward)"] 32.575 ns (5%)
["pushforward!", (1, 1), "FiniteDiff"] 37.661 ns (5%)
["pushforward!", (1, 1), "ForwardDiff"] 11.543 ns (5%)
["pushforward!", (1, 1), "PolyesterForwardDiff"] 11.683 ns (5%)
["pushforward!", (1, 10), "Enzyme (forward)"] 360.575 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiff"] 598.039 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiff"] 166.785 ns (5%) 368 bytes (1%) 2
["pushforward!", (1, 10), "PolyesterForwardDiff"] 165.549 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "Enzyme (forward)"] 37.660 ns (5%)
["pushforward!", (10, 1), "FiniteDiff"] 160.199 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiff"] 82.353 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 1), "PolyesterForwardDiff"] 82.943 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "Enzyme (forward)"] 545.931 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiff"] 961.333 ns (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiff"] 358.728 ns (5%) 816 bytes (1%) 4
["pushforward!", (10, 10), "PolyesterForwardDiff"] 358.425 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "Enzyme (forward)"] 32.848 ns (5%)
["pushforward", (1, 1), "FiniteDiff"] 66.283 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiff"] 11.533 ns (5%)
["pushforward", (1, 1), "PolyesterForwardDiff"] 11.533 ns (5%)
["pushforward", (1, 10), "Enzyme (forward)"] 492.303 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiff"] 739.519 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiff"] 308.965 ns (5%) 656 bytes (1%) 4
["pushforward", (1, 10), "PolyesterForwardDiff"] 307.851 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "Enzyme (forward)"] 58.919 ns (5%)
["pushforward", (10, 1), "FiniteDiff"] 177.048 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiff"] 89.308 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 1), "PolyesterForwardDiff"] 87.053 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "Enzyme (forward)"] 788.981 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiff"] 1.191 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiff"] 589.625 ns (5%) 1.22 KiB (1%) 7
["pushforward", (10, 10), "PolyesterForwardDiff"] 595.725 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "Enzyme (forward) - fallback"] 30.036 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (forward)"] 30.025 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse) - fallback"] 33.073 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse)"] 32.887 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff - fallback"] 23.005 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff"] 27.851 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff - fallback"] 11.754 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff"] 20.932 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff - fallback"] 11.854 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff"] 11.844 ns (5%)
["value_and_derivative", (1, 1), "Zygote - fallback"] 3.718 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "Zygote"] 3.731 μs (5%) 1.14 KiB (1%) 40
["value_and_gradient!", (10, 1), "Enzyme (forward) - fallback"] 896.167 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (forward)"] 895.561 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (reverse) - fallback"] 124.264 ns (5%)
["value_and_gradient!", (10, 1), "Enzyme (reverse)"] 106.015 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiff - fallback"] 1.381 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "FiniteDiff"] 427.763 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "ForwardDiff - fallback"] 827.178 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "ForwardDiff"] 645.883 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 829.366 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiff"] 280.988 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "ReverseDiff - fallback"] 570.737 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "ReverseDiff"] 542.052 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "Zygote - fallback"] 4.153 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient!", (10, 1), "Zygote"] 180.115 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "Enzyme (forward) - fallback"] 928.966 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (forward)"] 923.857 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (reverse) - fallback"] 150.561 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "Enzyme (reverse)"] 134.987 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiff - fallback"] 1.403 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "FiniteDiff"] 1.405 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "ForwardDiff - fallback"] 853.415 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "ForwardDiff"] 734.613 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "PolyesterForwardDiff - fallback"] 855.587 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiff"] 855.790 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "ReverseDiff - fallback"] 598.833 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "ReverseDiff"] 573.640 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "Zygote - fallback"] 4.197 μs (5%) 1.58 KiB (1%) 41
["value_and_gradient", (10, 1), "Zygote"] 164.644 ns (5%) 576 bytes (1%) 6
["value_and_jacobian!", (10, 10), "Enzyme (forward) (:fallback)"] 5.973 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "Enzyme (forward)"] 5.978 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiff (:fallback)"] 9.829 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "FiniteDiff"] 6.198 μs (5%) 14.03 KiB (1%) 112
["value_and_jacobian!", (10, 10), "ForwardDiff (:fallback)"] 3.811 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "ForwardDiff"] 1.510 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff (:fallback)"] 3.827 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff"] 1.538 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "ReverseDiff (:fallback)"] 123.149 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "ReverseDiff"] 11.912 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "Zygote (:fallback)"] 56.675 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian!", (10, 10), "Zygote"] 140.782 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian", (10, 10), "Enzyme (forward) (:fallback)"] 6.224 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "Enzyme (forward)"] 3.301 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "FiniteDiff (:fallback)"] 10.179 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "FiniteDiff"] 6.191 μs (5%) 14.05 KiB (1%) 112
["value_and_jacobian", (10, 10), "ForwardDiff (:fallback)"] 4.073 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "ForwardDiff"] 1.623 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "PolyesterForwardDiff (:fallback)"] 4.112 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiff"] 4.093 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "ReverseDiff (:fallback)"] 121.756 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "ReverseDiff"] 12.153 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "Zygote (:fallback)"] 56.534 μs (5%) 30.19 KiB (1%) 465
["value_and_jacobian", (10, 10), "Zygote"] 141.412 μs (5%) 42.05 KiB (1%) 951
["value_and_multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 362.005 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Enzyme (forward)"] 362.148 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiff - fallback"] 613.401 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiff"] 608.525 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiff - fallback"] 166.474 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiff"] 258.362 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 173.803 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff"] 173.403 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Zygote - fallback"] 45.815 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "Zygote"] 45.885 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative", (1, 10), "Enzyme (forward) - fallback"] 498.093 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Enzyme (forward)"] 499.948 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiff - fallback"] 771.259 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "FiniteDiff"] 1.390 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "ForwardDiff - fallback"] 309.619 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "ForwardDiff"] 278.470 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 319.084 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff"] 318.293 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Zygote - fallback"] 46.026 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "Zygote"] 46.015 μs (5%) 20.27 KiB (1%) 483
["value_and_pullback!", (1, 1), "Enzyme (reverse)"] 33.032 ns (5%)
["value_and_pullback!", (1, 1), "Zygote"] 3.717 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 10), "Zygote"] 4.478 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (10, 1), "Enzyme (reverse)"] 95.145 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiff"] 546.548 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "Zygote"] 4.066 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 10), "ReverseDiff"] 12.033 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "Zygote"] 5.567 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (1, 1), "Enzyme (reverse)"] 33.334 ns (5%)
["value_and_pullback", (1, 1), "Zygote"] 3.694 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 10), "Zygote"] 4.431 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (10, 1), "Enzyme (reverse)"] 123.422 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiff"] 561.471 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "Zygote"] 4.050 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 10), "ReverseDiff"] 12.123 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "Zygote"] 5.549 μs (5%) 2.66 KiB (1%) 42
["value_and_pushforward!", (1, 1), "Enzyme (forward)"] 33.021 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiff"] 38.317 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiff"] 12.165 ns (5%)
["value_and_pushforward!", (1, 1), "PolyesterForwardDiff"] 12.144 ns (5%)
["value_and_pushforward!", (1, 10), "Enzyme (forward)"] 358.524 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiff"] 602.640 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiff"] 166.686 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (1, 10), "PolyesterForwardDiff"] 166.115 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "Enzyme (forward)"] 38.882 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiff"] 161.220 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiff"] 88.082 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 1), "PolyesterForwardDiff"] 88.006 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "Enzyme (forward)"] 550.487 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiff"] 961.318 ns (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiff"] 359.344 ns (5%) 816 bytes (1%) 4
["value_and_pushforward!", (10, 10), "PolyesterForwardDiff"] 361.755 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "Enzyme (forward)"] 33.133 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiff"] 38.882 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiff"] 12.184 ns (5%)
["value_and_pushforward", (1, 1), "PolyesterForwardDiff"] 12.225 ns (5%)
["value_and_pushforward", (1, 10), "Enzyme (forward)"] 494.559 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiff"] 742.234 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiff"] 310.295 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (1, 10), "PolyesterForwardDiff"] 307.040 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "Enzyme (forward)"] 59.581 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiff"] 180.630 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiff"] 97.697 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 1), "PolyesterForwardDiff"] 91.042 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "Enzyme (forward)"] 794.520 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiff"] 1.181 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiff"] 594.011 ns (5%) 1.22 KiB (1%) 7
["value_and_pushforward", (10, 10), "PolyesterForwardDiff"] 595.995 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2597 MHz       2377 s          0 s        142 s       9704 s          0 s
       #2  3242 MHz       2878 s          0 s        144 s       9190 s          0 s
       #3  3241 MHz       2491 s          0 s        163 s       9550 s          0 s
       #4  2445 MHz       2810 s          0 s        164 s       9253 s          0 s
  Memory: 15.606491088867188 GB (13851.5 MB free)
  Uptime: 1226.67 sec
  Load Avg:  1.37  1.22  0.89
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 8 Mar 2024 - 16:54
  • Package commit: 83d370
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 69.000 ns (5%)
["derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 70.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 69.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{custom}()"] 40.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 40.000 ns (5%)
["derivative", (1, 1), "ZygoteBackend{custom}()"] 3.887 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "ZygoteBackend{fallback}()"] 3.877 μs (5%) 1.16 KiB (1%) 41
["gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 911.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 912.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 130.000 ns (5%)
["gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 210.000 ns (5%)
["gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 571.000 ns (5%) 144 bytes (1%) 1
["gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.592 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 591.000 ns (5%) 1.84 KiB (1%) 4
["gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 801.000 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 290.000 ns (5%) 512 bytes (1%) 2
["gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 611.000 ns (5%) 1.22 KiB (1%) 18
["gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 631.000 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "ZygoteBackend{custom}()"] 220.000 ns (5%) 576 bytes (1%) 6
["gradient!", (10, 1), "ZygoteBackend{fallback}()"] 3.987 μs (5%) 1.39 KiB (1%) 38
["gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 941.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 941.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 170.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 171.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.442 μs (5%) 400 bytes (1%) 6
["gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.623 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiffBackend{custom}()"] 621.000 ns (5%) 1.98 KiB (1%) 5
["gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 831.000 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 320.000 ns (5%) 656 bytes (1%) 3
["gradient", (10, 1), "ReverseDiffBackend{custom}()"] 641.000 ns (5%) 1.36 KiB (1%) 19
["gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 661.000 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "ZygoteBackend{custom}()"] 200.000 ns (5%) 576 bytes (1%) 6
["gradient", (10, 1), "ZygoteBackend{fallback}()"] 4.188 μs (5%) 1.53 KiB (1%) 39
["jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 5.901 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.841 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 9.878 μs (5%) 19.34 KiB (1%) 202
["jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 9.939 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.392 μs (5%) 4.09 KiB (1%) 8
["jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.736 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.542 μs (5%) 3.67 KiB (1%) 9
["jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.343 μs (5%) 6.95 KiB (1%) 91
["jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 121.636 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "ZygoteBackend{custom}()"] 138.657 μs (5%) 42.03 KiB (1%) 951
["jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 57.336 μs (5%) 29.03 KiB (1%) 462
["jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 23.344 μs (5%) 9.89 KiB (1%) 47
["jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 6.151 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 9.778 μs (5%) 19.33 KiB (1%) 201
["jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.259 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 15.990 μs (5%) 4.97 KiB (1%) 9
["jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 3.967 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 2.885 μs (5%) 4.83 KiB (1%) 12
["jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 12.052 μs (5%) 7.83 KiB (1%) 92
["jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 121.806 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "ZygoteBackend{custom}()"] 165.898 μs (5%) 42.02 KiB (1%) 950
["jacobian", (10, 10), "ZygoteBackend{fallback}()"] 56.856 μs (5%) 30.19 KiB (1%) 465
["multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 410.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 410.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 681.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 691.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 310.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 210.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 46.226 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 46.466 μs (5%) 19.98 KiB (1%) 481
["multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 561.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.443 μs (5%) 1.12 KiB (1%) 13
["multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 841.000 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 330.000 ns (5%) 512 bytes (1%) 3
["multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 350.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 360.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "ZygoteBackend{custom}()"] 46.426 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 46.316 μs (5%) 20.27 KiB (1%) 483
["pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 60.000 ns (5%)
["pullback!", (1, 1), "ZygoteBackend{fallback}()"] 3.877 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 10), "ZygoteBackend{fallback}()"] 4.648 μs (5%) 1.89 KiB (1%) 46
["pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 120.000 ns (5%)
["pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 602.000 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "ZygoteBackend{fallback}()"] 4.167 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.223 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "ZygoteBackend{fallback}()"] 5.530 μs (5%) 2.66 KiB (1%) 42
["pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 60.000 ns (5%)
["pullback", (1, 1), "ZygoteBackend{fallback}()"] 3.747 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 10), "ZygoteBackend{fallback}()"] 4.449 μs (5%) 1.83 KiB (1%) 43
["pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 150.000 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 631.000 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "ZygoteBackend{fallback}()"] 4.057 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.213 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "ZygoteBackend{fallback}()"] 5.560 μs (5%) 2.62 KiB (1%) 41
["pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 410.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 711.000 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 90.000 ns (5%)
["pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 200.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 110.000 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 551.000 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.062 μs (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 370.000 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 90.000 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 30.000 ns (5%)
["pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 861.000 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 360.000 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 210.000 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 120.000 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 841.000 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.282 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 631.000 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{custom}()"] 49.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 40.000 ns (5%)
["value_and_derivative", (1, 1), "ZygoteBackend{custom}()"] 3.847 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "ZygoteBackend{fallback}()"] 3.837 μs (5%) 1.14 KiB (1%) 40
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 912.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 912.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 140.000 ns (5%)
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 150.000 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 572.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.593 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 601.000 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 801.000 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 300.000 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 601.000 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 641.000 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "ZygoteBackend{custom}()"] 220.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient!", (10, 1), "ZygoteBackend{fallback}()"] 4.238 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 942.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 952.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 170.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 180.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.462 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.633 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "ForwardDiffBackend{custom}()"] 681.000 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 841.000 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 330.000 ns (5%) 656 bytes (1%) 3
["value_and_gradient", (10, 1), "ReverseDiffBackend{custom}()"] 641.000 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 651.000 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "ZygoteBackend{custom}()"] 210.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "ZygoteBackend{fallback}()"] 4.278 μs (5%) 1.58 KiB (1%) 41
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 5.871 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.801 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 10.039 μs (5%) 19.34 KiB (1%) 202
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 9.898 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.393 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.717 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.533 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.243 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 123.369 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "ZygoteBackend{custom}()"] 137.155 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 55.283 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 3.205 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 6.072 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 9.798 μs (5%) 19.36 KiB (1%) 202
["value_and_jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.149 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 1.513 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 3.997 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.783 μs (5%) 4.83 KiB (1%) 12
["value_and_jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 12.613 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 120.454 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "ZygoteBackend{custom}()"] 138.497 μs (5%) 42.05 KiB (1%) 951
["value_and_jacobian", (10, 10), "ZygoteBackend{fallback}()"] 57.146 μs (5%) 30.19 KiB (1%) 465
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 420.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 420.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 691.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 691.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 311.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 46.155 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 46.285 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.452 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 851.000 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 330.000 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 360.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 370.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "ZygoteBackend{custom}()"] 46.426 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 46.326 μs (5%) 20.27 KiB (1%) 483
["value_and_pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 60.000 ns (5%)
["value_and_pullback!", (1, 1), "ZygoteBackend{fallback}()"] 3.817 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 10), "ZygoteBackend{fallback}()"] 4.568 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 130.000 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 621.000 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "ZygoteBackend{fallback}()"] 4.148 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.172 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "ZygoteBackend{fallback}()"] 5.651 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 60.000 ns (5%)
["value_and_pullback", (1, 1), "ZygoteBackend{fallback}()"] 3.796 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 10), "ZygoteBackend{fallback}()"] 4.528 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 160.000 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 641.000 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "ZygoteBackend{fallback}()"] 4.088 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.233 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "ZygoteBackend{fallback}()"] 5.610 μs (5%) 2.66 KiB (1%) 42
["value_and_pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 30.000 ns (5%)
["value_and_pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 420.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 701.000 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 89.000 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 200.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 110.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.051 μs (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 370.000 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 30.000 ns (5%)
["value_and_pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 871.000 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 360.000 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 210.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 130.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 852.000 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.282 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 641.000 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       3105 s          0 s        156 s      11247 s          0 s
       #2  3202 MHz       3666 s          0 s        159 s      10674 s          0 s
       #3  3241 MHz       3029 s          0 s        178 s      11283 s          0 s
       #4  3280 MHz       3037 s          0 s        179 s      11297 s          0 s
  Memory: 15.606491088867188 GB (14074.09765625 MB free)
  Uptime: 1455.72 sec
  Load Avg:  1.03  1.12  0.93
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() lbt
Sys.CPU_THREADS 4

lscpu output:

Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             4
On-line CPU(s) list:                0-3
Vendor ID:                          AuthenticAMD
Model name:                         AMD EPYC 7763 64-Core Processor
CPU family:                         25
Model:                              1
Thread(s) per core:                 2
Core(s) per socket:                 2
Socket(s):                          1
Stepping:                           1
BogoMIPS:                           4890.87
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization:                     AMD-V
Hypervisor vendor:                  Microsoft
Virtualization type:                full
L1d cache:                          64 KiB (2 instances)
L1i cache:                          64 KiB (2 instances)
L2 cache:                           1 MiB (2 instances)
L3 cache:                           32 MiB (1 instance)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec rstack overflow: Mitigation; safe RET, no microcode
Vulnerability Spec store bypass:    Vulnerable
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

benchmark/Project.toml Outdated Show resolved Hide resolved
src/array_array.jl Outdated Show resolved Hide resolved
@gdalle
Copy link
Owner Author

gdalle commented Mar 10, 2024

New proposal here:

Core

  • The trait Val{:fallback} / Val{:custom} has become FallbackImplem() / CustomImplem() inheriting from AbstractImplem
  • The trait Val{:forward} / Val{:reverse} has become ForwardMode() / ReverseMode() inheriting from AbstractMode
  • Every utility takes implem::AbstractImplem as a first argument.
  • In the extensions, every utility must only be defined for implem::CustomImplem
  • Metaprogramming allows every utility to concisely default on CustomImplem (this happens in the custom.jl file with @eval): no boilerplate 😎
  • The argument implem is passed down everywhere. This means that if it starts as CustomImplem(), it will jump to the custom version every chance it has, and if it starts as FallbackImplem(), it will stick to the fallbacks until it reaches a non-utility function (pushforward or pullback).

Basically this is like putting it in extras but I prefer keeping both mechanisms separate, because this one does not need to be known by most users

Backend-specific

  • Implemented Zygote without ChainRules using just Zygote.pullback
  • Added a Diffractor extension but it is broken for non-scalar input

@codecov-commenter
Copy link

codecov-commenter commented Mar 10, 2024

Codecov Report

Attention: Patch coverage is 94.26230% with 7 lines in your changes are missing coverage. Please review.

Project coverage is 96.17%. Comparing base (83d3701) to head (d611833).

Files Patch % Lines
ext/DifferentiationInterfaceChainRulesCoreExt.jl 55.55% 4 Missing ⚠️
ext/DifferentiationInterfaceDiffractorExt.jl 90.00% 1 Missing ⚠️
src/pullback.jl 85.71% 1 Missing ⚠️
src/pushforward.jl 85.71% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #28      +/-   ##
==========================================
+ Coverage   90.61%   96.17%   +5.56%     
==========================================
  Files          19       21       +2     
  Lines         341      340       -1     
==========================================
+ Hits          309      327      +18     
+ Misses         32       13      -19     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmarks:
    • Target: 10 Mar 2024 - 19:22
    • Baseline: 10 Mar 2024 - 19:26
  • Package commits:
    • Target: 88f347
    • Baseline: 83d370
  • Julia commits:
    • Target: bd47ec
    • Baseline: bd47ec
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

Julia versioninfo

Target

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  3240 MHz       2898 s          0 s        165 s       6579 s          0 s
       #2  3237 MHz       2784 s          0 s        166 s       6681 s          0 s
       #3  2445 MHz       3384 s          0 s        194 s       6070 s          0 s
       #4  2615 MHz       3523 s          0 s        187 s       5944 s          0 s
  Memory: 15.606491088867188 GB (14011.734375 MB free)
  Uptime: 968.73 sec
  Load Avg:  1.0  1.17  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       3356 s          0 s        184 s       8386 s          0 s
       #2  3243 MHz       3016 s          0 s        188 s       8711 s          0 s
       #3  3200 MHz       4506 s          0 s        209 s       7220 s          0 s
       #4  2731 MHz       3993 s          0 s        206 s       7739 s          0 s
  Memory: 15.606491088867188 GB (14036.35546875 MB free)
  Uptime: 1197.73 sec
  Load Avg:  1.0  1.07  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 10 Mar 2024 - 19:22
  • Package commit: 88f347
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "ChainRules (Zygote) - custom"] 3.741 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "ChainRules (Zygote) - fallback"] 3.735 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "Enzyme (forward) - custom"] 29.633 ns (5%)
["derivative", (1, 1), "Enzyme (forward) - fallback"] 29.653 ns (5%)
["derivative", (1, 1), "Enzyme (reverse) - custom"] 26.512 ns (5%)
["derivative", (1, 1), "Enzyme (reverse) - fallback"] 26.250 ns (5%)
["derivative", (1, 1), "FiniteDiff - custom"] 37.189 ns (5%)
["derivative", (1, 1), "FiniteDiff - fallback"] 37.732 ns (5%)
["derivative", (1, 1), "ForwardDiff - custom"] 11.643 ns (5%)
["derivative", (1, 1), "ForwardDiff - fallback"] 11.634 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff - custom"] 6.802 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff - fallback"] 6.802 ns (5%)
["derivative", (1, 1), "Zygote - custom"] 3.677 μs (5%) 1.11 KiB (1%) 40
["derivative", (1, 1), "Zygote - fallback"] 3.776 μs (5%) 1.11 KiB (1%) 40
["gradient!", (10, 1), "ChainRules (Zygote) - custom"] 4.132 μs (5%) 1.39 KiB (1%) 38
["gradient!", (10, 1), "ChainRules (Zygote) - fallback"] 4.136 μs (5%) 1.39 KiB (1%) 38
["gradient!", (10, 1), "Enzyme (forward) - custom"] 813.043 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (forward) - fallback"] 809.355 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (reverse) - custom"] 105.578 ns (5%)
["gradient!", (10, 1), "Enzyme (reverse) - fallback"] 121.396 ns (5%)
["gradient!", (10, 1), "FiniteDiff - custom"] 421.437 ns (5%) 144 bytes (1%) 1
["gradient!", (10, 1), "FiniteDiff - fallback"] 1.374 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiff - custom"] 662.486 ns (5%) 1.84 KiB (1%) 4
["gradient!", (10, 1), "ForwardDiff - fallback"] 858.362 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiff - custom"] 250.605 ns (5%) 512 bytes (1%) 2
["gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 816.312 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "ReverseDiff - custom"] 515.834 ns (5%) 1.22 KiB (1%) 18
["gradient!", (10, 1), "ReverseDiff - fallback"] 533.723 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "Zygote - custom"] 173.807 ns (5%) 576 bytes (1%) 6
["gradient!", (10, 1), "Zygote - fallback"] 4.065 μs (5%) 1.34 KiB (1%) 37
["gradient", (10, 1), "ChainRules (Zygote) - custom"] 4.186 μs (5%) 1.53 KiB (1%) 39
["gradient", (10, 1), "ChainRules (Zygote) - fallback"] 4.175 μs (5%) 1.53 KiB (1%) 39
["gradient", (10, 1), "Enzyme (forward) - custom"] 839.494 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (forward) - fallback"] 836.093 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (reverse) - custom"] 134.307 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "Enzyme (reverse) - fallback"] 154.589 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiff - custom"] 1.238 μs (5%) 400 bytes (1%) 6
["gradient", (10, 1), "FiniteDiff - fallback"] 1.395 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiff - custom"] 650.773 ns (5%) 1.98 KiB (1%) 5
["gradient", (10, 1), "ForwardDiff - fallback"] 875.049 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiff - custom"] 327.856 ns (5%) 656 bytes (1%) 3
["gradient", (10, 1), "PolyesterForwardDiff - fallback"] 829.992 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "ReverseDiff - custom"] 529.740 ns (5%) 1.36 KiB (1%) 19
["gradient", (10, 1), "ReverseDiff - fallback"] 559.016 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "Zygote - custom"] 162.040 ns (5%) 576 bytes (1%) 6
["gradient", (10, 1), "Zygote - fallback"] 4.106 μs (5%) 1.48 KiB (1%) 38
["jacobian!", (10, 10), "ChainRules (Zygote) - custom"] 48.261 μs (5%) 29.03 KiB (1%) 462
["jacobian!", (10, 10), "ChainRules (Zygote) - fallback"] 48.221 μs (5%) 29.03 KiB (1%) 462
["jacobian!", (10, 10), "Enzyme (forward) - custom"] 5.844 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "Enzyme (forward) - fallback"] 5.871 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiff - custom"] 6.250 μs (5%) 14.03 KiB (1%) 112
["jacobian!", (10, 10), "FiniteDiff - fallback"] 10.089 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiff - custom"] 1.425 μs (5%) 4.09 KiB (1%) 8
["jacobian!", (10, 10), "ForwardDiff - fallback"] 3.842 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiff - custom"] 1.573 μs (5%) 3.67 KiB (1%) 9
["jacobian!", (10, 10), "PolyesterForwardDiff - fallback"] 3.838 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "ReverseDiff - custom"] 12.082 μs (5%) 6.95 KiB (1%) 91
["jacobian!", (10, 10), "ReverseDiff - fallback"] 120.736 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "Zygote - custom"] 115.816 μs (5%) 42.03 KiB (1%) 951
["jacobian!", (10, 10), "Zygote - fallback"] 48.049 μs (5%) 28.56 KiB (1%) 452
["jacobian", (10, 10), "ChainRules (Zygote) - custom"] 48.430 μs (5%) 30.19 KiB (1%) 465
["jacobian", (10, 10), "ChainRules (Zygote) - fallback"] 48.160 μs (5%) 30.19 KiB (1%) 465
["jacobian", (10, 10), "Enzyme (forward) - custom"] 3.242 μs (5%) 9.89 KiB (1%) 47
["jacobian", (10, 10), "Enzyme (forward) - fallback"] 6.110 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiff - custom"] 6.246 μs (5%) 14.02 KiB (1%) 111
["jacobian", (10, 10), "FiniteDiff - fallback"] 10.319 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiff - custom"] 1.545 μs (5%) 4.97 KiB (1%) 9
["jacobian", (10, 10), "ForwardDiff - fallback"] 4.138 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiff - custom"] 1.831 μs (5%) 4.83 KiB (1%) 12
["jacobian", (10, 10), "PolyesterForwardDiff - fallback"] 4.113 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "ReverseDiff - custom"] 12.203 μs (5%) 7.83 KiB (1%) 92
["jacobian", (10, 10), "ReverseDiff - fallback"] 123.601 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "Zygote - custom"] 115.596 μs (5%) 42.02 KiB (1%) 950
["jacobian", (10, 10), "Zygote - fallback"] 47.679 μs (5%) 29.72 KiB (1%) 455
["multiderivative!", (1, 10), "ChainRules (Zygote) - custom"] 45.896 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "ChainRules (Zygote) - fallback"] 46.026 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "Enzyme (forward) - custom"] 372.976 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 372.102 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiff - custom"] 643.751 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiff - fallback"] 639.775 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiff - custom"] 278.495 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiff - fallback"] 178.974 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff - custom"] 199.964 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 177.089 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "Zygote - custom"] 45.936 μs (5%) 19.52 KiB (1%) 471
["multiderivative!", (1, 10), "Zygote - fallback"] 45.926 μs (5%) 19.52 KiB (1%) 471
["multiderivative", (1, 10), "ChainRules (Zygote) - custom"] 46.186 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "ChainRules (Zygote) - fallback"] 46.387 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "Enzyme (forward) - custom"] 515.264 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "Enzyme (forward) - fallback"] 514.557 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiff - custom"] 1.265 μs (5%) 1.12 KiB (1%) 13
["multiderivative", (1, 10), "FiniteDiff - fallback"] 795.149 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiff - custom"] 300.485 ns (5%) 512 bytes (1%) 3
["multiderivative", (1, 10), "ForwardDiff - fallback"] 330.403 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff - custom"] 327.481 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 326.431 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "Zygote - custom"] 46.106 μs (5%) 19.80 KiB (1%) 473
["multiderivative", (1, 10), "Zygote - fallback"] 46.095 μs (5%) 19.80 KiB (1%) 473
["pullback!", (1, 1), "ChainRules (Zygote)"] 3.752 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 1), "Enzyme (reverse)"] 30.067 ns (5%)
["pullback!", (1, 1), "Zygote"] 3.736 μs (5%) 1.11 KiB (1%) 40
["pullback!", (1, 10), "ChainRules (Zygote)"] 4.511 μs (5%) 1.89 KiB (1%) 46
["pullback!", (1, 10), "Zygote"] 4.480 μs (5%) 1.84 KiB (1%) 45
["pullback!", (10, 1), "ChainRules (Zygote)"] 4.136 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 1), "Enzyme (reverse)"] 93.403 ns (5%)
["pullback!", (10, 1), "ReverseDiff"] 500.887 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "Zygote"] 4.056 μs (5%) 1.34 KiB (1%) 37
["pullback!", (10, 10), "ChainRules (Zygote)"] 4.672 μs (5%) 2.66 KiB (1%) 42
["pullback!", (10, 10), "ReverseDiff"] 12.553 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "Zygote"] 4.589 μs (5%) 2.61 KiB (1%) 41
["pullback", (1, 1), "ChainRules (Zygote)"] 3.667 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 1), "Enzyme (reverse)"] 29.966 ns (5%)
["pullback", (1, 1), "Zygote"] 3.595 μs (5%) 1.03 KiB (1%) 36
["pullback", (1, 10), "ChainRules (Zygote)"] 4.413 μs (5%) 1.83 KiB (1%) 43
["pullback", (1, 10), "Zygote"] 4.383 μs (5%) 1.78 KiB (1%) 42
["pullback", (10, 1), "ChainRules (Zygote)"] 3.995 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 1), "Enzyme (reverse)"] 123.650 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiff"] 524.120 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "Zygote"] 3.950 μs (5%) 1.30 KiB (1%) 35
["pullback", (10, 10), "ChainRules (Zygote)"] 4.541 μs (5%) 2.62 KiB (1%) 41
["pullback", (10, 10), "ReverseDiff"] 12.873 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "Zygote"] 4.488 μs (5%) 2.58 KiB (1%) 40
["pushforward!", (1, 1), "Enzyme (forward)"] 25.939 ns (5%)
["pushforward!", (1, 1), "FiniteDiff"] 22.532 ns (5%)
["pushforward!", (1, 1), "ForwardDiff"] 7.270 ns (5%)
["pushforward!", (1, 1), "PolyesterForwardDiff"] 11.814 ns (5%)
["pushforward!", (1, 10), "Enzyme (forward)"] 375.311 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiff"] 640.722 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiff"] 182.766 ns (5%) 368 bytes (1%) 2
["pushforward!", (1, 10), "PolyesterForwardDiff"] 179.264 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "Enzyme (forward)"] 56.131 ns (5%)
["pushforward!", (10, 1), "FiniteDiff"] 159.601 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiff"] 84.848 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 1), "PolyesterForwardDiff"] 83.462 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "Enzyme (forward)"] 536.614 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiff"] 988.800 ns (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiff"] 363.284 ns (5%) 816 bytes (1%) 4
["pushforward!", (10, 10), "PolyesterForwardDiff"] 358.809 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "Enzyme (forward)"] 26.853 ns (5%)
["pushforward", (1, 1), "FiniteDiff"] 48.105 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiff"] 6.930 ns (5%)
["pushforward", (1, 1), "PolyesterForwardDiff"] 11.744 ns (5%)
["pushforward", (1, 10), "Enzyme (forward)"] 520.297 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiff"] 785.236 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiff"] 330.576 ns (5%) 656 bytes (1%) 4
["pushforward", (1, 10), "PolyesterForwardDiff"] 330.313 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "Enzyme (forward)"] 64.547 ns (5%)
["pushforward", (10, 1), "FiniteDiff"] 177.216 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiff"] 89.079 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 1), "PolyesterForwardDiff"] 89.691 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "Enzyme (forward)"] 775.426 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiff"] 1.225 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiff"] 595.896 ns (5%) 1.22 KiB (1%) 7
["pushforward", (10, 10), "PolyesterForwardDiff"] 599.456 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "ChainRules (Zygote) - custom"] 3.691 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "ChainRules (Zygote) - fallback"] 3.728 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "Enzyme (forward) - custom"] 29.643 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (forward) - fallback"] 29.633 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse) - custom"] 26.854 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse) - fallback"] 26.562 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff - custom"] 42.340 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff - fallback"] 39.054 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff - custom"] 21.424 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff - fallback"] 12.064 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff - custom"] 7.040 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff - fallback"] 7.340 ns (5%)
["value_and_derivative", (1, 1), "Zygote - custom"] 3.692 μs (5%) 1.09 KiB (1%) 39
["value_and_derivative", (1, 1), "Zygote - fallback"] 3.718 μs (5%) 1.09 KiB (1%) 39
["value_and_gradient!", (10, 1), "ChainRules (Zygote) - custom"] 4.165 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient!", (10, 1), "ChainRules (Zygote) - fallback"] 4.176 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient!", (10, 1), "Enzyme (forward) - custom"] 813.989 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (forward) - fallback"] 812.078 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (reverse) - custom"] 105.368 ns (5%)
["value_and_gradient!", (10, 1), "Enzyme (reverse) - fallback"] 123.036 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiff - custom"] 423.910 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "FiniteDiff - fallback"] 1.371 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "ForwardDiff - custom"] 636.649 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "ForwardDiff - fallback"] 859.833 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiff - custom"] 255.199 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 799.033 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "ReverseDiff - custom"] 516.802 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "ReverseDiff - fallback"] 530.466 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "Zygote - custom"] 180.045 ns (5%) 576 bytes (1%) 6
["value_and_gradient!", (10, 1), "Zygote - fallback"] 4.142 μs (5%) 1.39 KiB (1%) 39
["value_and_gradient", (10, 1), "ChainRules (Zygote) - custom"] 4.241 μs (5%) 1.58 KiB (1%) 41
["value_and_gradient", (10, 1), "ChainRules (Zygote) - fallback"] 4.209 μs (5%) 1.58 KiB (1%) 41
["value_and_gradient", (10, 1), "Enzyme (forward) - custom"] 849.931 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (forward) - fallback"] 847.039 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (reverse) - custom"] 134.880 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "Enzyme (reverse) - fallback"] 155.419 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiff - custom"] 1.244 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "FiniteDiff - fallback"] 1.402 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "ForwardDiff - custom"] 731.247 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "ForwardDiff - fallback"] 853.620 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiff - custom"] 287.682 ns (5%) 656 bytes (1%) 3
["value_and_gradient", (10, 1), "PolyesterForwardDiff - fallback"] 840.528 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "ReverseDiff - custom"] 535.047 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "ReverseDiff - fallback"] 558.422 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "Zygote - custom"] 163.173 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "Zygote - fallback"] 4.159 μs (5%) 1.53 KiB (1%) 40
["value_and_jacobian!", (10, 10), "ChainRules (Zygote) - custom"] 48.250 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian!", (10, 10), "ChainRules (Zygote) - fallback"] 48.261 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian!", (10, 10), "Enzyme (forward) - custom"] 5.863 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "Enzyme (forward) - fallback"] 5.876 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiff - custom"] 6.446 μs (5%) 14.03 KiB (1%) 112
["value_and_jacobian!", (10, 10), "FiniteDiff - fallback"] 10.089 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "ForwardDiff - custom"] 1.436 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "ForwardDiff - fallback"] 3.891 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff - custom"] 1.548 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff - fallback"] 3.886 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "ReverseDiff - custom"] 12.212 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "ReverseDiff - fallback"] 122.329 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "Zygote - custom"] 116.538 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian!", (10, 10), "Zygote - fallback"] 47.990 μs (5%) 28.56 KiB (1%) 452
["value_and_jacobian", (10, 10), "ChainRules (Zygote) - custom"] 48.591 μs (5%) 30.19 KiB (1%) 465
["value_and_jacobian", (10, 10), "ChainRules (Zygote) - fallback"] 48.581 μs (5%) 30.19 KiB (1%) 465
["value_and_jacobian", (10, 10), "Enzyme (forward) - custom"] 3.289 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "Enzyme (forward) - fallback"] 6.153 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "FiniteDiff - custom"] 6.412 μs (5%) 14.05 KiB (1%) 112
["value_and_jacobian", (10, 10), "FiniteDiff - fallback"] 10.350 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "ForwardDiff - custom"] 1.580 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "ForwardDiff - fallback"] 4.119 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiff - custom"] 2.026 μs (5%) 4.83 KiB (1%) 12
["value_and_jacobian", (10, 10), "PolyesterForwardDiff - fallback"] 4.218 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "ReverseDiff - custom"] 12.644 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "ReverseDiff - fallback"] 123.421 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "Zygote - custom"] 116.417 μs (5%) 42.05 KiB (1%) 951
["value_and_jacobian", (10, 10), "Zygote - fallback"] 48.120 μs (5%) 29.72 KiB (1%) 455
["value_and_multiderivative!", (1, 10), "ChainRules (Zygote) - custom"] 45.916 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "ChainRules (Zygote) - fallback"] 45.977 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "Enzyme (forward) - custom"] 377.146 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 376.361 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiff - custom"] 646.149 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiff - fallback"] 643.213 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiff - custom"] 282.473 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiff - fallback"] 180.961 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff - custom"] 179.131 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 179.408 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Zygote - custom"] 45.574 μs (5%) 19.52 KiB (1%) 471
["value_and_multiderivative!", (1, 10), "Zygote - fallback"] 45.365 μs (5%) 19.52 KiB (1%) 471
["value_and_multiderivative", (1, 10), "ChainRules (Zygote) - custom"] 46.457 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "ChainRules (Zygote) - fallback"] 46.487 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "Enzyme (forward) - custom"] 520.818 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Enzyme (forward) - fallback"] 519.776 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiff - custom"] 1.264 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "FiniteDiff - fallback"] 801.290 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "ForwardDiff - custom"] 301.220 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "ForwardDiff - fallback"] 332.057 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff - custom"] 329.291 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 326.236 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Zygote - custom"] 45.855 μs (5%) 19.80 KiB (1%) 473
["value_and_multiderivative", (1, 10), "Zygote - fallback"] 45.876 μs (5%) 19.80 KiB (1%) 473
["value_and_pullback!", (1, 1), "ChainRules (Zygote)"] 3.735 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 1), "Enzyme (reverse)"] 30.480 ns (5%)
["value_and_pullback!", (1, 1), "Zygote"] 3.693 μs (5%) 1.09 KiB (1%) 39
["value_and_pullback!", (1, 10), "ChainRules (Zygote)"] 4.504 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (1, 10), "Zygote"] 4.470 μs (5%) 1.83 KiB (1%) 44
["value_and_pullback!", (10, 1), "ChainRules (Zygote)"] 4.076 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 1), "Enzyme (reverse)"] 94.534 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiff"] 503.662 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "Zygote"] 4.052 μs (5%) 1.34 KiB (1%) 37
["value_and_pullback!", (10, 10), "ChainRules (Zygote)"] 4.600 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback!", (10, 10), "ReverseDiff"] 12.423 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "Zygote"] 4.538 μs (5%) 2.61 KiB (1%) 41
["value_and_pullback", (1, 1), "ChainRules (Zygote)"] 3.713 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 1), "Enzyme (reverse)"] 30.278 ns (5%)
["value_and_pullback", (1, 1), "Zygote"] 3.633 μs (5%) 1.08 KiB (1%) 38
["value_and_pullback", (1, 10), "ChainRules (Zygote)"] 4.474 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (1, 10), "Zygote"] 4.440 μs (5%) 1.81 KiB (1%) 43
["value_and_pullback", (10, 1), "ChainRules (Zygote)"] 4.049 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 1), "Enzyme (reverse)"] 128.703 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiff"] 529.733 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "Zygote"] 4.016 μs (5%) 1.34 KiB (1%) 37
["value_and_pullback", (10, 10), "ChainRules (Zygote)"] 4.558 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (10, 10), "ReverseDiff"] 12.173 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "Zygote"] 4.496 μs (5%) 2.61 KiB (1%) 41
["value_and_pushforward!", (1, 1), "Enzyme (forward)"] 28.082 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiff"] 23.025 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiff"] 7.682 ns (5%)
["value_and_pushforward!", (1, 1), "PolyesterForwardDiff"] 12.465 ns (5%)
["value_and_pushforward!", (1, 10), "Enzyme (forward)"] 377.634 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiff"] 640.899 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiff"] 181.605 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (1, 10), "PolyesterForwardDiff"] 180.880 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "Enzyme (forward)"] 55.520 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiff"] 160.399 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiff"] 97.038 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 1), "PolyesterForwardDiff"] 89.463 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "Enzyme (forward)"] 544.243 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiff"] 984.375 ns (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiff"] 361.794 ns (5%) 816 bytes (1%) 4
["value_and_pushforward!", (10, 10), "PolyesterForwardDiff"] 367.292 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "Enzyme (forward)"] 26.794 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiff"] 22.754 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiff"] 7.320 ns (5%)
["value_and_pushforward", (1, 1), "PolyesterForwardDiff"] 12.325 ns (5%)
["value_and_pushforward", (1, 10), "Enzyme (forward)"] 524.208 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiff"] 790.615 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiff"] 331.317 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (1, 10), "PolyesterForwardDiff"] 328.728 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "Enzyme (forward)"] 66.686 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiff"] 181.174 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiff"] 91.641 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 1), "PolyesterForwardDiff"] 92.433 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "Enzyme (forward)"] 777.937 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiff"] 1.229 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiff"] 592.376 ns (5%) 1.22 KiB (1%) 7
["value_and_pushforward", (10, 10), "PolyesterForwardDiff"] 597.235 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  3240 MHz       2898 s          0 s        165 s       6579 s          0 s
       #2  3237 MHz       2784 s          0 s        166 s       6681 s          0 s
       #3  2445 MHz       3384 s          0 s        194 s       6070 s          0 s
       #4  2615 MHz       3523 s          0 s        187 s       5944 s          0 s
  Memory: 15.606491088867188 GB (14011.734375 MB free)
  Uptime: 968.73 sec
  Load Avg:  1.0  1.17  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 10 Mar 2024 - 19:26
  • Package commit: 83d370
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 69.000 ns (5%)
["derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 70.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{custom}()"] 40.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 29.000 ns (5%)
["derivative", (1, 1), "ZygoteBackend{custom}()"] 3.716 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "ZygoteBackend{fallback}()"] 3.707 μs (5%) 1.16 KiB (1%) 41
["gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 911.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 921.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 130.000 ns (5%)
["gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 250.000 ns (5%)
["gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 571.000 ns (5%) 144 bytes (1%) 1
["gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.583 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 611.000 ns (5%) 1.84 KiB (1%) 4
["gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 801.000 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 300.000 ns (5%) 512 bytes (1%) 2
["gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 551.000 ns (5%) 1.22 KiB (1%) 18
["gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "ZygoteBackend{custom}()"] 220.000 ns (5%) 576 bytes (1%) 6
["gradient!", (10, 1), "ZygoteBackend{fallback}()"] 4.057 μs (5%) 1.39 KiB (1%) 38
["gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 942.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 942.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 160.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 170.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.452 μs (5%) 400 bytes (1%) 6
["gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.613 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiffBackend{custom}()"] 641.000 ns (5%) 1.98 KiB (1%) 5
["gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 831.000 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 330.000 ns (5%) 656 bytes (1%) 3
["gradient", (10, 1), "ReverseDiffBackend{custom}()"] 581.000 ns (5%) 1.36 KiB (1%) 19
["gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 601.000 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "ZygoteBackend{custom}()"] 210.000 ns (5%) 576 bytes (1%) 6
["gradient", (10, 1), "ZygoteBackend{fallback}()"] 4.218 μs (5%) 1.53 KiB (1%) 39
["jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 5.550 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.700 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 10.058 μs (5%) 19.34 KiB (1%) 202
["jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 9.769 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.362 μs (5%) 4.09 KiB (1%) 8
["jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.757 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.533 μs (5%) 3.67 KiB (1%) 9
["jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.654 μs (5%) 6.95 KiB (1%) 91
["jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 122.298 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "ZygoteBackend{custom}()"] 121.797 μs (5%) 42.03 KiB (1%) 951
["jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 47.569 μs (5%) 29.03 KiB (1%) 462
["jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 18.835 μs (5%) 9.89 KiB (1%) 47
["jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 6.421 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 10.279 μs (5%) 19.33 KiB (1%) 201
["jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.129 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 13.105 μs (5%) 4.97 KiB (1%) 9
["jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 4.028 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 2.364 μs (5%) 4.83 KiB (1%) 12
["jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 12.072 μs (5%) 7.83 KiB (1%) 92
["jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 124.012 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "ZygoteBackend{custom}()"] 174.927 μs (5%) 42.02 KiB (1%) 950
["jacobian", (10, 10), "ZygoteBackend{fallback}()"] 51.487 μs (5%) 30.19 KiB (1%) 465
["multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 411.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 400.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 671.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 651.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 290.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 211.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 46.246 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 46.227 μs (5%) 19.98 KiB (1%) 481
["multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 561.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 541.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.302 μs (5%) 1.12 KiB (1%) 13
["multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 781.000 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 310.000 ns (5%) 512 bytes (1%) 3
["multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 360.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 370.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "ZygoteBackend{custom}()"] 46.386 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 46.297 μs (5%) 20.27 KiB (1%) 483
["pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["pullback!", (1, 1), "ZygoteBackend{fallback}()"] 3.737 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 10), "ZygoteBackend{fallback}()"] 4.619 μs (5%) 1.89 KiB (1%) 46
["pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 130.000 ns (5%)
["pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 571.000 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "ZygoteBackend{fallback}()"] 4.248 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.313 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "ZygoteBackend{fallback}()"] 4.688 μs (5%) 2.66 KiB (1%) 42
["pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["pullback", (1, 1), "ZygoteBackend{fallback}()"] 3.596 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 10), "ZygoteBackend{fallback}()"] 4.438 μs (5%) 1.83 KiB (1%) 43
["pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 160.000 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "ZygoteBackend{fallback}()"] 4.047 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.383 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "ZygoteBackend{fallback}()"] 4.638 μs (5%) 2.62 KiB (1%) 41
["pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 70.000 ns (5%)
["pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 400.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 681.000 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 89.000 ns (5%)
["pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 200.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 110.000 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.082 μs (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 390.000 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 70.000 ns (5%)
["pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 100.000 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 541.000 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 821.000 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 350.000 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 211.000 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 120.000 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 841.000 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.302 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 651.000 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 70.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 70.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{custom}()"] 49.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 29.000 ns (5%)
["value_and_derivative", (1, 1), "ZygoteBackend{custom}()"] 3.676 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "ZygoteBackend{fallback}()"] 3.687 μs (5%) 1.14 KiB (1%) 40
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 921.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 931.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 130.000 ns (5%)
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 140.000 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 581.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.603 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 601.000 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 811.000 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 301.000 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 541.000 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "ZygoteBackend{custom}()"] 220.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient!", (10, 1), "ZygoteBackend{fallback}()"] 4.288 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 961.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 962.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 170.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 170.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.422 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.613 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "ForwardDiffBackend{custom}()"] 701.000 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 841.000 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 330.000 ns (5%) 656 bytes (1%) 3
["value_and_gradient", (10, 1), "ReverseDiffBackend{custom}()"] 561.000 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 601.000 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "ZygoteBackend{custom}()"] 210.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "ZygoteBackend{fallback}()"] 4.308 μs (5%) 1.58 KiB (1%) 41
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 5.550 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.670 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 10.090 μs (5%) 19.34 KiB (1%) 202
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 9.888 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.382 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.757 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.533 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.594 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 124.162 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "ZygoteBackend{custom}()"] 122.209 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 47.889 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 3.126 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.921 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 10.019 μs (5%) 19.36 KiB (1%) 202
["value_and_jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.189 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 1.502 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 4.007 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.803 μs (5%) 4.83 KiB (1%) 12
["value_and_jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 12.764 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 122.299 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "ZygoteBackend{custom}()"] 121.046 μs (5%) 42.05 KiB (1%) 951
["value_and_jacobian", (10, 10), "ZygoteBackend{fallback}()"] 47.940 μs (5%) 30.19 KiB (1%) 465
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 420.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 411.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 661.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 651.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 290.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 211.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 46.096 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 46.147 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 550.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.282 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 791.000 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 300.000 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 350.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 361.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "ZygoteBackend{custom}()"] 46.316 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 46.357 μs (5%) 20.27 KiB (1%) 483
["value_and_pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["value_and_pullback!", (1, 1), "ZygoteBackend{fallback}()"] 3.676 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 10), "ZygoteBackend{fallback}()"] 4.508 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 130.000 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 561.000 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "ZygoteBackend{fallback}()"] 4.098 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.352 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "ZygoteBackend{fallback}()"] 4.719 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["value_and_pullback", (1, 1), "ZygoteBackend{fallback}()"] 3.657 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 10), "ZygoteBackend{fallback}()"] 4.508 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 160.000 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "ZygoteBackend{fallback}()"] 4.098 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.213 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "ZygoteBackend{fallback}()"] 4.648 μs (5%) 2.66 KiB (1%) 42
["value_and_pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 410.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 681.000 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 89.000 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 200.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 110.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 570.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.062 μs (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 390.000 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 70.000 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 551.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 831.000 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 360.000 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 220.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 120.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 841.000 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.312 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 651.000 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       3356 s          0 s        184 s       8386 s          0 s
       #2  3243 MHz       3016 s          0 s        188 s       8711 s          0 s
       #3  3200 MHz       4506 s          0 s        209 s       7220 s          0 s
       #4  2731 MHz       3993 s          0 s        206 s       7739 s          0 s
  Memory: 15.606491088867188 GB (14036.35546875 MB free)
  Uptime: 1197.73 sec
  Load Avg:  1.0  1.07  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() lbt
Sys.CPU_THREADS 4

lscpu output:

Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             4
On-line CPU(s) list:                0-3
Vendor ID:                          AuthenticAMD
Model name:                         AMD EPYC 7763 64-Core Processor
CPU family:                         25
Model:                              1
Thread(s) per core:                 2
Core(s) per socket:                 2
Socket(s):                          1
Stepping:                           1
BogoMIPS:                           4890.85
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization:                     AMD-V
Hypervisor vendor:                  Microsoft
Virtualization type:                full
L1d cache:                          64 KiB (2 instances)
L1i cache:                          64 KiB (2 instances)
L2 cache:                           1 MiB (2 instances)
L3 cache:                           32 MiB (1 instance)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec rstack overflow: Mitigation; safe RET, no microcode
Vulnerability Spec store bypass:    Vulnerable
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

@gdalle gdalle requested a review from adrhill March 10, 2024 20:28
@adrhill
Copy link
Collaborator

adrhill commented Mar 11, 2024

I like this a lot. I agree with you on keeping implementations and extras separate.

Any thoughts on putting the implem and mode as last arguments?
This could simplify boilerplate methods like

function jacobian!(jac::AbstractMatrix, backend::AbstractBackend, f, x::AbstractArray)
    return last(value_and_jacobian!(jac, backend, f, x))
function jacobian!(
    implem::AbstractImplem,
    jac::AbstractMatrix,
    backend::AbstractADType,
    f,
    x::AbstractArray,
)
    return last(value_and_jacobian!(implem, jac, backend, f, x))
end

to a single method

function jacobian!(
    jac::AbstractMatrix,
    backend::AbstractADType,
    f,
    x::AbstractArray,
    args...
)
    return last(value_and_jacobian!(jac, backend, f, x, args...))
end

and has the additional benefit of making the mutated input the first argument.
This would also forward the extras which we plan on adding.

@gdalle
Copy link
Owner Author

gdalle commented Mar 11, 2024

Yeah that's a good idea, I'll do that

Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmarks:
    • Target: 11 Mar 2024 - 16:28
    • Baseline: 11 Mar 2024 - 16:32
  • Package commits:
    • Target: a817e1
    • Baseline: 83d370
  • Julia commits:
    • Target: bd47ec
    • Baseline: bd47ec
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

Julia versioninfo

Target

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       5136 s          0 s        236 s      12481 s          0 s
       #2  2634 MHz       5038 s          0 s        267 s      12542 s          0 s
       #3  3246 MHz       4367 s          0 s        230 s      13256 s          0 s
       #4  3244 MHz       4216 s          0 s        262 s      13368 s          0 s
  Memory: 15.606494903564453 GB (13926.65625 MB free)
  Uptime: 1790.79 sec
  Load Avg:  1.02  1.03  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline

Julia Version 1.10.2
Commit bd47eca2c8a (2024-03-01 10:14 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  3240 MHz       5701 s          0 s        258 s      14646 s          0 s
       #2  3221 MHz       5799 s          0 s        289 s      14512 s          0 s
       #3  2445 MHz       4828 s          0 s        254 s      15523 s          0 s
       #4  2445 MHz       5177 s          0 s        279 s      15144 s          0 s
  Memory: 15.606494903564453 GB (13996.94140625 MB free)
  Uptime: 2066.63 sec
  Load Avg:  1.05  1.04  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Target result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 11 Mar 2024 - 16:28
  • Package commit: a817e1
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "ChainRules{Zygote} - custom"] 3.742 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "ChainRules{Zygote} - fallback"] 3.752 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "Diffractor (forward) - custom"] 12.255 ns (5%)
["derivative", (1, 1), "Diffractor (forward) - fallback"] 11.574 ns (5%)
["derivative", (1, 1), "Enzyme (forward) - custom"] 30.520 ns (5%)
["derivative", (1, 1), "Enzyme (forward) - fallback"] 29.754 ns (5%)
["derivative", (1, 1), "Enzyme (reverse) - custom"] 26.243 ns (5%)
["derivative", (1, 1), "Enzyme (reverse) - fallback"] 26.240 ns (5%)
["derivative", (1, 1), "FiniteDiff - custom"] 35.833 ns (5%)
["derivative", (1, 1), "FiniteDiff - fallback"] 38.762 ns (5%)
["derivative", (1, 1), "ForwardDiff - custom"] 11.402 ns (5%)
["derivative", (1, 1), "ForwardDiff - fallback"] 11.432 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff - custom"] 11.442 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiff - fallback"] 11.432 ns (5%)
["derivative", (1, 1), "Zygote - custom"] 3.718 μs (5%) 1.11 KiB (1%) 40
["derivative", (1, 1), "Zygote - fallback"] 3.729 μs (5%) 1.11 KiB (1%) 40
["gradient!", (10, 1), "ChainRules{Zygote} - custom"] 4.189 μs (5%) 1.39 KiB (1%) 38
["gradient!", (10, 1), "ChainRules{Zygote} - fallback"] 4.202 μs (5%) 1.39 KiB (1%) 38
["gradient!", (10, 1), "Diffractor (forward) - custom"] 1.650 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "Diffractor (forward) - fallback"] 1.423 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "Enzyme (forward) - custom"] 901.080 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (forward) - fallback"] 898.915 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "Enzyme (reverse) - custom"] 106.573 ns (5%)
["gradient!", (10, 1), "Enzyme (reverse) - fallback"] 120.523 ns (5%)
["gradient!", (10, 1), "FiniteDiff - custom"] 426.879 ns (5%) 144 bytes (1%) 1
["gradient!", (10, 1), "FiniteDiff - fallback"] 1.407 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiff - custom"] 835.962 ns (5%) 1.84 KiB (1%) 4
["gradient!", (10, 1), "ForwardDiff - fallback"] 908.224 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiff - custom"] 300.689 ns (5%) 512 bytes (1%) 2
["gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 909.811 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "ReverseDiff - custom"] 481.103 ns (5%) 1.22 KiB (1%) 18
["gradient!", (10, 1), "ReverseDiff - fallback"] 499.490 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "Zygote - custom"] 185.814 ns (5%) 576 bytes (1%) 6
["gradient!", (10, 1), "Zygote - fallback"] 4.139 μs (5%) 1.34 KiB (1%) 37
["gradient", (10, 1), "ChainRules{Zygote} - custom"] 4.547 μs (5%) 1.72 KiB (1%) 46
["gradient", (10, 1), "ChainRules{Zygote} - fallback"] 4.563 μs (5%) 1.72 KiB (1%) 46
["gradient", (10, 1), "Diffractor (forward) - custom"] 1.555 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "Diffractor (forward) - fallback"] 1.460 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "Enzyme (forward) - custom"] 923.457 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (forward) - fallback"] 925.143 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "Enzyme (reverse) - custom"] 137.279 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "Enzyme (reverse) - fallback"] 153.838 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiff - custom"] 1.214 μs (5%) 400 bytes (1%) 6
["gradient", (10, 1), "FiniteDiff - fallback"] 1.435 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiff - custom"] 656.661 ns (5%) 1.98 KiB (1%) 5
["gradient", (10, 1), "ForwardDiff - fallback"] 910.736 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiff - custom"] 324.398 ns (5%) 656 bytes (1%) 3
["gradient", (10, 1), "PolyesterForwardDiff - fallback"] 915.266 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "ReverseDiff - custom"] 508.772 ns (5%) 1.36 KiB (1%) 19
["gradient", (10, 1), "ReverseDiff - fallback"] 581.084 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "Zygote - custom"] 173.293 ns (5%) 576 bytes (1%) 6
["gradient", (10, 1), "Zygote - fallback"] 4.475 μs (5%) 1.62 KiB (1%) 43
["jacobian!", (10, 10), "ChainRules{Zygote} - custom"] 48.441 μs (5%) 29.03 KiB (1%) 462
["jacobian!", (10, 10), "ChainRules{Zygote} - fallback"] 48.420 μs (5%) 29.03 KiB (1%) 462
["jacobian!", (10, 10), "Diffractor (forward) - custom"] 3.337 ms (5%) 557.16 KiB (1%) 18672
["jacobian!", (10, 10), "Diffractor (forward) - fallback"] 3.327 ms (5%) 557.16 KiB (1%) 18672
["jacobian!", (10, 10), "Enzyme (forward) - custom"] 5.749 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "Enzyme (forward) - fallback"] 5.724 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiff - custom"] 6.328 μs (5%) 14.03 KiB (1%) 112
["jacobian!", (10, 10), "FiniteDiff - fallback"] 10.390 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiff - custom"] 1.573 μs (5%) 4.09 KiB (1%) 8
["jacobian!", (10, 10), "ForwardDiff - fallback"] 4.361 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiff - custom"] 1.814 μs (5%) 3.67 KiB (1%) 9
["jacobian!", (10, 10), "PolyesterForwardDiff - fallback"] 4.309 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "ReverseDiff - custom"] 12.232 μs (5%) 6.95 KiB (1%) 91
["jacobian!", (10, 10), "ReverseDiff - fallback"] 122.499 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "Zygote - custom"] 114.173 μs (5%) 42.03 KiB (1%) 951
["jacobian!", (10, 10), "Zygote - fallback"] 48.150 μs (5%) 28.56 KiB (1%) 452
["jacobian", (10, 10), "ChainRules{Zygote} - custom"] 48.370 μs (5%) 30.19 KiB (1%) 465
["jacobian", (10, 10), "ChainRules{Zygote} - fallback"] 48.841 μs (5%) 30.19 KiB (1%) 465
["jacobian", (10, 10), "Diffractor (forward) - custom"] 3.371 ms (5%) 558.31 KiB (1%) 18675
["jacobian", (10, 10), "Diffractor (forward) - fallback"] 3.369 ms (5%) 558.31 KiB (1%) 18675
["jacobian", (10, 10), "Enzyme (forward) - custom"] 3.504 μs (5%) 9.89 KiB (1%) 47
["jacobian", (10, 10), "Enzyme (forward) - fallback"] 6.009 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiff - custom"] 6.143 μs (5%) 14.02 KiB (1%) 111
["jacobian", (10, 10), "FiniteDiff - fallback"] 10.409 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiff - custom"] 1.649 μs (5%) 4.97 KiB (1%) 9
["jacobian", (10, 10), "ForwardDiff - fallback"] 4.587 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiff - custom"] 2.157 μs (5%) 4.83 KiB (1%) 12
["jacobian", (10, 10), "PolyesterForwardDiff - fallback"] 4.548 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "ReverseDiff - custom"] 12.684 μs (5%) 8.00 KiB (1%) 98
["jacobian", (10, 10), "ReverseDiff - fallback"] 122.779 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "Zygote - custom"] 115.065 μs (5%) 42.02 KiB (1%) 950
["jacobian", (10, 10), "Zygote - fallback"] 48.701 μs (5%) 29.72 KiB (1%) 455
["multiderivative!", (1, 10), "ChainRules{Zygote} - custom"] 45.755 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "ChainRules{Zygote} - fallback"] 45.746 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "Diffractor (forward) - custom"] 671.645 μs (5%) 105.27 KiB (1%) 3565
["multiderivative!", (1, 10), "Diffractor (forward) - fallback"] 672.467 μs (5%) 105.27 KiB (1%) 3565
["multiderivative!", (1, 10), "Enzyme (forward) - custom"] 369.918 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 370.256 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiff - custom"] 624.155 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiff - fallback"] 623.753 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiff - custom"] 284.033 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiff - fallback"] 201.448 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff - custom"] 203.577 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 230.485 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "Zygote - custom"] 45.515 μs (5%) 19.52 KiB (1%) 471
["multiderivative!", (1, 10), "Zygote - fallback"] 45.485 μs (5%) 19.52 KiB (1%) 471
["multiderivative", (1, 10), "ChainRules{Zygote} - custom"] 45.855 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "ChainRules{Zygote} - fallback"] 45.926 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "Diffractor (forward) - custom"] 674.200 μs (5%) 105.55 KiB (1%) 3567
["multiderivative", (1, 10), "Diffractor (forward) - fallback"] 667.498 μs (5%) 105.55 KiB (1%) 3567
["multiderivative", (1, 10), "Enzyme (forward) - custom"] 506.026 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "Enzyme (forward) - fallback"] 506.959 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiff - custom"] 1.183 μs (5%) 1.12 KiB (1%) 13
["multiderivative", (1, 10), "FiniteDiff - fallback"] 786.147 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiff - custom"] 295.721 ns (5%) 512 bytes (1%) 3
["multiderivative", (1, 10), "ForwardDiff - fallback"] 335.902 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff - custom"] 367.774 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 366.052 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "Zygote - custom"] 45.495 μs (5%) 19.80 KiB (1%) 473
["multiderivative", (1, 10), "Zygote - fallback"] 45.485 μs (5%) 19.80 KiB (1%) 473
["pullback!", (1, 1), "ChainRules{Zygote}"] 3.732 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 1), "Enzyme (reverse)"] 29.391 ns (5%)
["pullback!", (1, 1), "Zygote"] 3.707 μs (5%) 1.11 KiB (1%) 40
["pullback!", (1, 10), "ChainRules{Zygote}"] 4.486 μs (5%) 1.89 KiB (1%) 46
["pullback!", (1, 10), "Zygote"] 4.460 μs (5%) 1.84 KiB (1%) 45
["pullback!", (10, 1), "ChainRules{Zygote}"] 4.185 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 1), "Enzyme (reverse)"] 91.228 ns (5%)
["pullback!", (10, 1), "ReverseDiff"] 482.964 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "Zygote"] 4.119 μs (5%) 1.34 KiB (1%) 37
["pullback!", (10, 10), "ChainRules{Zygote}"] 4.679 μs (5%) 2.66 KiB (1%) 42
["pullback!", (10, 10), "ReverseDiff"] 11.942 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "Zygote"] 4.643 μs (5%) 2.61 KiB (1%) 41
["pullback", (1, 1), "ChainRules{Zygote}"] 3.635 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 1), "Enzyme (reverse)"] 30.036 ns (5%)
["pullback", (1, 1), "Zygote"] 3.602 μs (5%) 1.03 KiB (1%) 36
["pullback", (1, 10), "ChainRules{Zygote}"] 4.413 μs (5%) 1.83 KiB (1%) 43
["pullback", (1, 10), "Zygote"] 4.384 μs (5%) 1.78 KiB (1%) 42
["pullback", (10, 1), "ChainRules{Zygote}"] 4.063 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 1), "Enzyme (reverse)"] 128.321 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiff"] 566.266 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "Zygote"] 4.033 μs (5%) 1.30 KiB (1%) 35
["pullback", (10, 10), "ChainRules{Zygote}"] 4.597 μs (5%) 2.62 KiB (1%) 41
["pullback", (10, 10), "ReverseDiff"] 12.033 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "Zygote"] 4.536 μs (5%) 2.58 KiB (1%) 40
["pushforward!", (1, 1), "Diffractor (forward)"] 13.027 ns (5%)
["pushforward!", (1, 1), "Enzyme (forward)"] 29.513 ns (5%)
["pushforward!", (1, 1), "FiniteDiff"] 38.853 ns (5%)
["pushforward!", (1, 1), "ForwardDiff"] 7.110 ns (5%)
["pushforward!", (1, 1), "PolyesterForwardDiff"] 11.734 ns (5%)
["pushforward!", (1, 10), "Diffractor (forward)"] 666.265 μs (5%) 105.27 KiB (1%) 3565
["pushforward!", (1, 10), "Enzyme (forward)"] 370.353 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiff"] 653.110 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiff"] 199.332 ns (5%) 368 bytes (1%) 2
["pushforward!", (1, 10), "PolyesterForwardDiff"] 200.547 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "Diffractor (forward)"] 151.945 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "Enzyme (forward)"] 54.609 ns (5%)
["pushforward!", (10, 1), "FiniteDiff"] 161.654 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiff"] 91.783 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 1), "PolyesterForwardDiff"] 89.393 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "Diffractor (forward)"] 311.742 μs (5%) 53.83 KiB (1%) 1815
["pushforward!", (10, 10), "Enzyme (forward)"] 533.304 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiff"] 1.005 μs (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiff"] 406.777 ns (5%) 816 bytes (1%) 4
["pushforward!", (10, 10), "PolyesterForwardDiff"] 442.673 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "Diffractor (forward)"] 11.763 ns (5%)
["pushforward", (1, 1), "Enzyme (forward)"] 29.472 ns (5%)
["pushforward", (1, 1), "FiniteDiff"] 65.873 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiff"] 7.020 ns (5%)
["pushforward", (1, 1), "PolyesterForwardDiff"] 11.533 ns (5%)
["pushforward", (1, 10), "Diffractor (forward)"] 670.122 μs (5%) 105.23 KiB (1%) 3564
["pushforward", (1, 10), "Enzyme (forward)"] 515.443 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiff"] 808.913 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiff"] 364.498 ns (5%) 656 bytes (1%) 4
["pushforward", (1, 10), "PolyesterForwardDiff"] 363.395 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "Diffractor (forward)"] 159.164 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "Enzyme (forward)"] 69.056 ns (5%)
["pushforward", (10, 1), "FiniteDiff"] 182.168 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiff"] 98.182 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 1), "PolyesterForwardDiff"] 97.253 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "Diffractor (forward)"] 316.902 μs (5%) 53.80 KiB (1%) 1814
["pushforward", (10, 10), "Enzyme (forward)"] 768.108 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiff"] 1.251 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiff"] 679.337 ns (5%) 1.22 KiB (1%) 7
["pushforward", (10, 10), "PolyesterForwardDiff"] 685.778 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "ChainRules{Zygote} - custom"] 3.728 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "ChainRules{Zygote} - fallback"] 3.728 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "Diffractor (forward) - custom"] 20.892 ns (5%)
["value_and_derivative", (1, 1), "Diffractor (forward) - fallback"] 20.952 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (forward) - custom"] 29.804 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (forward) - fallback"] 29.794 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse) - custom"] 26.562 ns (5%)
["value_and_derivative", (1, 1), "Enzyme (reverse) - fallback"] 26.563 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff - custom"] 40.145 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiff - fallback"] 39.013 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff - custom"] 20.208 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiff - fallback"] 11.944 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff - custom"] 11.944 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiff - fallback"] 11.924 ns (5%)
["value_and_derivative", (1, 1), "Zygote - custom"] 3.697 μs (5%) 1.09 KiB (1%) 39
["value_and_derivative", (1, 1), "Zygote - fallback"] 3.694 μs (5%) 1.09 KiB (1%) 39
["value_and_gradient!", (10, 1), "ChainRules{Zygote} - custom"] 4.236 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient!", (10, 1), "ChainRules{Zygote} - fallback"] 4.244 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient!", (10, 1), "Diffractor (forward) - custom"] 1.413 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "Diffractor (forward) - fallback"] 1.642 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "Enzyme (forward) - custom"] 900.208 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (forward) - fallback"] 908.578 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "Enzyme (reverse) - custom"] 107.484 ns (5%)
["value_and_gradient!", (10, 1), "Enzyme (reverse) - fallback"] 119.927 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiff - custom"] 425.540 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "FiniteDiff - fallback"] 1.376 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "ForwardDiff - custom"] 611.632 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "ForwardDiff - fallback"] 903.652 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiff - custom"] 307.777 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "PolyesterForwardDiff - fallback"] 892.598 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "ReverseDiff - custom"] 472.472 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "ReverseDiff - fallback"] 488.420 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "Zygote - custom"] 188.776 ns (5%) 576 bytes (1%) 6
["value_and_gradient!", (10, 1), "Zygote - fallback"] 4.212 μs (5%) 1.39 KiB (1%) 39
["value_and_gradient", (10, 1), "ChainRules{Zygote} - custom"] 4.274 μs (5%) 1.58 KiB (1%) 41
["value_and_gradient", (10, 1), "ChainRules{Zygote} - fallback"] 4.284 μs (5%) 1.58 KiB (1%) 41
["value_and_gradient", (10, 1), "Diffractor (forward) - custom"] 1.446 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "Diffractor (forward) - fallback"] 1.437 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "Enzyme (forward) - custom"] 933.171 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (forward) - fallback"] 935.697 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "Enzyme (reverse) - custom"] 137.419 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "Enzyme (reverse) - fallback"] 153.206 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiff - custom"] 1.238 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "FiniteDiff - fallback"] 1.422 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "ForwardDiff - custom"] 694.994 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "ForwardDiff - fallback"] 902.096 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiff - custom"] 349.909 ns (5%) 656 bytes (1%) 3
["value_and_gradient", (10, 1), "PolyesterForwardDiff - fallback"] 900.747 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "ReverseDiff - custom"] 509.339 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "ReverseDiff - fallback"] 533.421 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "Zygote - custom"] 199.184 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "Zygote - fallback"] 4.262 μs (5%) 1.53 KiB (1%) 40
["value_and_jacobian!", (10, 10), "ChainRules{Zygote} - custom"] 47.850 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian!", (10, 10), "ChainRules{Zygote} - fallback"] 48.270 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian!", (10, 10), "Diffractor (forward) - custom"] 3.307 ms (5%) 557.16 KiB (1%) 18672
["value_and_jacobian!", (10, 10), "Diffractor (forward) - fallback"] 3.320 ms (5%) 557.16 KiB (1%) 18672
["value_and_jacobian!", (10, 10), "Enzyme (forward) - custom"] 5.798 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "Enzyme (forward) - fallback"] 5.747 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiff - custom"] 6.396 μs (5%) 14.03 KiB (1%) 112
["value_and_jacobian!", (10, 10), "FiniteDiff - fallback"] 10.039 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "ForwardDiff - custom"] 1.695 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "ForwardDiff - fallback"] 4.317 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff - custom"] 2.017 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "PolyesterForwardDiff - fallback"] 4.336 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "ReverseDiff - custom"] 12.463 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "ReverseDiff - fallback"] 121.637 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "Zygote - custom"] 114.714 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian!", (10, 10), "Zygote - fallback"] 47.539 μs (5%) 28.56 KiB (1%) 452
["value_and_jacobian", (10, 10), "ChainRules{Zygote} - custom"] 48.991 μs (5%) 30.19 KiB (1%) 465
["value_and_jacobian", (10, 10), "ChainRules{Zygote} - fallback"] 48.922 μs (5%) 30.19 KiB (1%) 465
["value_and_jacobian", (10, 10), "Diffractor (forward) - custom"] 3.296 ms (5%) 558.31 KiB (1%) 18675
["value_and_jacobian", (10, 10), "Diffractor (forward) - fallback"] 3.352 ms (5%) 558.31 KiB (1%) 18675
["value_and_jacobian", (10, 10), "Enzyme (forward) - custom"] 3.644 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "Enzyme (forward) - fallback"] 5.975 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "FiniteDiff - custom"] 6.284 μs (5%) 14.05 KiB (1%) 112
["value_and_jacobian", (10, 10), "FiniteDiff - fallback"] 12.404 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "ForwardDiff - custom"] 1.761 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "ForwardDiff - fallback"] 4.574 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiff - custom"] 2.148 μs (5%) 4.83 KiB (1%) 12
["value_and_jacobian", (10, 10), "PolyesterForwardDiff - fallback"] 4.560 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "ReverseDiff - custom"] 11.943 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "ReverseDiff - fallback"] 124.262 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "Zygote - custom"] 114.784 μs (5%) 42.05 KiB (1%) 951
["value_and_jacobian", (10, 10), "Zygote - fallback"] 48.461 μs (5%) 29.72 KiB (1%) 455
["value_and_multiderivative!", (1, 10), "ChainRules{Zygote} - custom"] 45.826 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "ChainRules{Zygote} - fallback"] 45.936 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "Diffractor (forward) - custom"] 671.595 μs (5%) 105.27 KiB (1%) 3565
["value_and_multiderivative!", (1, 10), "Diffractor (forward) - fallback"] 673.198 μs (5%) 105.27 KiB (1%) 3565
["value_and_multiderivative!", (1, 10), "Enzyme (forward) - custom"] 375.262 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Enzyme (forward) - fallback"] 375.290 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiff - custom"] 620.873 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiff - fallback"] 629.836 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiff - custom"] 286.913 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiff - fallback"] 200.965 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff - custom"] 201.251 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiff - fallback"] 199.198 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "Zygote - custom"] 45.424 μs (5%) 19.52 KiB (1%) 471
["value_and_multiderivative!", (1, 10), "Zygote - fallback"] 45.495 μs (5%) 19.52 KiB (1%) 471
["value_and_multiderivative", (1, 10), "ChainRules{Zygote} - custom"] 45.886 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "ChainRules{Zygote} - fallback"] 45.986 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "Diffractor (forward) - custom"] 674.371 μs (5%) 105.55 KiB (1%) 3567
["value_and_multiderivative", (1, 10), "Diffractor (forward) - fallback"] 672.205 μs (5%) 105.55 KiB (1%) 3567
["value_and_multiderivative", (1, 10), "Enzyme (forward) - custom"] 517.115 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Enzyme (forward) - fallback"] 518.318 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiff - custom"] 1.188 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "FiniteDiff - fallback"] 768.073 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "ForwardDiff - custom"] 321.101 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "ForwardDiff - fallback"] 363.775 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff - custom"] 368.496 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiff - fallback"] 367.383 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "Zygote - custom"] 45.605 μs (5%) 19.80 KiB (1%) 473
["value_and_multiderivative", (1, 10), "Zygote - fallback"] 45.666 μs (5%) 19.80 KiB (1%) 473
["value_and_pullback!", (1, 1), "ChainRules{Zygote}"] 3.729 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 1), "Enzyme (reverse)"] 30.429 ns (5%)
["value_and_pullback!", (1, 1), "Zygote"] 3.694 μs (5%) 1.09 KiB (1%) 39
["value_and_pullback!", (1, 10), "ChainRules{Zygote}"] 4.484 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (1, 10), "Zygote"] 4.460 μs (5%) 1.83 KiB (1%) 44
["value_and_pullback!", (10, 1), "ChainRules{Zygote}"] 4.155 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 1), "Enzyme (reverse)"] 93.602 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiff"] 482.082 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "Zygote"] 4.118 μs (5%) 1.34 KiB (1%) 37
["value_and_pullback!", (10, 10), "ChainRules{Zygote}"] 4.664 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback!", (10, 10), "ReverseDiff"] 11.902 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "Zygote"] 4.633 μs (5%) 2.61 KiB (1%) 41
["value_and_pullback", (1, 1), "ChainRules{Zygote}"] 3.694 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 1), "Enzyme (reverse)"] 30.358 ns (5%)
["value_and_pullback", (1, 1), "Zygote"] 3.669 μs (5%) 1.08 KiB (1%) 38
["value_and_pullback", (1, 10), "ChainRules{Zygote}"] 4.455 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (1, 10), "Zygote"] 4.427 μs (5%) 1.81 KiB (1%) 43
["value_and_pullback", (10, 1), "ChainRules{Zygote}"] 4.118 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 1), "Enzyme (reverse)"] 127.466 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiff"] 565.202 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "Zygote"] 4.099 μs (5%) 1.34 KiB (1%) 37
["value_and_pullback", (10, 10), "ChainRules{Zygote}"] 4.647 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (10, 10), "ReverseDiff"] 12.093 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "Zygote"] 4.620 μs (5%) 2.61 KiB (1%) 41
["value_and_pushforward!", (1, 1), "Diffractor (forward)"] 21.344 ns (5%)
["value_and_pushforward!", (1, 1), "Enzyme (forward)"] 30.217 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiff"] 41.025 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiff"] 8.575 ns (5%)
["value_and_pushforward!", (1, 1), "PolyesterForwardDiff"] 12.165 ns (5%)
["value_and_pushforward!", (1, 10), "Diffractor (forward)"] 671.413 μs (5%) 105.27 KiB (1%) 3565
["value_and_pushforward!", (1, 10), "Enzyme (forward)"] 376.772 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiff"] 661.681 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiff"] 201.259 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (1, 10), "PolyesterForwardDiff"] 200.865 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "Diffractor (forward)"] 157.137 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "Enzyme (forward)"] 55.226 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiff"] 168.043 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiff"] 97.361 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 1), "PolyesterForwardDiff"] 119.726 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "Diffractor (forward)"] 311.392 μs (5%) 53.83 KiB (1%) 1815
["value_and_pushforward!", (10, 10), "Enzyme (forward)"] 539.418 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiff"] 1.080 μs (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiff"] 438.545 ns (5%) 816 bytes (1%) 4
["value_and_pushforward!", (10, 10), "PolyesterForwardDiff"] 395.595 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "Diffractor (forward)"] 21.152 ns (5%)
["value_and_pushforward", (1, 1), "Enzyme (forward)"] 30.097 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiff"] 39.965 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiff"] 7.421 ns (5%)
["value_and_pushforward", (1, 1), "PolyesterForwardDiff"] 11.944 ns (5%)
["value_and_pushforward", (1, 10), "Diffractor (forward)"] 670.272 μs (5%) 105.27 KiB (1%) 3565
["value_and_pushforward", (1, 10), "Enzyme (forward)"] 525.848 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiff"] 813.326 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiff"] 366.146 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (1, 10), "PolyesterForwardDiff"] 363.538 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "Diffractor (forward)"] 154.236 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "Enzyme (forward)"] 66.407 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiff"] 186.693 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiff"] 99.444 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 1), "PolyesterForwardDiff"] 97.415 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "Diffractor (forward)"] 310.530 μs (5%) 53.83 KiB (1%) 1815
["value_and_pushforward", (10, 10), "Enzyme (forward)"] 771.696 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiff"] 1.248 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiff"] 714.561 ns (5%) 1.22 KiB (1%) 7
["value_and_pushforward", (10, 10), "PolyesterForwardDiff"] 680.106 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  2445 MHz       5136 s          0 s        236 s      12481 s          0 s
       #2  2634 MHz       5038 s          0 s        267 s      12542 s          0 s
       #3  3246 MHz       4367 s          0 s        230 s      13256 s          0 s
       #4  3244 MHz       4216 s          0 s        262 s      13368 s          0 s
  Memory: 15.606494903564453 GB (13926.65625 MB free)
  Uptime: 1790.79 sec
  Load Avg:  1.02  1.03  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Baseline result

Benchmark Report for /home/runner/work/DifferentiationInterface.jl/DifferentiationInterface.jl

Job Properties

  • Time of benchmark: 11 Mar 2024 - 16:32
  • Package commit: 83d370
  • Julia commit: bd47ec
  • Julia command flags: None
  • Environment variables: None

Results

Below is a table of this job's results, obtained by running the benchmarks.
The values listed in the ID column have the structure [parent_group, child_group, ..., key], and can be used to
index into the BaseBenchmarks suite to retrieve the corresponding benchmarks.
The percentages accompanying time and memory values in the below table are noise tolerances. The "true"
time/memory value for a given benchmark is expected to fall within this percentage of the reported value.
An empty cell means that the value was zero.

ID time GC time memory allocations
["derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 69.000 ns (5%)
["derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 69.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 70.000 ns (5%)
["derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{custom}()"] 40.000 ns (5%)
["derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 29.000 ns (5%)
["derivative", (1, 1), "ZygoteBackend{custom}()"] 4.488 μs (5%) 1.16 KiB (1%) 41
["derivative", (1, 1), "ZygoteBackend{fallback}()"] 4.488 μs (5%) 1.16 KiB (1%) 41
["gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 911.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 911.000 ns (5%) 1.41 KiB (1%) 10
["gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 130.000 ns (5%)
["gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 250.000 ns (5%)
["gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 450.000 ns (5%) 144 bytes (1%) 1
["gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 2.395 μs (5%) 2.81 KiB (1%) 20
["gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 561.000 ns (5%) 1.84 KiB (1%) 4
["gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 801.000 ns (5%) 2.19 KiB (1%) 10
["gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 290.000 ns (5%) 512 bytes (1%) 2
["gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 601.000 ns (5%) 1.22 KiB (1%) 18
["gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 601.000 ns (5%) 1.25 KiB (1%) 19
["gradient!", (10, 1), "ZygoteBackend{custom}()"] 220.000 ns (5%) 576 bytes (1%) 6
["gradient!", (10, 1), "ZygoteBackend{fallback}()"] 5.430 μs (5%) 1.39 KiB (1%) 38
["gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 941.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 941.000 ns (5%) 1.55 KiB (1%) 11
["gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 160.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 180.000 ns (5%) 144 bytes (1%) 1
["gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.252 μs (5%) 400 bytes (1%) 6
["gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.603 μs (5%) 2.95 KiB (1%) 21
["gradient", (10, 1), "ForwardDiffBackend{custom}()"] 581.000 ns (5%) 1.98 KiB (1%) 5
["gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 821.000 ns (5%) 2.33 KiB (1%) 11
["gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 321.000 ns (5%) 656 bytes (1%) 3
["gradient", (10, 1), "ReverseDiffBackend{custom}()"] 611.000 ns (5%) 1.36 KiB (1%) 19
["gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 621.000 ns (5%) 1.39 KiB (1%) 20
["gradient", (10, 1), "ZygoteBackend{custom}()"] 200.000 ns (5%) 576 bytes (1%) 6
["gradient", (10, 1), "ZygoteBackend{fallback}()"] 5.800 μs (5%) 1.53 KiB (1%) 39
["jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 9.207 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 9.217 μs (5%) 7.31 KiB (1%) 52
["jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 10.230 μs (5%) 19.34 KiB (1%) 202
["jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.190 μs (5%) 14.81 KiB (1%) 122
["jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.383 μs (5%) 4.09 KiB (1%) 8
["jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.868 μs (5%) 8.25 KiB (1%) 42
["jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.532 μs (5%) 3.67 KiB (1%) 9
["jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.724 μs (5%) 6.95 KiB (1%) 91
["jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 130.143 μs (5%) 77.47 KiB (1%) 922
["jacobian!", (10, 10), "ZygoteBackend{custom}()"] 140.672 μs (5%) 42.03 KiB (1%) 951
["jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 54.201 μs (5%) 29.03 KiB (1%) 462
["jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 31.168 μs (5%) 9.89 KiB (1%) 47
["jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 6.443 μs (5%) 8.47 KiB (1%) 55
["jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 11.391 μs (5%) 19.33 KiB (1%) 201
["jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.609 μs (5%) 15.97 KiB (1%) 125
["jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 17.412 μs (5%) 4.97 KiB (1%) 9
["jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 4.068 μs (5%) 9.41 KiB (1%) 45
["jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 2.444 μs (5%) 4.83 KiB (1%) 12
["jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 154.208 μs (5%) 7.83 KiB (1%) 92
["jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 129.262 μs (5%) 78.62 KiB (1%) 925
["jacobian", (10, 10), "ZygoteBackend{custom}()"] 180.778 μs (5%) 42.02 KiB (1%) 950
["jacobian", (10, 10), "ZygoteBackend{fallback}()"] 63.078 μs (5%) 30.19 KiB (1%) 465
["multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 380.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 390.000 ns (5%) 288 bytes (1%) 2
["multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 691.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 691.000 ns (5%) 768 bytes (1%) 7
["multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 280.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 210.000 ns (5%) 368 bytes (1%) 2
["multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 61.184 μs (5%) 19.98 KiB (1%) 481
["multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 61.625 μs (5%) 19.98 KiB (1%) 481
["multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 510.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 511.000 ns (5%) 576 bytes (1%) 4
["multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.292 μs (5%) 1.12 KiB (1%) 13
["multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 852.000 ns (5%) 1.03 KiB (1%) 9
["multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 300.000 ns (5%) 512 bytes (1%) 3
["multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 351.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 360.000 ns (5%) 656 bytes (1%) 4
["multiderivative", (1, 10), "ZygoteBackend{custom}()"] 61.535 μs (5%) 20.27 KiB (1%) 483
["multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 61.344 μs (5%) 20.27 KiB (1%) 483
["pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["pullback!", (1, 1), "ZygoteBackend{fallback}()"] 4.458 μs (5%) 1.16 KiB (1%) 41
["pullback!", (1, 10), "ZygoteBackend{fallback}()"] 5.951 μs (5%) 1.89 KiB (1%) 46
["pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 110.000 ns (5%)
["pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 591.000 ns (5%) 1.25 KiB (1%) 19
["pullback!", (10, 1), "ZygoteBackend{fallback}()"] 5.761 μs (5%) 1.39 KiB (1%) 38
["pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.784 μs (5%) 7.72 KiB (1%) 92
["pullback!", (10, 10), "ZygoteBackend{fallback}()"] 5.260 μs (5%) 2.66 KiB (1%) 42
["pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["pullback", (1, 1), "ZygoteBackend{fallback}()"] 4.388 μs (5%) 1.08 KiB (1%) 37
["pullback", (1, 10), "ZygoteBackend{fallback}()"] 5.861 μs (5%) 1.83 KiB (1%) 43
["pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 140.000 ns (5%) 144 bytes (1%) 1
["pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 601.000 ns (5%) 1.39 KiB (1%) 20
["pullback", (10, 1), "ZygoteBackend{fallback}()"] 5.651 μs (5%) 1.34 KiB (1%) 36
["pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.944 μs (5%) 7.86 KiB (1%) 93
["pullback", (10, 10), "ZygoteBackend{fallback}()"] 5.130 μs (5%) 2.62 KiB (1%) 41
["pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 60.000 ns (5%)
["pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 400.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 671.000 ns (5%) 768 bytes (1%) 7
["pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 90.000 ns (5%)
["pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 270.000 ns (5%) 288 bytes (1%) 2
["pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 100.000 ns (5%) 224 bytes (1%) 1
["pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.052 μs (5%) 1.45 KiB (1%) 12
["pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 381.000 ns (5%) 816 bytes (1%) 4
["pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 100.000 ns (5%) 80 bytes (1%) 3
["pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 741.000 ns (5%) 576 bytes (1%) 4
["pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 801.000 ns (5%) 1.03 KiB (1%) 9
["pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 350.000 ns (5%) 656 bytes (1%) 4
["pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 210.000 ns (5%) 288 bytes (1%) 2
["pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 140.000 ns (5%) 224 bytes (1%) 1
["pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 811.000 ns (5%) 1008 bytes (1%) 7
["pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.292 μs (5%) 1.88 KiB (1%) 15
["pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 631.000 ns (5%) 1.22 KiB (1%) 7
["value_and_derivative", (1, 1), "EnzymeForwardBackend{custom}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeForwardBackend{fallback}()"] 70.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{custom}()"] 70.000 ns (5%)
["value_and_derivative", (1, 1), "EnzymeReverseBackend{fallback}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 70.000 ns (5%)
["value_and_derivative", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{custom}()"] 49.000 ns (5%)
["value_and_derivative", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_derivative", (1, 1), "PolyesterForwardDiffBackend{custom,4}()"] 40.000 ns (5%)
["value_and_derivative", (1, 1), "ZygoteBackend{custom}()"] 4.429 μs (5%) 1.14 KiB (1%) 40
["value_and_derivative", (1, 1), "ZygoteBackend{fallback}()"] 4.428 μs (5%) 1.14 KiB (1%) 40
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{custom}()"] 922.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeForwardBackend{fallback}()"] 922.000 ns (5%) 1.41 KiB (1%) 10
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{custom}()"] 140.000 ns (5%)
["value_and_gradient!", (10, 1), "EnzymeReverseBackend{fallback}()"] 150.000 ns (5%)
["value_and_gradient!", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 450.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.592 μs (5%) 2.81 KiB (1%) 20
["value_and_gradient!", (10, 1), "ForwardDiffBackend{custom}()"] 571.000 ns (5%) 1.84 KiB (1%) 4
["value_and_gradient!", (10, 1), "ForwardDiffBackend{fallback}()"] 811.000 ns (5%) 2.19 KiB (1%) 10
["value_and_gradient!", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 300.000 ns (5%) 512 bytes (1%) 2
["value_and_gradient!", (10, 1), "ReverseDiffBackend{custom}()"] 591.000 ns (5%) 1.22 KiB (1%) 18
["value_and_gradient!", (10, 1), "ReverseDiffBackend{fallback}()"] 601.000 ns (5%) 1.25 KiB (1%) 19
["value_and_gradient!", (10, 1), "ZygoteBackend{custom}()"] 220.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient!", (10, 1), "ZygoteBackend{fallback}()"] 5.840 μs (5%) 1.44 KiB (1%) 40
["value_and_gradient", (10, 1), "EnzymeForwardBackend{custom}()"] 951.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeForwardBackend{fallback}()"] 951.000 ns (5%) 1.55 KiB (1%) 11
["value_and_gradient", (10, 1), "EnzymeReverseBackend{custom}()"] 170.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "EnzymeReverseBackend{fallback}()"] 190.000 ns (5%) 144 bytes (1%) 1
["value_and_gradient", (10, 1), "FiniteDiffBackend{custom,Val{:central}}()"] 1.263 μs (5%) 400 bytes (1%) 6
["value_and_gradient", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.613 μs (5%) 2.95 KiB (1%) 21
["value_and_gradient", (10, 1), "ForwardDiffBackend{custom}()"] 691.000 ns (5%) 2.03 KiB (1%) 7
["value_and_gradient", (10, 1), "ForwardDiffBackend{fallback}()"] 841.000 ns (5%) 2.33 KiB (1%) 11
["value_and_gradient", (10, 1), "PolyesterForwardDiffBackend{custom,4}()"] 340.000 ns (5%) 656 bytes (1%) 3
["value_and_gradient", (10, 1), "ReverseDiffBackend{custom}()"] 622.000 ns (5%) 1.36 KiB (1%) 19
["value_and_gradient", (10, 1), "ReverseDiffBackend{fallback}()"] 621.000 ns (5%) 1.39 KiB (1%) 20
["value_and_gradient", (10, 1), "ZygoteBackend{custom}()"] 210.000 ns (5%) 576 bytes (1%) 6
["value_and_gradient", (10, 1), "ZygoteBackend{fallback}()"] 5.901 μs (5%) 1.58 KiB (1%) 41
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{custom}()"] 6.081 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "EnzymeForwardBackend{fallback}()"] 5.842 μs (5%) 7.31 KiB (1%) 52
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 10.049 μs (5%) 19.34 KiB (1%) 202
["value_and_jacobian!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.210 μs (5%) 14.81 KiB (1%) 122
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{custom}()"] 1.412 μs (5%) 4.09 KiB (1%) 8
["value_and_jacobian!", (10, 10), "ForwardDiffBackend{fallback}()"] 3.808 μs (5%) 8.25 KiB (1%) 42
["value_and_jacobian!", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.533 μs (5%) 3.67 KiB (1%) 9
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{custom}()"] 12.824 μs (5%) 6.95 KiB (1%) 91
["value_and_jacobian!", (10, 10), "ReverseDiffBackend{fallback}()"] 130.935 μs (5%) 77.47 KiB (1%) 922
["value_and_jacobian!", (10, 10), "ZygoteBackend{custom}()"] 135.754 μs (5%) 42.03 KiB (1%) 951
["value_and_jacobian!", (10, 10), "ZygoteBackend{fallback}()"] 52.008 μs (5%) 29.03 KiB (1%) 462
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{custom}()"] 4.008 μs (5%) 9.89 KiB (1%) 47
["value_and_jacobian", (10, 10), "EnzymeForwardBackend{fallback}()"] 6.011 μs (5%) 8.47 KiB (1%) 55
["value_and_jacobian", (10, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 11.171 μs (5%) 19.36 KiB (1%) 202
["value_and_jacobian", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 10.340 μs (5%) 15.97 KiB (1%) 125
["value_and_jacobian", (10, 10), "ForwardDiffBackend{custom}()"] 1.493 μs (5%) 5.00 KiB (1%) 10
["value_and_jacobian", (10, 10), "ForwardDiffBackend{fallback}()"] 4.088 μs (5%) 9.41 KiB (1%) 45
["value_and_jacobian", (10, 10), "PolyesterForwardDiffBackend{custom,4}()"] 1.753 μs (5%) 4.83 KiB (1%) 12
["value_and_jacobian", (10, 10), "ReverseDiffBackend{custom}()"] 13.305 μs (5%) 7.86 KiB (1%) 93
["value_and_jacobian", (10, 10), "ReverseDiffBackend{fallback}()"] 131.676 μs (5%) 78.62 KiB (1%) 925
["value_and_jacobian", (10, 10), "ZygoteBackend{custom}()"] 141.565 μs (5%) 42.05 KiB (1%) 951
["value_and_jacobian", (10, 10), "ZygoteBackend{fallback}()"] 52.738 μs (5%) 30.19 KiB (1%) 465
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{custom}()"] 380.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "EnzymeForwardBackend{fallback}()"] 390.000 ns (5%) 288 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 701.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 701.000 ns (5%) 768 bytes (1%) 7
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{custom}()"] 290.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_multiderivative!", (1, 10), "ZygoteBackend{custom}()"] 61.435 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative!", (1, 10), "ZygoteBackend{fallback}()"] 61.204 μs (5%) 19.98 KiB (1%) 481
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{custom}()"] 511.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "EnzymeForwardBackend{fallback}()"] 521.000 ns (5%) 576 bytes (1%) 4
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{custom,Val{:central}}()"] 1.263 μs (5%) 1.12 KiB (1%) 13
["value_and_multiderivative", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 852.000 ns (5%) 1.03 KiB (1%) 9
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{custom}()"] 310.000 ns (5%) 512 bytes (1%) 3
["value_and_multiderivative", (1, 10), "ForwardDiffBackend{fallback}()"] 360.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "PolyesterForwardDiffBackend{custom,4}()"] 361.000 ns (5%) 656 bytes (1%) 4
["value_and_multiderivative", (1, 10), "ZygoteBackend{custom}()"] 59.782 μs (5%) 20.27 KiB (1%) 483
["value_and_multiderivative", (1, 10), "ZygoteBackend{fallback}()"] 59.902 μs (5%) 20.27 KiB (1%) 483
["value_and_pullback!", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["value_and_pullback!", (1, 1), "ZygoteBackend{fallback}()"] 4.438 μs (5%) 1.14 KiB (1%) 40
["value_and_pullback!", (1, 10), "ZygoteBackend{fallback}()"] 5.961 μs (5%) 1.88 KiB (1%) 45
["value_and_pullback!", (10, 1), "EnzymeReverseBackend{fallback}()"] 120.000 ns (5%)
["value_and_pullback!", (10, 1), "ReverseDiffBackend{fallback}()"] 581.000 ns (5%) 1.25 KiB (1%) 19
["value_and_pullback!", (10, 1), "ZygoteBackend{fallback}()"] 5.761 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback!", (10, 10), "ReverseDiffBackend{fallback}()"] 12.704 μs (5%) 7.72 KiB (1%) 92
["value_and_pullback!", (10, 10), "ZygoteBackend{fallback}()"] 5.269 μs (5%) 2.66 KiB (1%) 42
["value_and_pullback", (1, 1), "EnzymeReverseBackend{fallback}()"] 70.000 ns (5%)
["value_and_pullback", (1, 1), "ZygoteBackend{fallback}()"] 4.438 μs (5%) 1.12 KiB (1%) 39
["value_and_pullback", (1, 10), "ZygoteBackend{fallback}()"] 5.941 μs (5%) 1.86 KiB (1%) 44
["value_and_pullback", (10, 1), "EnzymeReverseBackend{fallback}()"] 141.000 ns (5%) 144 bytes (1%) 1
["value_and_pullback", (10, 1), "ReverseDiffBackend{fallback}()"] 591.000 ns (5%) 1.39 KiB (1%) 20
["value_and_pullback", (10, 1), "ZygoteBackend{fallback}()"] 5.730 μs (5%) 1.39 KiB (1%) 38
["value_and_pullback", (10, 10), "ReverseDiffBackend{fallback}()"] 12.904 μs (5%) 7.86 KiB (1%) 93
["value_and_pullback", (10, 10), "ZygoteBackend{fallback}()"] 5.220 μs (5%) 2.66 KiB (1%) 42
["value_and_pushforward!", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["value_and_pushforward!", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_pushforward!", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_pushforward!", (1, 10), "EnzymeForwardBackend{fallback}()"] 410.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 661.000 ns (5%) 768 bytes (1%) 7
["value_and_pushforward!", (1, 10), "ForwardDiffBackend{fallback}()"] 210.000 ns (5%) 368 bytes (1%) 2
["value_and_pushforward!", (10, 1), "EnzymeForwardBackend{fallback}()"] 89.000 ns (5%)
["value_and_pushforward!", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 200.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward!", (10, 1), "ForwardDiffBackend{fallback}()"] 100.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward!", (10, 10), "EnzymeForwardBackend{fallback}()"] 561.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward!", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.071 μs (5%) 1.45 KiB (1%) 12
["value_and_pushforward!", (10, 10), "ForwardDiffBackend{fallback}()"] 390.000 ns (5%) 816 bytes (1%) 4
["value_and_pushforward", (1, 1), "EnzymeForwardBackend{fallback}()"] 60.000 ns (5%)
["value_and_pushforward", (1, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 69.000 ns (5%)
["value_and_pushforward", (1, 1), "ForwardDiffBackend{fallback}()"] 40.000 ns (5%)
["value_and_pushforward", (1, 10), "EnzymeForwardBackend{fallback}()"] 550.000 ns (5%) 576 bytes (1%) 4
["value_and_pushforward", (1, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 812.000 ns (5%) 1.03 KiB (1%) 9
["value_and_pushforward", (1, 10), "ForwardDiffBackend{fallback}()"] 360.000 ns (5%) 656 bytes (1%) 4
["value_and_pushforward", (10, 1), "EnzymeForwardBackend{fallback}()"] 100.000 ns (5%)
["value_and_pushforward", (10, 1), "FiniteDiffBackend{fallback,Val{:central}}()"] 220.000 ns (5%) 288 bytes (1%) 2
["value_and_pushforward", (10, 1), "ForwardDiffBackend{fallback}()"] 120.000 ns (5%) 224 bytes (1%) 1
["value_and_pushforward", (10, 10), "EnzymeForwardBackend{fallback}()"] 831.000 ns (5%) 1008 bytes (1%) 7
["value_and_pushforward", (10, 10), "FiniteDiffBackend{fallback,Val{:central}}()"] 1.273 μs (5%) 1.88 KiB (1%) 15
["value_and_pushforward", (10, 10), "ForwardDiffBackend{fallback}()"] 641.000 ns (5%) 1.22 KiB (1%) 7

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["derivative", (1, 1)]
  • ["gradient!", (10, 1)]
  • ["gradient", (10, 1)]
  • ["jacobian!", (10, 10)]
  • ["jacobian", (10, 10)]
  • ["multiderivative!", (1, 10)]
  • ["multiderivative", (1, 10)]
  • ["pullback!", (1, 1)]
  • ["pullback!", (1, 10)]
  • ["pullback!", (10, 1)]
  • ["pullback!", (10, 10)]
  • ["pullback", (1, 1)]
  • ["pullback", (1, 10)]
  • ["pullback", (10, 1)]
  • ["pullback", (10, 10)]
  • ["pushforward!", (1, 1)]
  • ["pushforward!", (1, 10)]
  • ["pushforward!", (10, 1)]
  • ["pushforward!", (10, 10)]
  • ["pushforward", (1, 1)]
  • ["pushforward", (1, 10)]
  • ["pushforward", (10, 1)]
  • ["pushforward", (10, 10)]
  • ["value_and_derivative", (1, 1)]
  • ["value_and_gradient!", (10, 1)]
  • ["value_and_gradient", (10, 1)]
  • ["value_and_jacobian!", (10, 10)]
  • ["value_and_jacobian", (10, 10)]
  • ["value_and_multiderivative!", (1, 10)]
  • ["value_and_multiderivative", (1, 10)]
  • ["value_and_pullback!", (1, 1)]
  • ["value_and_pullback!", (1, 10)]
  • ["value_and_pullback!", (10, 1)]
  • ["value_and_pullback!", (10, 10)]
  • ["value_and_pullback", (1, 1)]
  • ["value_and_pullback", (1, 10)]
  • ["value_and_pullback", (10, 1)]
  • ["value_and_pullback", (10, 10)]
  • ["value_and_pushforward!", (1, 1)]
  • ["value_and_pushforward!", (1, 10)]
  • ["value_and_pushforward!", (10, 1)]
  • ["value_and_pushforward!", (10, 10)]
  • ["value_and_pushforward", (1, 1)]
  • ["value_and_pushforward", (1, 10)]
  • ["value_and_pushforward", (10, 1)]
  • ["value_and_pushforward", (10, 10)]

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: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.4 LTS
  uname: Linux 6.5.0-1015-azure #15~22.04.1-Ubuntu SMP Tue Feb 13 01:15:12 UTC 2024 x86_64 x86_64
  CPU: AMD EPYC 7763 64-Core Processor: 
              speed         user         nice          sys         idle          irq
       #1  3240 MHz       5701 s          0 s        258 s      14646 s          0 s
       #2  3221 MHz       5799 s          0 s        289 s      14512 s          0 s
       #3  2445 MHz       4828 s          0 s        254 s      15523 s          0 s
       #4  2445 MHz       5177 s          0 s        279 s      15144 s          0 s
  Memory: 15.606494903564453 GB (13996.94140625 MB free)
  Uptime: 2066.63 sec
  Load Avg:  1.05  1.04  1.0
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)

Runtime information

Runtime Info
BLAS #threads 2
BLAS.vendor() lbt
Sys.CPU_THREADS 4

lscpu output:

Architecture:                       x86_64
CPU op-mode(s):                     32-bit, 64-bit
Address sizes:                      48 bits physical, 48 bits virtual
Byte Order:                         Little Endian
CPU(s):                             4
On-line CPU(s) list:                0-3
Vendor ID:                          AuthenticAMD
Model name:                         AMD EPYC 7763 64-Core Processor
CPU family:                         25
Model:                              1
Thread(s) per core:                 2
Core(s) per socket:                 2
Socket(s):                          1
Stepping:                           1
BogoMIPS:                           4890.85
Flags:                              fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext invpcid_single vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves clzero xsaveerptr rdpru arat npt nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold v_vmsave_vmload umip vaes vpclmulqdq rdpid fsrm
Virtualization:                     AMD-V
Hypervisor vendor:                  Microsoft
Virtualization type:                full
L1d cache:                          64 KiB (2 instances)
L1i cache:                          64 KiB (2 instances)
L2 cache:                           1 MiB (2 instances)
L3 cache:                           32 MiB (1 instance)
NUMA node(s):                       1
NUMA node0 CPU(s):                  0-3
Vulnerability Gather data sampling: Not affected
Vulnerability Itlb multihit:        Not affected
Vulnerability L1tf:                 Not affected
Vulnerability Mds:                  Not affected
Vulnerability Meltdown:             Not affected
Vulnerability Mmio stale data:      Not affected
Vulnerability Retbleed:             Not affected
Vulnerability Spec rstack overflow: Mitigation; safe RET, no microcode
Vulnerability Spec store bypass:    Vulnerable
Vulnerability Spectre v1:           Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:           Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected
Vulnerability Srbds:                Not affected
Vulnerability Tsx async abort:      Not affected
Cpu Property Value
Brand AMD EPYC 7763 64-Core Processor
Vendor :AMD
Architecture :Unknown
Model Family: 0xaf, Model: 0x01, Stepping: 0x01, Type: 0x00
Cores 16 physical cores, 16 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 512, 32768) kbytes
64 byte cache line size
Address Size 48 bits virtual, 48 bits physical
SIMD 256 bit = 32 byte max. SIMD vector size
Time Stamp Counter TSC is accessible via rdtsc
TSC runs at constant rate (invariant from clock frequency)
Perf. Monitoring Performance Monitoring Counters (PMC) are not supported
Hypervisor Yes, Microsoft

@gdalle gdalle merged commit 04aec00 into main Mar 11, 2024
3 checks passed
@gdalle gdalle deleted the gd/adtypes branch March 12, 2024 10:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Depend on ADTypes?
3 participants