Skip to content

Commit fd50028

Browse files
Automatic build\nPublished by build of: SciML/SciMLBenchmarks.jl@4a18bd4
1 parent 300a0ba commit fd50028

7 files changed

Lines changed: 30 additions & 26 deletions

File tree

markdown/AutomaticDifferentiationSparse/BrusselatorSparseAD.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ Test Passed
109109

110110
```julia
111111
c1 = ADTypes.column_coloring(S1, GreedyColoringAlgorithm())
112-
@test length(unique(c1)) > 0
112+
@test length(unique(c1)) > 0 # basic sanity check
113113
```
114114

115115
```
@@ -134,7 +134,7 @@ J1 = DI.jacobian!(
134134
brusselator_2d!, similar(x0_32), similar(S1, eltype(x0_32)), prep, backend, x0_32
135135
)
136136

137-
@test nnz(J1) > 0
137+
@test nnz(J1) > 0 # basic sanity check
138138
```
139139

140140
```
@@ -347,8 +347,8 @@ let
347347
N_values,
348348
td2 ./ td1;
349349
lw = 2,
350-
linestyle = :dot,
351-
markershape = :utriangle,
350+
linestyle = :auto,
351+
markershape = :auto,
352352
label = "sparsity detection speedup"
353353
)
354354
plot!(

markdown/AutomaticDifferentiationSparse/ManualLoopDiffusionSparseAD.md

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ title: "Diffusion operator loop sparse AD benchmarks"
55
```julia
66
using DifferentiationInterface
77
using DifferentiationInterfaceTest
8+
using Chairmarks, DataFrames
89
using LinearAlgebra
910
using SparseConnectivityTracer: TracerSparsityDetector
1011
using 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))
119120
table = 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

126128
Markdown.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
143145
eCore.FFIABI, false, false}())
144146
145147
146148
| 2
147-
2 25.2s
149+
2 28.8s
148150
ADTypes.AutoEnzyme(mode=EnzymeCore.ForwardMode{false, EnzymeCore.FFIABI,
149151
false, 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
168170
eMatrixColorings.GreedyColoringAlgorithm{:direct, 1, Tuple{SparseMatrixColo
169171
rings.NaturalOrder}}((SparseMatrixColorings.NaturalOrder(),), false))
170172
| 2
171-
2 4.3s
173+
2 4.2s
172174
ADTypes.AutoSparse(dense_ad=ADTypes.AutoEnzyme(mode=EnzymeCore.ForwardMod
173175
e{false, EnzymeCore.FFIABI, false, false, false}()), sparsity_detector=Spar
174176
seConnectivityTracer.TracerSparsityDetector(), coloring_algorithm=SparseMat
175177
rixColorings.GreedyColoringAlgorithm{:direct, 1, Tuple{SparseMatrixColoring
176178
s.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

-1.52 KB
Loading
-285 Bytes
Loading
117 Bytes
Loading

script/AutomaticDifferentiationSparse/BrusselatorSparseAD.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ S2 = ADTypes.jacobian_sparsity(
7676

7777

7878
c1 = ADTypes.column_coloring(S1, GreedyColoringAlgorithm())
79-
@test length(unique(c1)) > 0
79+
@test length(unique(c1)) > 0 # basic sanity check
8080

8181

8282
backend = AutoSparse(
@@ -90,7 +90,7 @@ J1 = DI.jacobian!(
9090
brusselator_2d!, similar(x0_32), similar(S1, eltype(x0_32)), prep, backend, x0_32
9191
)
9292

93-
@test nnz(J1) > 0
93+
@test nnz(J1) > 0 # basic sanity check
9494

9595

9696
N_values = 2 .^ (2:8)
@@ -203,8 +203,8 @@ let
203203
N_values,
204204
td2 ./ td1;
205205
lw = 2,
206-
linestyle = :dot,
207-
markershape = :utriangle,
206+
linestyle = :auto,
207+
markershape = :auto,
208208
label = "sparsity detection speedup"
209209
)
210210
plot!(

script/AutomaticDifferentiationSparse/ManualLoopDiffusionSparseAD.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
using DifferentiationInterface
33
using DifferentiationInterfaceTest
4+
using Chairmarks, DataFrames
45
using LinearAlgebra
56
using SparseConnectivityTracer: TracerSparsityDetector
67
using SparseMatrixColorings
@@ -61,12 +62,13 @@ u = rand(1000)
6162
scenarios = [Scenario{:jacobian, :out}(Diffusion, u; res1 = DDiffusion(u))];
6263

6364

64-
df = benchmark_differentiation(bcks, scenarios)
65+
df = DataFrame(benchmark_differentiation(bcks, scenarios))
6566
table = PrettyTables.pretty_table(
6667
String,
6768
df;
6869
backend = :markdown,
69-
formatters = [PrettyTables.fmt__printf("%.1e")]
70+
column_labels = names(df),
71+
formatters = [PrettyTables.fmt__printf("%.1e")],
7072
)
7173

7274
Markdown.parse(table)

0 commit comments

Comments
 (0)