@@ -5,6 +5,7 @@ title: "Diffusion operator loop sparse AD benchmarks"
55``` julia
66using DifferentiationInterface
77using DifferentiationInterfaceTest
8+ using Chairmarks, DataFrames
89using LinearAlgebra
910using SparseConnectivityTracer: TracerSparsityDetector
1011using SparseMatrixColorings
@@ -115,12 +116,13 @@ scenarios = [Scenario{:jacobian, :out}(Diffusion, u; res1 = DDiffusion(u))];
115116## Run Benchmarks
116117
117118``` julia
118- df = benchmark_differentiation (bcks, scenarios)
119+ df = DataFrame ( benchmark_differentiation (bcks, scenarios) )
119120table = PrettyTables. pretty_table (
120121 String,
121122 df;
122123 backend = :markdown ,
123- formatters = [PrettyTables. fmt__printf (" %.1e" )]
124+ column_labels = names (df),
125+ formatters = [PrettyTables. fmt__printf (" %.1e" )],
124126)
125127
126128Markdown. parse (table)
@@ -138,25 +140,25 @@ Testing benchmarks
138140
139141
140142 | 12
141- 12 1m50.6s
143+ 12 1m52.3s
142144 ADTypes.AutoEnzyme(mode=EnzymeCore.ReverseMode{false, false, false, Enzym
143145eCore.FFIABI, false, false}())
144146
145147
146148 | 2
147- 2 25.2s
149+ 2 28.8s
148150 ADTypes.AutoEnzyme(mode=EnzymeCore.ForwardMode{false, EnzymeCore.FFIABI,
149151false, false, false}())
150152
151153
152154 | 2
153- 2 30.8s
155+ 2 30.6s
154156 ADTypes.AutoMooncake()
155157
156158
157159
158160 | 2
159- 2 42.1s
161+ 2 40.7s
160162 ADTypes.AutoForwardDiff()
161163
162164
@@ -168,29 +170,29 @@ SparseConnectivityTracer.TracerSparsityDetector(), coloring_algorithm=Spars
168170eMatrixColorings.GreedyColoringAlgorithm{:direct, 1, Tuple{SparseMatrixColo
169171rings.NaturalOrder}}((SparseMatrixColorings.NaturalOrder(),), false))
170172 | 2
171- 2 4.3s
173+ 2 4.2s
172174 ADTypes.AutoSparse(dense_ad=ADTypes.AutoEnzyme(mode=EnzymeCore.ForwardMod
173175e{false, EnzymeCore.FFIABI, false, false, false}()), sparsity_detector=Spar
174176seConnectivityTracer.TracerSparsityDetector(), coloring_algorithm=SparseMat
175177rixColorings.GreedyColoringAlgorithm{:direct, 1, Tuple{SparseMatrixColoring
176178s.NaturalOrder}}((SparseMatrixColorings.NaturalOrder(),), false)) | 2
177- 2 3.4s
179+ 2 3.3s
178180```
179181
180182
181183
182184| ** backend** | ** scenario** | ** operator** | ** prepared** | ** calls** | ** samples** | ** evals** | ** time** | ** allocs** | ** bytes** | ** gc_fraction** | ** compile_fraction** |
183185| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| -----------------------------------------------------------------------:| ------------------:| ------------:| ---------:| -----------:| ---------:| --------:| ----------:| ---------:| ---------------:| --------------------:|
184- | AutoEnzyme(mode=ReverseMode{false, false, false, FFIABI, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 6.4e+01 | 1 .0e+01 | 1.0e+00 | 9.2e-02 | 2.3e+03 | 2.8e+08 | 1.3e -02 | 0.0e+00 |
185- | AutoEnzyme(mode=ReverseMode{false, false, false, FFIABI, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 6.3e+01 | 1.1e+01 | 1.0e+00 | 9 .0e-02 | 2.3e+03 | 2.8e+08 | 1.3e -02 | 0.0e+00 |
186- | AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 6.3e+01 | 2.8e +01 | 1.0e+00 | 8.9e -03 | 3.2e+03 | 1.8e+07 | 0.0e+00 | 0.0e+00 |
187- | AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 6.3e+01 | 1.1e +02 | 1.0e+00 | 7.3e -03 | 3.2e+03 | 1.8e+07 | 0.0e+00 | 0.0e+00 |
188- | AutoMooncake() | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 1.0e+00 | 2.0e +01 | 1.0e+00 | 4.9e-02 | 7.0e+03 | 3.3e+07 | 0.0e+00 | 0.0e+00 |
186+ | AutoEnzyme(mode=ReverseMode{false, false, false, FFIABI, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 6.4e+01 | 9 .0e+00 | 1.0e+00 | 1.1e-01 | 2.3e+03 | 2.8e+08 | 3.1e -02 | 0.0e+00 |
187+ | AutoEnzyme(mode=ReverseMode{false, false, false, FFIABI, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 6.3e+01 | 9.0e+00 | 1.0e+00 | 1 .0e-01 | 2.3e+03 | 2.8e+08 | 1.5e -02 | 0.0e+00 |
188+ | AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 6.3e+01 | 8.7e +01 | 1.0e+00 | 7.5e -03 | 3.2e+03 | 1.8e+07 | 0.0e+00 | 0.0e+00 |
189+ | AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 6.3e+01 | 1.0e +02 | 1.0e+00 | 7.8e -03 | 3.2e+03 | 1.8e+07 | 0.0e+00 | 0.0e+00 |
190+ | AutoMooncake() | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 1.0e+00 | 1.9e +01 | 1.0e+00 | 4.9e-02 | 7.0e+03 | 3.3e+07 | 0.0e+00 | 0.0e+00 |
189191| AutoMooncake() | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 0.0e+00 | 2.0e+01 | 1.0e+00 | 4.9e-02 | 7.0e+03 | 3.3e+07 | 0.0e+00 | 0.0e+00 |
190192| AutoForwardDiff() | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 8.5e+01 | 1.7e+02 | 1.0e+00 | 5.0e-03 | 1.7e+02 | 1.7e+07 | 0.0e+00 | 0.0e+00 |
191193| AutoForwardDiff() | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 8.4e+01 | 1.8e+02 | 1.0e+00 | 5.0e-03 | 1.7e+02 | 1.7e+07 | 0.0e+00 | 0.0e+00 |
192- | AutoSparse(dense_ad=AutoForwardDiff(), sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm{: direct , 1, Tuple{NaturalOrder}}((NaturalOrder(),), false)) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 2.0e+00 | 3.6e +04 | 1.0e+00 | 1.7e -05 | 8.0e+00 | 9.6e+04 | 0.0e+00 | 0.0e+00 |
194+ | AutoSparse(dense_ad=AutoForwardDiff(), sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm{: direct , 1, Tuple{NaturalOrder}}((NaturalOrder(),), false)) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 2.0e+00 | 3.5e +04 | 1.0e+00 | 1.9e -05 | 8.0e+00 | 9.6e+04 | 0.0e+00 | 0.0e+00 |
193195| AutoSparse(dense_ad=AutoForwardDiff(), sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm{: direct , 1, Tuple{NaturalOrder}}((NaturalOrder(),), false)) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 1.0e+00 | 4.0e+04 | 1.0e+00 | 1.6e-05 | 7.0e+00 | 8.8e+04 | 0.0e+00 | 0.0e+00 |
194- | AutoSparse(dense_ad=AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()), sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm{: direct , 1, Tuple{NaturalOrder}}((NaturalOrder(),), false)) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 2.0e+00 | 3.8e +04 | 1.0e+00 | 1.4e-05 | 1.0e+01 | 9.7e+04 | 0.0e+00 | 0.0e+00 |
195- | AutoSparse(dense_ad=AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()), sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm{: direct , 1, Tuple{NaturalOrder}}((NaturalOrder(),), false)) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 1.0e+00 | 4.3e +04 | 1.0e+00 | 1.4e -05 | 9.0e+00 | 8.9e+04 | 0.0e+00 | 0.0e+00 |
196+ | AutoSparse(dense_ad=AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()), sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm{: direct , 1, Tuple{NaturalOrder}}((NaturalOrder(),), false)) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | value_and_jacobian | 1.0e+00 | 2.0e+00 | 4.0e +04 | 1.0e+00 | 1.4e-05 | 1.0e+01 | 9.7e+04 | 0.0e+00 | 0.0e+00 |
197+ | AutoSparse(dense_ad=AutoEnzyme(mode=ForwardMode{false, FFIABI, false, false, false}()), sparsity_detector=TracerSparsityDetector(), coloring_algorithm=GreedyColoringAlgorithm{: direct , 1, Tuple{NaturalOrder}}((NaturalOrder(),), false)) | Scenario{: jacobian ,: out } Diffusion : Vector{Float64} -> Vector{Float64} | jacobian | 1.0e+00 | 1.0e+00 | 4.6e +04 | 1.0e+00 | 1.3e -05 | 9.0e+00 | 8.9e+04 | 0.0e+00 | 0.0e+00 |
196198
0 commit comments