|
| 1 | +#= |
| 2 | +INTRODUCTION OF THIS BENCHMARK: |
| 3 | +
|
| 4 | +We test here the function `hess_residual_coord!` for ADNLPModels with different backends: |
| 5 | + - ADNLPModels.SparseADJacobian |
| 6 | + - ADNLPModels.SparseReverseADHessian |
| 7 | +=# |
| 8 | +using ForwardDiff, SparseConnectivityTracer, SparseMatrixColorings |
| 9 | + |
| 10 | +include("additional_backends.jl") |
| 11 | + |
| 12 | +data_types = [Float32, Float64] |
| 13 | + |
| 14 | +benchmark_list = [:optimized] |
| 15 | + |
| 16 | +benchmarked_hessian_backend = Dict( |
| 17 | + "sparse" => ADNLPModels.SparseADHessian, |
| 18 | + #"sparse-reverse" => ADNLPModels.SparseReverseADHessian, #failed |
| 19 | +) |
| 20 | +get_backend_list(::Val{:optimized}) = keys(benchmarked_hessian_backend) |
| 21 | +get_backend(::Val{:optimized}, b::String) = benchmarked_hessian_backend[b] |
| 22 | + |
| 23 | +problem_sets = Dict("scalable_nls" => scalable_nls_problems) |
| 24 | +nscal = 1000 |
| 25 | + |
| 26 | +name_backend = "hessian_residual_backend" |
| 27 | +fun = hess_coord_residual |
| 28 | +@info "Initialize $(fun) benchmark" |
| 29 | +SUITE["$(fun)"] = BenchmarkGroup() |
| 30 | + |
| 31 | +for f in benchmark_list |
| 32 | + SUITE["$(fun)"][f] = BenchmarkGroup() |
| 33 | + for T in data_types |
| 34 | + SUITE["$(fun)"][f][T] = BenchmarkGroup() |
| 35 | + for s in keys(problem_sets) |
| 36 | + SUITE["$(fun)"][f][T][s] = BenchmarkGroup() |
| 37 | + for b in get_backend_list(Val(f)) |
| 38 | + SUITE["$(fun)"][f][T][s][b] = BenchmarkGroup() |
| 39 | + backend = get_backend(Val(f), b) |
| 40 | + for pb in problem_sets[s] |
| 41 | + n = eval(Meta.parse("OptimizationProblems.get_" * pb * "_nvar(n = $(nscal))")) |
| 42 | + m = eval(Meta.parse("OptimizationProblems.get_" * pb * "_ncon(n = $(nscal))")) |
| 43 | + nequ = eval(Meta.parse("OptimizationProblems.get_" * pb * "_nls_nequ(n = $(nscal))")) |
| 44 | + @info " $(pb): $T with $n vars, $nequ residuals and $m cons" |
| 45 | + v = 10 * T[-(-1.0)^i for i = 1:nequ] |
| 46 | + SUITE["$(fun)"][f][T][s][b][pb] = @benchmarkable $fun(nls, get_x0(nls), $v) setup = |
| 47 | + (nls = set_adnls($pb, $(name_backend), $backend, $nscal, $T)) |
| 48 | + end |
| 49 | + end |
| 50 | + end |
| 51 | + end |
| 52 | +end |
0 commit comments