Core benchmark

Ubuntu Latest

This benchmark suite evaluates 14 optimal control problems on a standard CPU platform using GitHub Actions runners.

Benchmark Configuration:

  • Solvers: Ipopt and MadNLP
  • Models: JuMP, ADNLPModels, ExaModels (CPU)
  • Grid sizes: 200, 500, 1000 discretisation points
  • Discretisation: Trapeze method
  • Tolerance: 1e-6
  • Ipopt strategy: Adaptive barrier parameter
  • Limits: 1000 iterations max, 500s wall time

This configuration focuses on CPU-based solvers and provides a comprehensive comparison across different modelling frameworks.

Note

The linear solver is MUMPS for all experiments.

🖥️ Environment

📅 Timestamp     : 2025-11-09 00:25:11 UTC
🔧 Julia version : 1.11.7
💻 OS            : Linux
🖥️ Machine       : runnervmw9dnm

You can download the exact environment used for this benchmark:

These files allow you to reproduce the benchmark environment and results exactly.

ℹ️ Version info
Julia Version 1.11.7
Commit f2b3dbda30a (2025-09-08 12:10 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 4 × AMD EPYC 7763 64-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, znver3)
Threads: 1 default, 0 interactive, 1 GC (on 4 virtual cores)
Environment:
  JULIA_PKG_SERVER_REGISTRY_PREFERENCE = eager
📦 Package status
Project CTBenchmarks v0.2.3
Status `~/work/CTBenchmarks.jl/CTBenchmarks.jl/Project.toml`
  [6e4b80f9] BenchmarkTools v1.6.3
  [052768ef] CUDA v5.9.2
  [a93c6f00] DataFrames v1.8.1
  [b6b21f68] Ipopt v1.12.1
  [682c06a0] JSON v1.2.1
  [4076af6c] JuMP v1.29.2
  [d72a61cc] MadNLPGPU v0.7.16
  [3b83494e] MadNLPMumps v0.5.1
  [f4238b75] NLPModelsIpopt v0.11.0
  [5f98b655] OptimalControl v1.1.6
  [59046045] OptimalControlProblems v0.3.2
  [bd369af6] Tables v1.12.1
  [ade2ca70] Dates v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [44cfe95a] Pkg v1.11.0
  [de0858da] Printf v1.11.0
  [6462fe0b] Sockets v1.11.0
📚 Complete manifest
Project CTBenchmarks v0.2.3
Status `~/work/CTBenchmarks.jl/CTBenchmarks.jl/Manifest.toml`
  [54578032] ADNLPModels v0.8.13
  [47edcb42] ADTypes v1.18.0
  [14f7f29c] AMD v0.5.3
  [621f4979] AbstractFFTs v1.5.0
  [79e6a3ab] Adapt v4.4.0
  [a9b6321e] Atomix v1.1.2
  [13072b0f] AxisAlgorithms v1.1.0
  [ab4f0b2a] BFloat16s v0.6.0
  [6e4b80f9] BenchmarkTools v1.6.3
  [fa961155] CEnum v0.5.0
 [54762871] CTBase v0.16.2
  [790bbbee] CTDirect v0.17.4
  [1c39547c] CTFlows v0.8.9
  [34c4fa32] CTModels v0.6.9
  [32681960] CTParser v0.7.1
  [052768ef] CUDA v5.9.2
  [1af6417a] CUDA_Runtime_Discovery v1.0.0
  [45b445bb] CUDSS v0.6.1
  [d360d2e6] ChainRulesCore v1.26.0
  [523fee87] CodecBzip2 v0.8.5
  [944b1d66] CodecZlib v0.7.8
  [3da002f7] ColorTypes v0.12.1
  [5ae59095] Colors v0.13.1
  [38540f10] CommonSolve v0.2.4
  [bbf7d656] CommonSubexpressions v0.3.1
  [34da2185] Compat v4.18.1
  [a8cc5b0e] Crayons v4.1.1
  [9a962f9c] DataAPI v1.16.0
  [a93c6f00] DataFrames v1.8.1
  [864edb3b] DataStructures v0.19.3
  [e2d170a0] DataValueInterfaces v1.0.0
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [ffbed154] DocStringExtensions v0.9.5
  [1037b233] ExaModels v0.9.2
  [e2ba6199] ExprTools v0.1.10
  [9aa1b823] FastClosures v0.3.2
  [1a297f60] FillArrays v1.15.0
  [53c48c17] FixedPointNumbers v0.8.5
  [f6369f11] ForwardDiff v1.2.2
  [069b7b12] FunctionWrappers v1.1.3
  [0c68f7d7] GPUArrays v11.2.6
  [46192b85] GPUArraysCore v0.2.0
  [61eb1bfa] GPUCompiler v1.7.2
  [096a3bc2] GPUToolbox v1.0.0
  [34c5aeac] HSL v0.5.1
  [076d061b] HashArrayMappedTries v0.2.0
  [842dd82b] InlineStrings v1.4.5
  [a98d9a8b] Interpolations v0.16.2
  [41ab1584] InvertedIndices v1.3.1
  [b6b21f68] Ipopt v1.12.1
  [92d709cd] IrrationalConstants v0.2.6
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.7.1
  [682c06a0] JSON v1.2.1
  [0f8b85d8] JSON3 v1.14.3
  [4076af6c] JuMP v1.29.2
  [63c18a36] KernelAbstractions v0.9.39
  [40e66cde] LDLFactorizations v0.10.1
  [929cbde3] LLVM v9.4.4
  [8b046642] LLVMLoopInfo v1.0.0
  [b964fa9f] LaTeXStrings v1.4.0
  [5c8ed15e] LinearOperators v2.11.0
  [2ab3a3ac] LogExpFunctions v0.3.29
  [33e6dc65] MKL v0.9.0
  [d8e11817] MLStyle v0.4.17
  [1914dd2f] MacroTools v0.5.16
  [2621e9c9] MadNLP v0.8.12
  [d72a61cc] MadNLPGPU v0.7.16
  [3b83494e] MadNLPMumps v0.5.1
  [b8f27783] MathOptInterface v1.46.0
  [2679e427] Metis v1.5.0
  [e1d29d7a] Missings v1.2.0
  [d8a4904e] MutableArithmetics v1.6.7
  [a4795742] NLPModels v0.21.5
  [f4238b75] NLPModelsIpopt v0.11.0
  [e01155f1] NLPModelsModifiers v0.7.2
  [5da4648a] NVTX v1.0.1
  [77ba4419] NaNMath v1.1.3
  [6fe1bfb0] OffsetArrays v1.17.0
  [5f98b655] OptimalControl v1.1.6
  [59046045] OptimalControlProblems v0.3.2
  [bac558e1] OrderedCollections v1.8.1
  [d96e819e] Parameters v0.12.3
  [69de0a69] Parsers v2.8.3
  [2dfb63ee] PooledArrays v1.4.3
 [aea7be01] PrecompileTools v1.2.1
  [21216c6a] Preferences v1.5.0
  [08abe8d2] PrettyTables v3.1.0
  [be4d8f0f] Quadmath v0.5.13
  [74087812] Random123 v1.7.1
  [e6cf234a] RandomNumbers v1.6.0
  [c84ed2f1] Ratios v0.4.5
  [3cdcf5f2] RecipesBase v1.3.4
  [189a3867] Reexport v1.2.2
  [ae029012] Requires v1.3.1
  [37e2e3b7] ReverseDiff v1.16.1
  [7e506255] ScopedValues v1.5.0
  [6c6a2e73] Scratch v1.3.0
  [91c51154] SentinelArrays v1.4.8
  [ff4d7338] SolverCore v0.3.8
  [a2af1166] SortingAlgorithms v1.2.2
  [9f842d2f] SparseConnectivityTracer v1.1.2
  [0a514795] SparseMatrixColorings v0.4.23
  [276daf66] SpecialFunctions v2.6.1
  [90137ffa] StaticArrays v1.9.15
  [1e83bf80] StaticArraysCore v1.4.4
  [10745b16] Statistics v1.11.1
  [892a3eda] StringManipulation v0.4.1
  [856f2bd8] StructTypes v1.11.0
  [ec057cc2] StructUtils v2.6.0
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.12.1
  [a759f4b9] TimerOutputs v0.5.29
  [e689c965] Tracy v0.1.6
  [3bb67fe8] TranscodingStreams v0.11.3
  [3a884ed6] UnPack v1.0.2
  [013be700] UnsafeAtomics v0.3.0
  [efce3f68] WoodburyMatrices v1.0.0
  [ae81ac8f] ASL_jll v0.1.3+0
  [6e34b625] Bzip2_jll v1.0.9+0
  [d1e2174e] CUDA_Compiler_jll v0.3.0+0
  [4ee394cb] CUDA_Driver_jll v13.0.2+0
  [76a88914] CUDA_Runtime_jll v0.19.2+0
  [4889d778] CUDSS_jll v0.7.1+0
  [017b0a0e] HSL_jll v4.0.4+0
  [e33a78d0] Hwloc_jll v2.12.2+0
  [1d5cc7b8] IntelOpenMP_jll v2025.2.0+0
  [9cc047cb] Ipopt_jll v300.1400.1900+0
  [9c1d0b0a] JuliaNVTXCallbacks_jll v0.2.1+0
  [dad2f222] LLVMExtra_jll v0.0.38+0
  [ad6e5548] LibTracyClient_jll v0.9.1+6
  [94ce4f54] Libiconv_jll v1.18.0+0
  [d00139f3] METIS_jll v5.1.3+0
  [856f044c] MKL_jll v2025.2.0+0
  [d7ed1dd3] MUMPS_seq_jll v500.800.100+0
  [e98f9f5b] NVTX_jll v3.2.2+0
  [656ef2d0] OpenBLAS32_jll v0.3.29+0
  [efe28fd5] OpenSpecFun_jll v0.5.6+0
 [319450e9] SPRAL_jll v2025.5.20+0
 [02c8fc9c] XML2_jll v2.13.9+0
  [a65dc6b1] Xorg_libpciaccess_jll v0.18.1+0
  [1e29f10c] demumble_jll v1.3.0+0
  [1317d2d5] oneTBB_jll v2022.0.0+1
  [0dad84c5] ArgTools v1.1.2
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [ade2ca70] Dates v1.11.0
  [8ba89e20] Distributed v1.11.0
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching v1.11.0
  [9fa8497b] Future v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [4af54fe1] LazyArtifacts v1.11.0
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2 v1.11.0
  [8f399da3] Libdl v1.11.0
  [37e2e46d] LinearAlgebra v1.11.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [a63ad114] Mmap v1.11.0
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.11.0
  [de0858da] Printf v1.11.0
  [9abbd945] Profile v1.11.0
  [3fa0cd96] REPL v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [1a1011a3] SharedArrays v1.11.0
  [6462fe0b] Sockets v1.11.0
  [2f01184e] SparseArrays v1.11.0
  [f489334b] StyledStrings v1.11.0
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [8dfed614] Test v1.11.0
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.1.1+0
  [deac9b47] LibCURL_jll v8.6.0+0
  [e37daf67] LibGit2_jll v1.7.2+0
  [29816b5a] LibSSH2_jll v1.11.0+1
  [c8ffd9c3] MbedTLS_jll v2.28.6+0
  [14a3606d] MozillaCACerts_jll v2023.12.12
  [4536629a] OpenBLAS_jll v0.3.27+1
  [05823500] OpenLibm_jll v0.8.5+0
  [bea87d4a] SuiteSparse_jll v7.7.0+0
  [83775a58] Zlib_jll v1.2.13+1
  [8e850b90] libblastrampoline_jll v5.11.0+0
  [8e850ede] nghttp2_jll v1.59.0+0
  [3f19e933] p7zip_jll v17.4.0+2
Info Packages marked with  and  have new versions available. Those with  may be upgradable, but those with  are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`

📊 Results

Example block output
Benchmarks results:

┌─ Problem: beam
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  11.767 ms | iters: 12     | obj: 8.891342e+00  | CPU:  13.08 KiB
│  │  ✓ | adnlp    | time:  15.649 ms | iters: 12     | obj: 8.891342e+00  | CPU:   1.84 MiB
│  │  ✓ | exa      | time:  11.957 ms | iters: 12     | obj: 8.891342e+00  | CPU:  68.36 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  30.774 ms | iters: 15     | obj: 8.889302e+00  | CPU:  15.89 KiB
│  │  ✓ | adnlp    | time:  40.447 ms | iters: 15     | obj: 8.889302e+00  | CPU:   5.50 MiB
│  │  ✓ | exa      | time:  29.735 ms | iters: 15     | obj: 8.889302e+00  | CPU: 134.52 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  91.493 ms | iters: 25     | obj: 8.888998e+00  | CPU:  24.36 KiB
│  │  ✓ | adnlp    | time: 126.322 ms | iters: 26     | obj: 8.889037e+00  | CPU:  18.03 MiB
│  │  ✓ | exa      | time:  91.997 ms | iters: 26     | obj: 8.889037e+00  | CPU: 251.55 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 157.845 ms | iters: 22     | obj: 8.888988e+00  | CPU:  21.83 KiB
│  │  ✓ | adnlp    | time: 227.516 ms | iters: 22     | obj: 8.889019e+00  | CPU:  30.83 MiB
│  │  ✓ | exa      | time: 150.867 ms | iters: 21     | obj: 8.888958e+00  | CPU: 457.33 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  10.527 ms | iters: 18     | obj: 8.891339e+00  | CPU:   2.02 MiB
│  │  ✓ | adnlp    | time:  15.380 ms | iters: 18     | obj: 8.891339e+00  | CPU:   4.38 MiB
│  │  ✓ | exa      | time:  10.850 ms | iters: 18     | obj: 8.891339e+00  | CPU:   1.93 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  20.796 ms | iters: 16     | obj: 8.889296e+00  | CPU:   4.00 MiB
│  │  ✓ | adnlp    | time:  31.592 ms | iters: 16     | obj: 8.889296e+00  | CPU:   9.26 MiB
│  │  ✓ | exa      | time:  21.733 ms | iters: 16     | obj: 8.889296e+00  | CPU:   3.84 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  52.812 ms | iters: 22     | obj: 8.889005e+00  | CPU:   8.93 MiB
│  │  ✓ | adnlp    | time:  82.167 ms | iters: 22     | obj: 8.889006e+00  | CPU:  23.14 MiB
│  │  ✓ | exa      | time:  55.056 ms | iters: 22     | obj: 8.889005e+00  | CPU:   8.45 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 135.021 ms | iters: 24     | obj: 8.888951e+00  | CPU:  18.65 MiB
│  │  ✓ | adnlp    | time: 204.832 ms | iters: 24     | obj: 8.888951e+00  | CPU:  49.09 MiB
│  │  ✓ | exa      | time: 139.670 ms | iters: 22     | obj: 8.888951e+00  | CPU:  16.35 MiB
│  └─
└─

┌─ Problem: chain
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  11.274 ms | iters: 6      | obj: 5.068916e+00  | CPU:  13.83 KiB
│  │  ✓ | adnlp    | time:  14.360 ms | iters: 6      | obj: 5.068916e+00  | CPU:   3.91 MiB
│  │  ✓ | exa      | time:   8.708 ms | iters: 6      | obj: 5.068916e+00  | CPU:  69.03 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  53.889 ms | iters: 13     | obj: 5.068578e+00  | CPU:  29.19 KiB
│  │  ✓ | adnlp    | time:  65.018 ms | iters: 13     | obj: 5.068578e+00  | CPU:  19.17 MiB
│  │  ✓ | exa      | time:  38.103 ms | iters: 13     | obj: 5.068578e+00  | CPU: 145.53 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  53.605 ms | iters: 6      | obj: 5.068510e+00  | CPU:  13.83 KiB
│  │  ✓ | adnlp    | time:  65.051 ms | iters: 6      | obj: 5.068510e+00  | CPU:  19.35 MiB
│  │  ✓ | exa      | time:  39.029 ms | iters: 6      | obj: 5.068510e+00  | CPU: 250.28 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 125.834 ms | iters: 5      | obj: 5.068487e+00  | CPU:  11.97 KiB
│  │  ✓ | adnlp    | time: 133.694 ms | iters: 5      | obj: 5.068487e+00  | CPU:  33.72 MiB
│  │  ✓ | exa      | time:  80.394 ms | iters: 5      | obj: 5.068487e+00  | CPU: 475.81 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  12.321 ms | iters: 6      | obj: 5.068916e+00  | CPU:   6.31 MiB
│  │  ✓ | adnlp    | time:  12.127 ms | iters: 6      | obj: 5.068916e+00  | CPU:   5.32 MiB
│  │  ✓ | exa      | time:   7.624 ms | iters: 6      | obj: 5.068916e+00  | CPU:   1.71 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  53.280 ms | iters: 13     | obj: 5.068578e+00  | CPU:  15.97 MiB
│  │  ✓ | adnlp    | time:  56.490 ms | iters: 13     | obj: 5.068578e+00  | CPU:  22.67 MiB
│  │  ✓ | exa      | time:  33.965 ms | iters: 13     | obj: 5.068578e+00  | CPU:   4.21 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  56.379 ms | iters: 6      | obj: 5.068510e+00  | CPU:  32.19 MiB
│  │  ✓ | adnlp    | time:  53.383 ms | iters: 6      | obj: 5.068510e+00  | CPU:  24.73 MiB
│  │  ✓ | exa      | time:  30.302 ms | iters: 6      | obj: 5.068510e+00  | CPU:   6.74 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 150.769 ms | iters: 5      | obj: 5.068487e+00  | CPU:  61.85 MiB
│  │  ✓ | adnlp    | time: 137.379 ms | iters: 5      | obj: 5.068487e+00  | CPU:  43.75 MiB
│  │  ✓ | exa      | time:  95.125 ms | iters: 5      | obj: 5.068487e+00  | CPU:  12.72 MiB
│  └─
└─

┌─ Problem: double_oscillator
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   8.071 ms | iters: 4      | obj: 9.103363e-04  | CPU:  10.11 KiB
│  │  ✓ | adnlp    | time:  14.513 ms | iters: 4      | obj: 9.103363e-04  | CPU:   4.44 MiB
│  │  ✓ | exa      | time:   9.386 ms | iters: 4      | obj: 9.103363e-04  | CPU: 101.77 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  17.262 ms | iters: 4      | obj: 9.109247e-04  | CPU:  10.11 KiB
│  │  ✓ | adnlp    | time:  32.626 ms | iters: 4      | obj: 9.109247e-04  | CPU:  11.03 MiB
│  │  ✓ | exa      | time:  20.981 ms | iters: 4      | obj: 9.109247e-04  | CPU: 212.14 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  32.496 ms | iters: 4      | obj: 9.110179e-04  | CPU:  10.11 KiB
│  │  ✓ | adnlp    | time:  66.809 ms | iters: 4      | obj: 9.110179e-04  | CPU:  22.02 MiB
│  │  ✓ | exa      | time:  40.533 ms | iters: 4      | obj: 9.110179e-04  | CPU: 395.52 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:  63.873 ms | iters: 4      | obj: 9.110782e-04  | CPU:  10.11 KiB
│  │  ✓ | adnlp    | time: 144.433 ms | iters: 4      | obj: 9.110782e-04  | CPU:  44.00 MiB
│  │  ✓ | exa      | time:  79.804 ms | iters: 4      | obj: 9.110782e-04  | CPU: 762.70 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   7.830 ms | iters: 5      | obj: 9.103362e-04  | CPU:   2.93 MiB
│  │  ✓ | adnlp    | time:  15.054 ms | iters: 5      | obj: 9.103362e-04  | CPU:   7.10 MiB
│  │  ✓ | exa      | time:   8.301 ms | iters: 5      | obj: 9.103362e-04  | CPU:   3.03 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  17.333 ms | iters: 5      | obj: 9.109230e-04  | CPU:   6.80 MiB
│  │  ✓ | adnlp    | time:  35.308 ms | iters: 5      | obj: 9.109230e-04  | CPU:  17.06 MiB
│  │  ✓ | exa      | time:  19.093 ms | iters: 5      | obj: 9.109230e-04  | CPU:   6.88 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  33.580 ms | iters: 5      | obj: 9.110070e-04  | CPU:  11.30 MiB
│  │  ✓ | adnlp    | time:  75.688 ms | iters: 5      | obj: 9.110070e-04  | CPU:  33.65 MiB
│  │  ✓ | exa      | time:  37.358 ms | iters: 5      | obj: 9.110070e-04  | CPU:  13.30 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 108.371 ms | iters: 5      | obj: 9.110284e-04  | CPU:  23.67 MiB
│  │  ✓ | adnlp    | time: 221.210 ms | iters: 5      | obj: 9.110284e-04  | CPU:  66.84 MiB
│  │  ✓ | exa      | time: 153.993 ms | iters: 5      | obj: 9.110284e-04  | CPU:  26.12 MiB
│  └─
└─

┌─ Problem: electric_vehicle
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   5.845 ms | iters: 4      | obj: 1.228699e+03  | CPU:   9.84 KiB
│  │  ✓ | adnlp    | time:   8.795 ms | iters: 4      | obj: 1.228699e+03  | CPU:   2.71 MiB
│  │  ✓ | exa      | time:   4.540 ms | iters: 4      | obj: 1.228699e+03  | CPU:  58.31 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  12.579 ms | iters: 4      | obj: 1.228599e+03  | CPU:  10.11 KiB
│  │  ✓ | adnlp    | time:  19.698 ms | iters: 4      | obj: 1.228599e+03  | CPU:   6.74 MiB
│  │  ✓ | exa      | time:   9.301 ms | iters: 4      | obj: 1.228599e+03  | CPU: 107.38 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  19.339 ms | iters: 3      | obj: 1.228585e+03  | CPU:   8.25 KiB
│  │  ✓ | adnlp    | time:  32.359 ms | iters: 3      | obj: 1.228585e+03  | CPU:  11.14 MiB
│  │  ✓ | exa      | time:  14.575 ms | iters: 3      | obj: 1.228585e+03  | CPU: 188.53 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:  40.813 ms | iters: 3      | obj: 1.228582e+03  | CPU:   8.25 KiB
│  │  ✓ | adnlp    | time:  68.853 ms | iters: 3      | obj: 1.228582e+03  | CPU:  22.26 MiB
│  │  ✓ | exa      | time:  28.126 ms | iters: 3      | obj: 1.228582e+03  | CPU: 352.59 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   6.843 ms | iters: 4      | obj: 1.228699e+03  | CPU:   4.64 MiB
│  │  ✓ | adnlp    | time:   7.704 ms | iters: 4      | obj: 1.228699e+03  | CPU:   3.86 MiB
│  │  ✓ | exa      | time:   3.776 ms | iters: 4      | obj: 1.228699e+03  | CPU:   1.65 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  15.562 ms | iters: 4      | obj: 1.228599e+03  | CPU:  10.71 MiB
│  │  ✓ | adnlp    | time:  17.906 ms | iters: 4      | obj: 1.228599e+03  | CPU:   8.98 MiB
│  │  ✓ | exa      | time:   8.129 ms | iters: 4      | obj: 1.228599e+03  | CPU:   3.46 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  27.741 ms | iters: 3      | obj: 1.228585e+03  | CPU:  22.09 MiB
│  │  ✓ | adnlp    | time:  29.564 ms | iters: 3      | obj: 1.228585e+03  | CPU:  15.10 MiB
│  │  ✓ | exa      | time:  12.869 ms | iters: 3      | obj: 1.228585e+03  | CPU:   6.35 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:  79.408 ms | iters: 3      | obj: 1.228582e+03  | CPU:  42.22 MiB
│  │  ✓ | adnlp    | time:  87.785 ms | iters: 3      | obj: 1.228582e+03  | CPU:  29.77 MiB
│  │  ✓ | exa      | time:  46.777 ms | iters: 3      | obj: 1.228582e+03  | CPU:  12.26 MiB
│  └─
└─

┌─ Problem: glider
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   7.978 s  | iters: 305    | obj: 1.248896e+03  | CPU: 573.98 KiB
│  │  ✓ | adnlp    | time:   6.620 s  | iters: 341    | obj: 1.248896e+03  | CPU: 332.66 MiB
│  │  ✓ | exa      | time:   5.553 s  | iters: 344    | obj: 1.248896e+03  | CPU: 544.89 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  22.487 s  | iters: 675    | obj: 1.247978e+03  | CPU:   1.25 MiB
│  │  ✓ | adnlp    | time:  17.184 s  | iters: 877    | obj: 1.247978e+03  | CPU:   2.06 GiB
│  │  ✓ | exa      | time:   7.170 s  | iters: 688    | obj: 1.247978e+03  | CPU: 1012.45 KiB
│  │
│  │  N = 1000
│  │  ✗ | JuMP     | time:  71.748 s  | iters: 1000   | obj: 4.568775e+02  | CPU:   1.86 MiB
│  │  ✗ | adnlp    | time:  46.334 s  | iters: 1000   | obj: 4.570726e+02  | CPU:   4.68 GiB
│  │  ✗ | exa      | time:  25.182 s  | iters: 1000   | obj: 4.551521e+02  | CPU:   1.49 MiB
│  │
│  │  N = 2000
│  │  ✗ | JuMP     | time: 155.302 s  | iters: 1000   | obj: 6.695914e+02  | CPU:   1.86 MiB
│  │  ✗ | adnlp    | time: 129.179 s  | iters: 1000   | obj: 7.154264e+02  | CPU:   9.34 GiB
│  │  ✗ | exa      | time:  62.186 s  | iters: 1000   | obj: 6.512920e+02  | CPU:   1.85 MiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   3.581 s  | iters: 321    | obj: 1.248809e+03  | CPU:  72.66 MiB
│  │  ✓ | adnlp    | time:   1.556 s  | iters: 263    | obj: 1.248809e+03  | CPU: 286.90 MiB
│  │  ✓ | exa      | time:   1.011 s  | iters: 320    | obj: 1.248809e+03  | CPU:  33.51 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  23.405 s  | iters: 690    | obj: 1.247978e+03  | CPU: 254.22 MiB
│  │  ✓ | adnlp    | time:  12.093 s  | iters: 679    | obj: 1.247978e+03  | CPU:   1.75 GiB
│  │  ✓ | exa      | time:   2.719 s  | iters: 365    | obj: 1.247978e+03  | CPU:  91.39 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  50.342 s  | iters: 726    | obj: 1.247985e+03  | CPU: 516.47 MiB
│  │  ✓ | adnlp    | time:  37.519 s  | iters: 707    | obj: 1.247985e+03  | CPU:   3.63 GiB
│  │  ✓ | exa      | time:  11.157 s  | iters: 713    | obj: 1.247985e+03  | CPU: 310.20 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:  68.087 s  | iters: 476    | obj: 1.247987e+03  | CPU: 837.44 MiB
│  │  ✓ | adnlp    | time:  52.426 s  | iters: 461    | obj: 1.247987e+03  | CPU:   4.82 GiB
│  │  ✓ | exa      | time:  14.346 s  | iters: 392    | obj: 1.247987e+03  | CPU: 384.03 MiB
│  └─
└─

┌─ Problem: insurance
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time: 222.590 ms | iters: 54     | obj: 2.058581e+00  | CPU: 103.47 KiB
│  │  ✓ | adnlp    | time: 317.920 ms | iters: 54     | obj: 2.058581e+00  | CPU:  71.58 MiB
│  │  ✓ | exa      | time: 181.669 ms | iters: 54     | obj: 2.058581e+00  | CPU: 204.22 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:   1.090 s  | iters: 101    | obj: 2.059214e+00  | CPU: 190.86 KiB
│  │  ✓ | adnlp    | time:   1.406 s  | iters: 93     | obj: 2.059214e+00  | CPU: 302.44 MiB
│  │  ✓ | exa      | time: 877.079 ms | iters: 106    | obj: 2.059214e+00  | CPU: 438.41 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:   2.592 s  | iters: 111    | obj: 2.058960e+00  | CPU: 212.19 KiB
│  │  ✓ | adnlp    | time:   4.244 s  | iters: 128    | obj: 2.059312e+00  | CPU: 831.45 MiB
│  │  ✓ | exa      | time:   2.551 s  | iters: 132    | obj: 2.059511e+00  | CPU: 767.33 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:  10.127 s  | iters: 206    | obj: 2.059595e+00  | CPU: 394.30 KiB
│  │  ✓ | adnlp    | time:  15.433 s  | iters: 192    | obj: 2.059700e+00  | CPU:   2.44 GiB
│  │  ✓ | exa      | time:   5.839 s  | iters: 167    | obj: 2.059547e+00  | CPU:   1.37 MiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time: 425.789 ms | iters: 117    | obj: 2.058569e+00  | CPU:  35.63 MiB
│  │  ✓ | adnlp    | time: 598.137 ms | iters: 117    | obj: 2.058569e+00  | CPU: 196.21 MiB
│  │  ✓ | exa      | time: 317.419 ms | iters: 117    | obj: 2.058569e+00  | CPU:  26.02 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:   2.758 s  | iters: 252    | obj: 2.059179e+00  | CPU: 137.15 MiB
│  │  ✓ | adnlp    | time:   6.258 s  | iters: 416    | obj: 2.059179e+00  | CPU:   1.55 GiB
│  │  ✓ | exa      | time:   3.085 s  | iters: 345    | obj: 2.059179e+00  | CPU: 153.99 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  13.116 s  | iters: 534    | obj: 2.059433e+00  | CPU: 501.22 MiB
│  │  ✓ | adnlp    | time:  20.753 s  | iters: 689    | obj: 2.059433e+00  | CPU:   4.91 GiB
│  │  ✓ | exa      | time:   9.072 s  | iters: 521    | obj: 2.059433e+00  | CPU: 442.19 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:   8.466 s  | iters: 156    | obj: 2.059568e+00  | CPU: 391.50 MiB
│  │  ✓ | adnlp    | time:  12.734 s  | iters: 156    | obj: 2.059568e+00  | CPU:   2.34 GiB
│  │  ✓ | exa      | time:   5.935 s  | iters: 162    | obj: 2.059568e+00  | CPU: 307.74 MiB
│  └─
└─

┌─ Problem: jackson
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  20.989 ms | iters: 14     | obj: 1.918604e-01  | CPU:  28.70 KiB
│  │  ✓ | adnlp    | time:  30.737 ms | iters: 14     | obj: 1.918604e-01  | CPU:   3.86 MiB
│  │  ✓ | exa      | time:  21.631 ms | iters: 14     | obj: 1.918604e-01  | CPU:  94.20 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  60.651 ms | iters: 18     | obj: 1.918218e-01  | CPU:  36.14 KiB
│  │  ✓ | adnlp    | time:  92.808 ms | iters: 18     | obj: 1.918218e-01  | CPU:  11.97 MiB
│  │  ✓ | exa      | time:  62.722 ms | iters: 18     | obj: 1.918218e-01  | CPU: 184.95 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  95.066 ms | iters: 16     | obj: 1.918162e-01  | CPU:  32.42 KiB
│  │  ✓ | adnlp    | time: 165.857 ms | iters: 16     | obj: 1.918162e-01  | CPU:  21.45 MiB
│  │  ✓ | exa      | time: 101.008 ms | iters: 16     | obj: 1.918162e-01  | CPU: 327.52 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 199.820 ms | iters: 17     | obj: 1.918148e-01  | CPU:  34.28 KiB
│  │  ✓ | adnlp    | time: 397.647 ms | iters: 17     | obj: 1.918148e-01  | CPU:  45.23 MiB
│  │  ✓ | exa      | time: 209.694 ms | iters: 17     | obj: 1.918148e-01  | CPU: 617.61 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  18.198 ms | iters: 20     | obj: 1.918580e-01  | CPU:   5.21 MiB
│  │  ✓ | adnlp    | time:  33.125 ms | iters: 20     | obj: 1.918580e-01  | CPU:   9.00 MiB
│  │  ✓ | exa      | time:  19.222 ms | iters: 20     | obj: 1.918580e-01  | CPU:   4.77 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  40.389 ms | iters: 19     | obj: 1.918158e-01  | CPU:  11.93 MiB
│  │  ✓ | adnlp    | time:  74.488 ms | iters: 19     | obj: 1.918158e-01  | CPU:  20.73 MiB
│  │  ✓ | exa      | time:  42.682 ms | iters: 19     | obj: 1.918158e-01  | CPU:  10.83 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  81.774 ms | iters: 20     | obj: 1.918046e-01  | CPU:  25.23 MiB
│  │  ✓ | adnlp    | time: 161.349 ms | iters: 20     | obj: 1.918046e-01  | CPU:  42.61 MiB
│  │  ✓ | exa      | time:  87.524 ms | iters: 20     | obj: 1.918046e-01  | CPU:  21.63 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 204.083 ms | iters: 20     | obj: 1.917922e-01  | CPU:  43.28 MiB
│  │  ✓ | adnlp    | time: 432.308 ms | iters: 20     | obj: 1.917922e-01  | CPU:  84.62 MiB
│  │  ✓ | exa      | time: 236.099 ms | iters: 20     | obj: 1.917922e-01  | CPU:  42.69 MiB
│  └─
└─

┌─ Problem: robbins
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  15.710 ms | iters: 12     | obj: 1.962627e+01  | CPU:  13.36 KiB
│  │  ✓ | adnlp    | time:  21.392 ms | iters: 12     | obj: 1.962627e+01  | CPU:   2.29 MiB
│  │  ✓ | exa      | time:  15.599 ms | iters: 12     | obj: 1.962627e+01  | CPU:  87.92 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  39.183 ms | iters: 14     | obj: 1.946667e+01  | CPU:  15.05 KiB
│  │  ✓ | adnlp    | time:  56.252 ms | iters: 14     | obj: 1.946667e+01  | CPU:   6.47 MiB
│  │  ✓ | exa      | time:  40.840 ms | iters: 14     | obj: 1.946667e+01  | CPU: 176.80 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 107.662 ms | iters: 22     | obj: 1.944023e+01  | CPU:  21.83 KiB
│  │  ✓ | adnlp    | time: 162.296 ms | iters: 22     | obj: 1.944023e+01  | CPU:  19.31 MiB
│  │  ✓ | exa      | time: 113.840 ms | iters: 22     | obj: 1.944023e+01  | CPU: 329.48 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 288.776 ms | iters: 30     | obj: 1.943391e+01  | CPU:  28.58 KiB
│  │  ✓ | adnlp    | time: 474.836 ms | iters: 30     | obj: 1.943391e+01  | CPU:  51.38 MiB
│  │  ✓ | exa      | time: 307.083 ms | iters: 30     | obj: 1.943391e+01  | CPU: 626.80 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  22.260 ms | iters: 29     | obj: 1.962627e+01  | CPU:   2.97 MiB
│  │  ✓ | adnlp    | time:  35.318 ms | iters: 29     | obj: 1.962627e+01  | CPU:   7.52 MiB
│  │  ✓ | exa      | time:  23.048 ms | iters: 29     | obj: 1.962627e+01  | CPU:   2.72 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  47.420 ms | iters: 27     | obj: 1.946665e+01  | CPU:   6.15 MiB
│  │  ✓ | adnlp    | time:  77.779 ms | iters: 27     | obj: 1.946665e+01  | CPU:  16.98 MiB
│  │  ✓ | exa      | time:  49.761 ms | iters: 27     | obj: 1.946665e+01  | CPU:   5.76 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 155.632 ms | iters: 47     | obj: 1.944023e+01  | CPU:  16.46 MiB
│  │  ✓ | adnlp    | time: 265.447 ms | iters: 47     | obj: 1.944023e+01  | CPU:  53.36 MiB
│  │  ✓ | exa      | time: 161.009 ms | iters: 47     | obj: 1.944023e+01  | CPU:  15.11 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 312.790 ms | iters: 40     | obj: 1.943400e+01  | CPU:  27.49 MiB
│  │  ✓ | adnlp    | time: 557.994 ms | iters: 40     | obj: 1.943400e+01  | CPU:  91.78 MiB
│  │  ✓ | exa      | time: 354.771 ms | iters: 40     | obj: 1.943400e+01  | CPU:  26.62 MiB
│  └─
└─

┌─ Problem: robot
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  91.353 ms | iters: 18     | obj: 9.141396e+00  | CPU:  36.14 KiB
│  │  ✗ | adnlp   : ERROR: DomainError(Inf, "sincos(x) is only defined for finite x.")
│  │  ✓ | exa      | time:  66.329 ms | iters: 18     | obj: 9.141396e+00  | CPU: 180.83 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time: 302.340 ms | iters: 21     | obj: 9.141008e+00  | CPU:  41.72 KiB
│  │  ✓ | adnlp    | time: 357.963 ms | iters: 21     | obj: 9.141008e+00  | CPU:  36.89 MiB
│  │  ✓ | exa      | time: 189.892 ms | iters: 21     | obj: 9.141008e+00  | CPU: 373.55 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:   1.072 s  | iters: 33     | obj: 9.141261e+00  | CPU:  65.59 KiB
│  │  ✓ | adnlp    | time:   1.210 s  | iters: 31     | obj: 9.142037e+00  | CPU: 106.70 MiB
│  │  ✓ | exa      | time: 588.149 ms | iters: 29     | obj: 9.141600e+00  | CPU: 699.23 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:   2.177 s  | iters: 28     | obj: 9.141089e+00  | CPU:  54.73 KiB
│  │  ✓ | adnlp    | time:   2.512 s  | iters: 28     | obj: 9.141089e+00  | CPU: 192.33 MiB
│  │  ✓ | exa      | time:   1.355 s  | iters: 28     | obj: 9.141089e+00  | CPU:   1.30 MiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time: 101.727 ms | iters: 22     | obj: 9.141450e+00  | CPU:  23.70 MiB
│  │  ✓ | adnlp    | time: 133.619 ms | iters: 22     | obj: 9.141450e+00  | CPU:  24.48 MiB
│  │  ✓ | exa      | time:  66.466 ms | iters: 22     | obj: 9.141450e+00  | CPU:   8.04 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time: 353.732 ms | iters: 28     | obj: 9.141126e+00  | CPU:  61.76 MiB
│  │  ✓ | adnlp    | time: 409.501 ms | iters: 28     | obj: 9.141126e+00  | CPU:  67.88 MiB
│  │  ✓ | exa      | time: 213.134 ms | iters: 28     | obj: 9.141126e+00  | CPU:  22.21 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 868.965 ms | iters: 27     | obj: 9.141204e+00  | CPU: 124.54 MiB
│  │  ✓ | adnlp    | time: 875.694 ms | iters: 28     | obj: 9.142465e+00  | CPU: 133.60 MiB
│  │  ✓ | exa      | time: 518.972 ms | iters: 27     | obj: 9.141204e+00  | CPU:  42.55 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:   3.687 s  | iters: 43     | obj: 9.141499e+00  | CPU: 322.29 MiB
│  │  ✓ | adnlp    | time:   3.310 s  | iters: 43     | obj: 9.141584e+00  | CPU: 449.69 MiB
│  │  ✓ | exa      | time:   2.229 s  | iters: 44     | obj: 9.141503e+00  | CPU: 159.82 MiB
│  └─
└─

┌─ Problem: rocket
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  41.514 ms | iters: 16     | obj: 1.012836e+00  | CPU:  32.42 KiB
│  │  ✓ | adnlp    | time:  57.574 ms | iters: 16     | obj: 1.012836e+00  | CPU:  15.20 MiB
│  │  ✓ | exa      | time:  24.305 ms | iters: 16     | obj: 1.012836e+00  | CPU:  98.89 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time: 107.641 ms | iters: 17     | obj: 1.012836e+00  | CPU:  34.28 KiB
│  │  ✓ | adnlp    | time: 149.739 ms | iters: 17     | obj: 1.012836e+00  | CPU:  39.89 MiB
│  │  ✓ | exa      | time:  59.855 ms | iters: 17     | obj: 1.012836e+00  | CPU: 186.55 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 302.703 ms | iters: 20     | obj: 1.012836e+00  | CPU:  39.86 KiB
│  │  ✓ | adnlp    | time: 376.013 ms | iters: 20     | obj: 1.012836e+00  | CPU:  92.29 MiB
│  │  ✓ | exa      | time: 139.572 ms | iters: 20     | obj: 1.012836e+00  | CPU: 334.27 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 725.597 ms | iters: 20     | obj: 1.012836e+00  | CPU:  39.86 KiB
│  │  ✓ | adnlp    | time: 837.318 ms | iters: 20     | obj: 1.012836e+00  | CPU: 184.37 MiB
│  │  ✓ | exa      | time: 314.721 ms | iters: 20     | obj: 1.012836e+00  | CPU: 623.33 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  45.632 ms | iters: 18     | obj: 1.012810e+00  | CPU:  19.71 MiB
│  │  ✓ | adnlp    | time:  54.266 ms | iters: 18     | obj: 1.012810e+00  | CPU:  20.32 MiB
│  │  ✓ | exa      | time:  20.090 ms | iters: 18     | obj: 1.012810e+00  | CPU:   4.45 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time: 127.949 ms | iters: 19     | obj: 1.012773e+00  | CPU:  49.28 MiB
│  │  ✓ | adnlp    | time: 146.862 ms | iters: 19     | obj: 1.012773e+00  | CPU:  52.11 MiB
│  │  ✓ | exa      | time:  51.942 ms | iters: 19     | obj: 1.012773e+00  | CPU:  10.49 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 293.818 ms | iters: 18     | obj: 1.012710e+00  | CPU:  96.47 MiB
│  │  ✓ | adnlp    | time: 312.513 ms | iters: 18     | obj: 1.012710e+00  | CPU:  98.86 MiB
│  │  ✓ | exa      | time: 104.424 ms | iters: 18     | obj: 1.012710e+00  | CPU:  19.97 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 657.093 ms | iters: 17     | obj: 1.012585e+00  | CPU: 191.52 MiB
│  │  ✓ | adnlp    | time: 662.598 ms | iters: 17     | obj: 1.012585e+00  | CPU: 187.71 MiB
│  │  ✓ | exa      | time: 226.995 ms | iters: 17     | obj: 1.012585e+00  | CPU:  38.50 MiB
│  └─
└─

┌─ Problem: space_shuttle
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   3.411 s  | iters: 143    | obj: 3.853784e-01  | CPU: 268.56 KiB
│  │  ✓ | adnlp    | time:   1.573 s  | iters: 124    | obj: 3.853783e-01  | CPU: 211.53 MiB
│  │  ✓ | exa      | time: 832.743 ms | iters: 124    | obj: 3.853783e-01  | CPU: 332.83 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:   6.900 s  | iters: 114    | obj: 5.958750e-01  | CPU: 214.64 KiB
│  │  ✓ | adnlp    | time:   3.867 s  | iters: 108    | obj: 5.958750e-01  | CPU: 458.96 MiB
│  │  ✓ | exa      | time:   1.812 s  | iters: 108    | obj: 5.958750e-01  | CPU: 489.77 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  20.279 s  | iters: 139    | obj: 3.050204e-01  | CPU: 264.25 KiB
│  │  ✓ | adnlp    | time:  40.214 s  | iters: 228    | obj: 3.036105e-01  | CPU:   1.88 GiB
│  │  ✓ | exa      | time:  12.681 s  | iters: 200    | obj: 3.037427e-01  | CPU: 874.72 KiB
│  │
│  │  N = 2000
│  │  ✗ | JuMP     | time: 309.098 s  | iters: 1000   | obj: -1.257847e+00 | CPU:   2.39 MiB
│  │  ✗ | adnlp    | time: 511.679 s  | iters: 129    | obj: -1.603350e-02 | CPU:   2.28 GiB
│  │  ✗ | exa      | time: 607.339 s  | iters: 122    | obj: -9.001577e-03 | CPU:   1.35 MiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   2.540 s  | iters: 116    | obj: 3.853767e-01  | CPU: 149.03 MiB
│  │  ✓ | adnlp    | time:   1.783 s  | iters: 148    | obj: 3.854907e-01  | CPU: 300.50 MiB
│  │  ✓ | exa      | time: 780.010 ms | iters: 148    | obj: 3.854907e-01  | CPU:  44.76 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:   4.387 s  | iters: 75     | obj: 5.958750e-01  | CPU: 342.39 MiB
│  │  ✓ | adnlp    | time:   4.407 s  | iters: 138    | obj: 5.958750e-01  | CPU: 683.43 MiB
│  │  ✓ | exa      | time:   1.749 s  | iters: 138    | obj: 5.958750e-01  | CPU:  99.36 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 191.391 s  | iters: 864    | obj: 3.050207e-01  | CPU:   2.29 GiB
│  │  ✓ | adnlp    | time:  25.758 s  | iters: 230    | obj: 3.050207e-01  | CPU:   2.47 GiB
│  │  ✗ | exa      | time:   9.419 s  | iters: 254    | obj: 1.691066e-01  | CPU: 451.53 MiB
│  │
│  │  N = 2000
│  │  ✗ | JuMP     | time: 296.246 s  | iters: 676    | obj: 4.887933e-01  | CPU:   3.91 GiB
│  │  ✗ | adnlp   : ERROR: DomainError(Inf, "sincos(x) is only defined for finite x.")
│  │  ✗ | exa      | time:  13.632 s  | iters: 191    | obj: 3.627423e-01  | CPU: 561.87 MiB
│  └─
└─

┌─ Problem: steering
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  33.265 ms | iters: 12     | obj: 5.545770e-01  | CPU:  25.38 KiB
│  │  ✓ | adnlp    | time:  39.676 ms | iters: 12     | obj: 5.545770e-01  | CPU:   6.94 MiB
│  │  ✓ | exa      | time:  28.042 ms | iters: 12     | obj: 5.545770e-01  | CPU: 106.84 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time: 113.032 ms | iters: 17     | obj: 5.545719e-01  | CPU:  34.67 KiB
│  │  ✓ | adnlp    | time: 134.584 ms | iters: 17     | obj: 5.545719e-01  | CPU:  23.39 MiB
│  │  ✓ | exa      | time:  95.475 ms | iters: 17     | obj: 5.545719e-01  | CPU: 222.38 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 261.908 ms | iters: 18     | obj: 5.545711e-01  | CPU:  36.53 KiB
│  │  ✗ | adnlp   : ERROR: DomainError(Inf, "sincos(x) is only defined for finite x.")
│  │  ✓ | exa      | time: 209.524 ms | iters: 18     | obj: 5.545711e-01  | CPU: 406.78 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 696.539 ms | iters: 18     | obj: 5.545709e-01  | CPU:  36.53 KiB
│  │  ✓ | adnlp    | time: 656.561 ms | iters: 18     | obj: 5.545709e-01  | CPU:  98.13 MiB
│  │  ✓ | exa      | time: 483.450 ms | iters: 18     | obj: 5.545709e-01  | CPU: 773.97 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:  31.241 ms | iters: 13     | obj: 5.545770e-01  | CPU:   9.32 MiB
│  │  ✓ | adnlp    | time:  35.228 ms | iters: 13     | obj: 5.545770e-01  | CPU:   9.83 MiB
│  │  ✓ | exa      | time:  23.274 ms | iters: 13     | obj: 5.545770e-01  | CPU:   2.82 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  82.742 ms | iters: 14     | obj: 5.545718e-01  | CPU:  23.11 MiB
│  │  ✓ | adnlp    | time:  92.977 ms | iters: 14     | obj: 5.545718e-01  | CPU:  25.10 MiB
│  │  ✓ | exa      | time:  60.447 ms | iters: 14     | obj: 5.545718e-01  | CPU:   6.42 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time: 196.824 ms | iters: 15     | obj: 5.545711e-01  | CPU:  44.78 MiB
│  │  ✓ | adnlp    | time: 219.524 ms | iters: 15     | obj: 5.545711e-01  | CPU:  52.36 MiB
│  │  ✓ | exa      | time: 141.036 ms | iters: 15     | obj: 5.545711e-01  | CPU:  12.58 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time: 465.564 ms | iters: 13     | obj: 5.545708e-01  | CPU:  85.44 MiB
│  │  ✓ | adnlp    | time: 437.638 ms | iters: 13     | obj: 5.545708e-01  | CPU:  93.15 MiB
│  │  ✓ | exa      | time: 292.665 ms | iters: 13     | obj: 5.545708e-01  | CPU:  23.47 MiB
│  └─
└─

┌─ Problem: vanderpol
│
├──┬ Solver: ipopt, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   4.463 ms | iters: 3      | obj: 1.047836e+00  | CPU:   8.03 KiB
│  │  ✓ | adnlp    | time:   6.320 ms | iters: 3      | obj: 1.047836e+00  | CPU: 955.22 KiB
│  │  ✓ | exa      | time:   3.712 ms | iters: 3      | obj: 1.047836e+00  | CPU:  53.44 KiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:   9.391 ms | iters: 3      | obj: 1.047812e+00  | CPU:   8.25 KiB
│  │  ✓ | adnlp    | time:  13.801 ms | iters: 3      | obj: 1.047812e+00  | CPU:   2.30 MiB
│  │  ✓ | exa      | time:   7.532 ms | iters: 3      | obj: 1.047812e+00  | CPU: 102.50 KiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  17.423 ms | iters: 3      | obj: 1.047808e+00  | CPU:   8.25 KiB
│  │  ✓ | adnlp    | time:  27.183 ms | iters: 3      | obj: 1.047808e+00  | CPU:   4.58 MiB
│  │  ✓ | exa      | time:  14.048 ms | iters: 3      | obj: 1.047808e+00  | CPU: 184.69 KiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:  35.630 ms | iters: 3      | obj: 1.047807e+00  | CPU:   8.25 KiB
│  │  ✓ | adnlp    | time:  58.473 ms | iters: 3      | obj: 1.047807e+00  | CPU:   9.13 MiB
│  │  ✓ | exa      | time:  27.048 ms | iters: 3      | obj: 1.047807e+00  | CPU: 348.75 KiB
│  └─
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 200
│  │  ✓ | JuMP     | time:   5.629 ms | iters: 3      | obj: 1.047836e+00  | CPU:   4.55 MiB
│  │  ✓ | adnlp    | time:   5.467 ms | iters: 3      | obj: 1.047836e+00  | CPU:   2.02 MiB
│  │  ✓ | exa      | time:   3.112 ms | iters: 3      | obj: 1.047836e+00  | CPU:   1.65 MiB
│  │
│  │  N = 500
│  │  ✓ | JuMP     | time:  12.734 ms | iters: 3      | obj: 1.047812e+00  | CPU:  10.52 MiB
│  │  ✓ | adnlp    | time:  12.508 ms | iters: 3      | obj: 1.047812e+00  | CPU:   4.40 MiB
│  │  ✓ | exa      | time:   6.618 ms | iters: 3      | obj: 1.047812e+00  | CPU:   3.47 MiB
│  │
│  │  N = 1000
│  │  ✓ | JuMP     | time:  25.710 ms | iters: 3      | obj: 1.047808e+00  | CPU:  21.94 MiB
│  │  ✓ | adnlp    | time:  24.897 ms | iters: 3      | obj: 1.047808e+00  | CPU:   8.38 MiB
│  │  ✓ | exa      | time:  12.506 ms | iters: 3      | obj: 1.047808e+00  | CPU:   6.51 MiB
│  │
│  │  N = 2000
│  │  ✓ | JuMP     | time:  67.556 ms | iters: 3      | obj: 1.047807e+00  | CPU:  43.07 MiB
│  │  ✓ | adnlp    | time:  71.456 ms | iters: 3      | obj: 1.047807e+00  | CPU:  16.34 MiB
│  │  ✓ | exa      | time:  45.634 ms | iters: 3      | obj: 1.047807e+00  | CPU:  12.59 MiB
│  └─
└─

Moonshot

This benchmark suite evaluates 14 optimal control problems on GPU-accelerated hardware, focusing on large-scale problems.

Benchmark Configuration:

  • Solver: MadNLP (GPU-optimised)
  • Models: ExaModels (CPU), ExaModels (GPU)
  • Grid sizes: 1000, 5000, 10000 discretisation points
  • Discretisation: Trapeze method
  • Tolerance: 1e-6
  • Limits: 1000 iterations max, 1000s wall time

This configuration demonstrates GPU acceleration capabilities with ExaModels on large-scale problems, comparing CPU vs GPU performance for the same modelling framework.

Note

The linear solver is MUMPS for all experiments.

🚀 Environment

📅 Timestamp     : 2025-11-07 16:28:41 UTC
🔧 Julia version : 1.11.7
💻 OS            : Linux
🖥️ Machine       : moonshot

You can download the exact environment used for this benchmark:

These files allow you to reproduce the benchmark environment and results exactly.

ℹ️ Version info
Julia Version 1.11.7
Commit f2b3dbda30a (2025-09-08 12:10 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 144 × Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz
  WORD_SIZE: 64
  LLVM: libLLVM-16.0.6 (ORCJIT, skylake-avx512)
Threads: 16 default, 0 interactive, 8 GC (on 144 virtual cores)
Environment:
  JULIA_PKG_SERVER_REGISTRY_PREFERENCE = eager
  JULIA_DEPOT_PATH = /scratch/github-actions/julia_depot
  LD_LIBRARY_PATH = /home/mschanen/local/lib:/home/mschanen/local/lib:
  JULIA_NUM_THREADS = 16
📦 Package status
Project CTBenchmarks v0.2.3
Status `/scratch/github-actions/actions_runner_control_toolbox/_work/CTBenchmarks.jl/CTBenchmarks.jl/Project.toml`
  [6e4b80f9] BenchmarkTools v1.6.3
  [052768ef] CUDA v5.9.2
  [a93c6f00] DataFrames v1.8.1
  [b6b21f68] Ipopt v1.12.1
  [682c06a0] JSON v1.2.0
  [4076af6c] JuMP v1.29.2
  [d72a61cc] MadNLPGPU v0.7.16
  [3b83494e] MadNLPMumps v0.5.1
  [f4238b75] NLPModelsIpopt v0.11.0
  [5f98b655] OptimalControl v1.1.6
  [59046045] OptimalControlProblems v0.3.2
  [bd369af6] Tables v1.12.1
  [ade2ca70] Dates v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [44cfe95a] Pkg v1.11.0
  [de0858da] Printf v1.11.0
  [6462fe0b] Sockets v1.11.0
📚 Complete manifest
Project CTBenchmarks v0.2.3
Status `/scratch/github-actions/actions_runner_control_toolbox/_work/CTBenchmarks.jl/CTBenchmarks.jl/Manifest.toml`
  [54578032] ADNLPModels v0.8.13
  [47edcb42] ADTypes v1.18.0
  [14f7f29c] AMD v0.5.3
  [621f4979] AbstractFFTs v1.5.0
  [79e6a3ab] Adapt v4.4.0
  [a9b6321e] Atomix v1.1.2
  [13072b0f] AxisAlgorithms v1.1.0
  [ab4f0b2a] BFloat16s v0.6.0
  [6e4b80f9] BenchmarkTools v1.6.3
  [fa961155] CEnum v0.5.0
 [54762871] CTBase v0.16.2
  [790bbbee] CTDirect v0.17.4
  [1c39547c] CTFlows v0.8.9
  [34c4fa32] CTModels v0.6.9
  [32681960] CTParser v0.7.1
  [052768ef] CUDA v5.9.2
  [1af6417a] CUDA_Runtime_Discovery v1.0.0
  [45b445bb] CUDSS v0.6.1
  [d360d2e6] ChainRulesCore v1.26.0
  [523fee87] CodecBzip2 v0.8.5
  [944b1d66] CodecZlib v0.7.8
  [3da002f7] ColorTypes v0.12.1
  [5ae59095] Colors v0.13.1
  [38540f10] CommonSolve v0.2.4
  [bbf7d656] CommonSubexpressions v0.3.1
  [34da2185] Compat v4.18.1
  [a8cc5b0e] Crayons v4.1.1
  [9a962f9c] DataAPI v1.16.0
  [a93c6f00] DataFrames v1.8.1
  [864edb3b] DataStructures v0.19.3
  [e2d170a0] DataValueInterfaces v1.0.0
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [ffbed154] DocStringExtensions v0.9.5
  [1037b233] ExaModels v0.9.2
  [e2ba6199] ExprTools v0.1.10
  [9aa1b823] FastClosures v0.3.2
  [1a297f60] FillArrays v1.15.0
  [53c48c17] FixedPointNumbers v0.8.5
  [f6369f11] ForwardDiff v1.2.2
  [069b7b12] FunctionWrappers v1.1.3
  [0c68f7d7] GPUArrays v11.2.6
  [46192b85] GPUArraysCore v0.2.0
  [61eb1bfa] GPUCompiler v1.7.2
  [096a3bc2] GPUToolbox v1.0.0
  [34c5aeac] HSL v0.5.1
  [076d061b] HashArrayMappedTries v0.2.0
  [842dd82b] InlineStrings v1.4.5
  [a98d9a8b] Interpolations v0.16.2
  [41ab1584] InvertedIndices v1.3.1
  [b6b21f68] Ipopt v1.12.1
  [92d709cd] IrrationalConstants v0.2.6
  [82899510] IteratorInterfaceExtensions v1.0.0
  [692b3bcd] JLLWrappers v1.7.1
  [682c06a0] JSON v1.2.0
  [0f8b85d8] JSON3 v1.14.3
  [4076af6c] JuMP v1.29.2
  [63c18a36] KernelAbstractions v0.9.39
  [40e66cde] LDLFactorizations v0.10.1
  [929cbde3] LLVM v9.4.4
  [8b046642] LLVMLoopInfo v1.0.0
  [b964fa9f] LaTeXStrings v1.4.0
  [5c8ed15e] LinearOperators v2.11.0
  [2ab3a3ac] LogExpFunctions v0.3.29
  [33e6dc65] MKL v0.9.0
  [d8e11817] MLStyle v0.4.17
  [1914dd2f] MacroTools v0.5.16
  [2621e9c9] MadNLP v0.8.12
  [d72a61cc] MadNLPGPU v0.7.16
  [3b83494e] MadNLPMumps v0.5.1
  [b8f27783] MathOptInterface v1.46.0
  [2679e427] Metis v1.5.0
  [e1d29d7a] Missings v1.2.0
  [d8a4904e] MutableArithmetics v1.6.7
  [a4795742] NLPModels v0.21.5
  [f4238b75] NLPModelsIpopt v0.11.0
  [e01155f1] NLPModelsModifiers v0.7.2
  [5da4648a] NVTX v1.0.1
  [77ba4419] NaNMath v1.1.3
  [6fe1bfb0] OffsetArrays v1.17.0
  [5f98b655] OptimalControl v1.1.6
  [59046045] OptimalControlProblems v0.3.2
  [bac558e1] OrderedCollections v1.8.1
  [d96e819e] Parameters v0.12.3
  [69de0a69] Parsers v2.8.3
  [2dfb63ee] PooledArrays v1.4.3
 [aea7be01] PrecompileTools v1.2.1
  [21216c6a] Preferences v1.5.0
  [08abe8d2] PrettyTables v3.1.0
  [be4d8f0f] Quadmath v0.5.13
  [74087812] Random123 v1.7.1
  [e6cf234a] RandomNumbers v1.6.0
  [c84ed2f1] Ratios v0.4.5
  [3cdcf5f2] RecipesBase v1.3.4
  [189a3867] Reexport v1.2.2
  [ae029012] Requires v1.3.1
  [37e2e3b7] ReverseDiff v1.16.1
  [7e506255] ScopedValues v1.5.0
  [6c6a2e73] Scratch v1.3.0
  [91c51154] SentinelArrays v1.4.8
  [ff4d7338] SolverCore v0.3.8
  [a2af1166] SortingAlgorithms v1.2.2
  [9f842d2f] SparseConnectivityTracer v1.1.2
  [0a514795] SparseMatrixColorings v0.4.23
  [276daf66] SpecialFunctions v2.6.1
  [90137ffa] StaticArrays v1.9.15
  [1e83bf80] StaticArraysCore v1.4.4
  [10745b16] Statistics v1.11.1
  [892a3eda] StringManipulation v0.4.1
  [856f2bd8] StructTypes v1.11.0
  [ec057cc2] StructUtils v2.5.1
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.12.1
  [a759f4b9] TimerOutputs v0.5.29
  [e689c965] Tracy v0.1.6
  [3bb67fe8] TranscodingStreams v0.11.3
  [3a884ed6] UnPack v1.0.2
  [013be700] UnsafeAtomics v0.3.0
  [efce3f68] WoodburyMatrices v1.0.0
  [ae81ac8f] ASL_jll v0.1.3+0
  [6e34b625] Bzip2_jll v1.0.9+0
  [d1e2174e] CUDA_Compiler_jll v0.3.0+0
  [4ee394cb] CUDA_Driver_jll v13.0.2+0
  [76a88914] CUDA_Runtime_jll v0.19.2+0
  [4889d778] CUDSS_jll v0.7.1+0
  [017b0a0e] HSL_jll v4.0.4+0
  [e33a78d0] Hwloc_jll v2.12.2+0
  [1d5cc7b8] IntelOpenMP_jll v2025.2.0+0
  [9cc047cb] Ipopt_jll v300.1400.1900+0
  [9c1d0b0a] JuliaNVTXCallbacks_jll v0.2.1+0
  [dad2f222] LLVMExtra_jll v0.0.38+0
  [ad6e5548] LibTracyClient_jll v0.9.1+6
  [94ce4f54] Libiconv_jll v1.18.0+0
  [d00139f3] METIS_jll v5.1.3+0
  [856f044c] MKL_jll v2025.2.0+0
  [d7ed1dd3] MUMPS_seq_jll v500.800.100+0
  [e98f9f5b] NVTX_jll v3.2.2+0
  [656ef2d0] OpenBLAS32_jll v0.3.29+0
  [efe28fd5] OpenSpecFun_jll v0.5.6+0
 [319450e9] SPRAL_jll v2025.5.20+0
 [02c8fc9c] XML2_jll v2.13.9+0
  [a65dc6b1] Xorg_libpciaccess_jll v0.18.1+0
  [1e29f10c] demumble_jll v1.3.0+0
  [1317d2d5] oneTBB_jll v2022.0.0+1
  [0dad84c5] ArgTools v1.1.2
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [ade2ca70] Dates v1.11.0
  [8ba89e20] Distributed v1.11.0
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching v1.11.0
  [9fa8497b] Future v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [4af54fe1] LazyArtifacts v1.11.0
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2 v1.11.0
  [8f399da3] Libdl v1.11.0
  [37e2e46d] LinearAlgebra v1.11.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [a63ad114] Mmap v1.11.0
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.11.0
  [de0858da] Printf v1.11.0
  [9abbd945] Profile v1.11.0
  [3fa0cd96] REPL v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [1a1011a3] SharedArrays v1.11.0
  [6462fe0b] Sockets v1.11.0
  [2f01184e] SparseArrays v1.11.0
  [f489334b] StyledStrings v1.11.0
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [8dfed614] Test v1.11.0
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.1.1+0
  [deac9b47] LibCURL_jll v8.6.0+0
  [e37daf67] LibGit2_jll v1.7.2+0
  [29816b5a] LibSSH2_jll v1.11.0+1
  [c8ffd9c3] MbedTLS_jll v2.28.6+0
  [14a3606d] MozillaCACerts_jll v2023.12.12
  [4536629a] OpenBLAS_jll v0.3.27+1
  [05823500] OpenLibm_jll v0.8.5+0
  [bea87d4a] SuiteSparse_jll v7.7.0+0
  [83775a58] Zlib_jll v1.2.13+1
  [8e850b90] libblastrampoline_jll v5.11.0+0
  [8e850ede] nghttp2_jll v1.59.0+0
  [3f19e933] p7zip_jll v17.4.0+2
Info Packages marked with  and  have new versions available. Those with  may be upgradable, but those with  are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`

⚡ Results

Benchmarks results:

┌─ Problem: beam
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  58.944 ms | iters: 22     | obj: 8.889006e+00  | CPU:   8.45 MiB
│  │  ✓ | exa_gpu  | time: 149.593 ms | iters: 25     | obj: 8.827707e+00  | CPU:  9.170 MiB | GPU: 11.901 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time: 332.734 ms | iters: 17     | obj: 8.888990e+00  | CPU:  34.86 MiB
│  │  ✓ | exa_gpu  | time: 203.046 ms | iters: 31     | obj: 8.586481e+00  | CPU: 12.993 MiB | GPU: 61.717 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time: 709.545 ms | iters: 18     | obj: 8.889088e+00  | CPU:  71.26 MiB
│  │  ✓ | exa_gpu  | time: 188.985 ms | iters: 22     | obj: 8.291850e+00  | CPU: 12.801 MiB | GPU: 116.519 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:   1.195 s  | iters: 13     | obj: 8.889279e+00  | CPU: 121.36 MiB
│  │  ✓ | exa_gpu  | time: 278.560 ms | iters: 20     | obj: 7.725138e+00  | CPU: 17.206 MiB | GPU: 229.899 MiB
│  └─
└─

┌─ Problem: chain
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  32.404 ms | iters: 6      | obj: 5.068510e+00  | CPU:   6.74 MiB
│  │  ✓ | exa_gpu  | time:  94.948 ms | iters: 13     | obj: 5.065447e+00  | CPU:  6.461 MiB | GPU: 19.022 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time: 293.485 ms | iters: 5      | obj: 5.068475e+00  | CPU:  31.13 MiB
│  │  ✓ | exa_gpu  | time: 149.237 ms | iters: 16     | obj: 5.053179e+00  | CPU: 11.571 MiB | GPU: 96.378 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time: 650.831 ms | iters: 5      | obj: 5.068449e+00  | CPU:  61.82 MiB
│  │  ✓ | exa_gpu  | time:   3.086 s  | iters: 381    | obj: 5.037594e+00  | CPU: 190.148 MiB | GPU: 539.044 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:   1.474 s  | iters: 5      | obj: 5.068381e+00  | CPU: 123.19 MiB
│  │  ✓ | exa_gpu  | time: 279.554 ms | iters: 10     | obj: 5.005905e+00  | CPU: 23.876 MiB | GPU: 374.863 MiB
│  └─
└─

┌─ Problem: double_oscillator
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  41.941 ms | iters: 5      | obj: 9.110070e-04  | CPU:  13.30 MiB
│  │  ✓ | exa_gpu  | time:  73.931 ms | iters: 8      | obj: 8.386344e-04  | CPU:  6.157 MiB | GPU: 37.826 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time: 501.971 ms | iters: 5      | obj: 9.110369e-04  | CPU:  64.60 MiB
│  │  ✓ | exa_gpu  | time: 105.986 ms | iters: 4      | obj: 9.079947e-04  | CPU: 13.689 MiB | GPU: 186.410 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time:   1.190 s  | iters: 5      | obj: 9.110439e-04  | CPU: 128.74 MiB
│  │  ✓ | exa_gpu  | time: 149.006 ms | iters: 4      | obj: 9.048850e-04  | CPU: 24.683 MiB | GPU: 372.791 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:   2.475 s  | iters: 5      | obj: 9.110587e-04  | CPU: 257.01 MiB
│  │  ✓ | exa_gpu  | time: 274.168 ms | iters: 4      | obj: 8.986602e-04  | CPU: 46.576 MiB | GPU: 745.534 MiB
│  └─
└─

┌─ Problem: ducted_fan
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:   1.822 s  | iters: 73     | obj: 1.831625e+03  | CPU:  64.56 MiB
│  │  ✓ | exa_gpu  | time:   1.990 s  | iters: 128    | obj: 1.828961e+03  | CPU: 67.682 MiB | GPU: 91.199 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time:  18.452 s  | iters: 114    | obj: 1.831617e+03  | CPU: 604.21 MiB
│  │  ✓ | exa_gpu  | time:   2.450 s  | iters: 39     | obj: 1.818331e+03  | CPU: 38.945 MiB | GPU: 352.288 MiB
│  │
│  │  N = 10000
│  │  ✗ | exa      | time:  25.351 s  | iters: 69     | obj: 1.176093e+02  | CPU: 982.00 MiB
│  │  ✓ | exa_gpu  | time:  18.363 s  | iters: 195    | obj: 1.805046e+03  | CPU: 129.065 MiB | GPU:  1.036 GiB
│  │
│  │  N = 20000
│  │  ✗ | exa      | time:  38.219 s  | iters: 51     | obj: 1.209192e+02  | CPU:   1.47 GiB
│  │  ✓ | exa_gpu  | time:   8.850 s  | iters: 39     | obj: 1.778428e+03  | CPU: 92.847 MiB | GPU:  1.373 GiB
│  └─
└─

┌─ Problem: electric_vehicle
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  14.249 ms | iters: 3      | obj: 1.228585e+03  | CPU:   6.35 MiB
│  │  ✓ | exa_gpu  | time:  77.745 ms | iters: 11     | obj: 1.227994e+03  | CPU:  5.934 MiB | GPU: 17.560 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time: 133.353 ms | iters: 3      | obj: 1.228581e+03  | CPU:  29.99 MiB
│  │  ✓ | exa_gpu  | time: 140.211 ms | iters: 12     | obj: 1.225635e+03  | CPU: 10.413 MiB | GPU: 88.029 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time: 287.375 ms | iters: 3      | obj: 1.228580e+03  | CPU:  59.53 MiB
│  │  ✓ | exa_gpu  | time: 123.226 ms | iters: 12     | obj: 1.222695e+03  | CPU: 15.532 MiB | GPU: 176.041 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time: 615.173 ms | iters: 3      | obj: 1.228580e+03  | CPU: 118.61 MiB
│  │  ✓ | exa_gpu  | time: 152.513 ms | iters: 12     | obj: 1.216825e+03  | CPU: 25.725 MiB | GPU: 352.017 MiB
│  └─
└─

┌─ Problem: glider
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  11.694 s  | iters: 734    | obj: 1.247985e+03  | CPU: 318.61 MiB
│  │  ✗ | exa_gpu  | time:  15.775 s  | iters: 1000   | obj: 4.844329e+02  | CPU: 728.718 MiB | GPU: 229.086 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time:  63.954 s  | iters: 522    | obj: 1.247987e+03  | CPU:   1.16 GiB
│  │  ✗ | exa_gpu  | time:  51.766 s  | iters: 1000   | obj: 1.608127e+02  | CPU: 815.543 MiB | GPU:  1.123 GiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time: 118.944 s  | iters: 459    | obj: 1.247987e+03  | CPU:   2.02 GiB
│  │  ✗ | exa_gpu  | time:  92.661 s  | iters: 1001   | obj: 4.606562e+02  | CPU: 777.179 MiB | GPU:  2.229 GiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time: 478.781 s  | iters: 889    | obj: 1.247987e+03  | CPU:   7.40 GiB
│  │  ✗ | exa_gpu  | time: 174.547 s  | iters: 1000   | obj: 2.089172e+02  | CPU: 880.450 MiB | GPU:  4.483 GiB
│  └─
└─

┌─ Problem: insurance
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  11.981 s  | iters: 538    | obj: 2.059433e+00  | CPU: 462.87 MiB
│  │  ✓ | exa_gpu  | time: 677.319 ms | iters: 61     | obj: 1.175172e+00  | CPU: 28.299 MiB | GPU: 57.496 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time:  90.931 s  | iters: 752    | obj: 2.059534e+00  | CPU:   3.20 GiB
│  │  ✓ | exa_gpu  | time:   3.639 s  | iters: 240    | obj: 1.173336e+00  | CPU: 111.896 MiB | GPU: 586.317 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time: 149.618 s  | iters: 558    | obj: 2.059237e+00  | CPU:   4.81 GiB
│  │  ✓ | exa_gpu  | time:   8.438 s  | iters: 267    | obj: 1.171076e+00  | CPU: 133.215 MiB | GPU:  1.245 GiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time: 417.566 s  | iters: 636    | obj: 2.058537e+00  | CPU:  12.56 GiB
│  │  ✓ | exa_gpu  | time:   4.110 s  | iters: 78     | obj: 1.166456e+00  | CPU: 72.228 MiB | GPU:  1.227 GiB
│  └─
└─

┌─ Problem: jackson
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time: 100.876 ms | iters: 20     | obj: 1.918046e-01  | CPU:  21.63 MiB
│  │  ✓ | exa_gpu  | time: 244.165 ms | iters: 31     | obj: -7.511061e-07 | CPU: 13.240 MiB | GPU: 34.912 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time: 835.547 ms | iters: 19     | obj: 1.917600e-01  | CPU: 103.29 MiB
│  │  ✓ | exa_gpu  | time: 261.906 ms | iters: 22     | obj: -3.468065e-07 | CPU: 17.824 MiB | GPU: 167.117 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time:   1.677 s  | iters: 18     | obj: 1.917093e-01  | CPU: 200.21 MiB
│  │  ✓ | exa_gpu  | time: 324.103 ms | iters: 23     | obj: -7.464148e-07 | CPU: 27.904 MiB | GPU: 335.868 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:   3.543 s  | iters: 18     | obj: 1.916118e-01  | CPU: 399.88 MiB
│  │  ✓ | exa_gpu  | time: 446.990 ms | iters: 22     | obj: 5.098141e-07  | CPU: 46.384 MiB | GPU: 667.967 MiB
│  └─
└─

┌─ Problem: robbins
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time: 174.625 ms | iters: 47     | obj: 1.944023e+01  | CPU:  15.11 MiB
│  │  ✓ | exa_gpu  | time: 194.949 ms | iters: 25     | obj: 1.942160e+01  | CPU: 10.049 MiB | GPU: 17.509 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time:   2.038 s  | iters: 63     | obj: 1.943235e+01  | CPU:  89.39 MiB
│  │  ✓ | exa_gpu  | time: 942.448 ms | iters: 107    | obj: 1.934096e+01  | CPU: 39.955 MiB | GPU: 130.364 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time:   3.105 s  | iters: 43     | obj: 1.943232e+01  | CPU: 136.58 MiB
│  │  ✓ | exa_gpu  | time: 943.781 ms | iters: 88     | obj: 1.925063e+01  | CPU: 37.557 MiB | GPU: 240.557 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:   8.603 s  | iters: 60     | obj: 1.943274e+01  | CPU: 342.63 MiB
│  │  ✓ | exa_gpu  | time:   2.443 s  | iters: 203    | obj: 1.907192e+01  | CPU: 82.754 MiB | GPU: 719.872 MiB
│  └─
└─

┌─ Problem: robot
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time: 629.781 ms | iters: 27     | obj: 9.141204e+00  | CPU:  42.55 MiB
│  │  ✓ | exa_gpu  | time: 567.558 ms | iters: 30     | obj: 9.123238e+00  | CPU: 18.604 MiB | GPU: 66.837 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time:   8.045 s  | iters: 41     | obj: 9.142359e+00  | CPU: 307.02 MiB
│  │  ✓ | exa_gpu  | time:   1.656 s  | iters: 27     | obj: 9.053093e+00  | CPU: 29.255 MiB | GPU: 329.227 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time:  20.004 s  | iters: 47     | obj: 9.143634e+00  | CPU: 754.05 MiB
│  │  ✓ | exa_gpu  | time:   3.635 s  | iters: 32     | obj: 8.965878e+00  | CPU: 47.582 MiB | GPU: 672.443 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:  31.611 s  | iters: 40     | obj: 9.146361e+00  | CPU:   1.22 GiB
│  │  ✓ | exa_gpu  | time:   8.687 s  | iters: 45     | obj: 8.792951e+00  | CPU: 86.753 MiB | GPU:  1.383 GiB
│  └─
└─

┌─ Problem: rocket
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time: 120.784 ms | iters: 18     | obj: 1.012710e+00  | CPU:  19.97 MiB
│  │  ✓ | exa_gpu  | time: 487.402 ms | iters: 45     | obj: 1.000000e+00  | CPU: 19.685 MiB | GPU: 43.252 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time: 765.380 ms | iters: 18     | obj: 1.012223e+00  | CPU:  97.64 MiB
│  │  ✓ | exa_gpu  | time: 791.115 ms | iters: 27     | obj: 1.000007e+00  | CPU: 21.805 MiB | GPU: 201.423 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time:   1.569 s  | iters: 17     | obj: 1.011682e+00  | CPU: 190.76 MiB
│  │  ✓ | exa_gpu  | time:   1.237 s  | iters: 24     | obj: 1.000001e+00  | CPU: 31.669 MiB | GPU: 397.830 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:   3.708 s  | iters: 17     | obj: 1.010835e+00  | CPU: 380.97 MiB
│  │  ✓ | exa_gpu  | time:   2.196 s  | iters: 26     | obj: 9.999998e-01  | CPU: 54.043 MiB | GPU: 801.869 MiB
│  └─
└─

┌─ Problem: space_shuttle
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  13.974 s  | iters: 340    | obj: 3.050195e-01  | CPU: 599.44 MiB
│  │  ✓ | exa_gpu  | time:   7.936 s  | iters: 313    | obj: -8.632556e-02 | CPU: 227.357 MiB | GPU: 272.192 MiB
│  │
│  │  N = 5000
│  │  ✗ | exa      | time:  77.126 s  | iters: 301    | obj: -9.202651e-01 | CPU:   1.95 GiB
│  │  ✗ | exa_gpu  | time:  26.056 s  | iters: 318    | obj: -7.180258e-01 | CPU: 306.997 MiB | GPU:  1.329 GiB
│  │
│  │  N = 10000
│  │  ✗ | exa      | time:  92.599 s  | iters: 185    | obj: 2.310158e-01  | CPU:   2.92 GiB
│  │  ✗ | exa_gpu  | time:  24.083 s  | iters: 181    | obj: 6.151902e-01  | CPU: 262.857 MiB | GPU:  2.235 GiB
│  │
│  │  N = 20000
│  │  ✗ | exa      | time: 148.867 s  | iters: 147    | obj: 6.185205e-01  | CPU:   4.85 GiB
│  │  ✗ | exa_gpu  | time:  55.286 s  | iters: 230    | obj: -2.953102e-03 | CPU: 431.684 MiB | GPU:  4.737 GiB
│  └─
└─

┌─ Problem: steering
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time: 151.281 ms | iters: 15     | obj: 5.545711e-01  | CPU:  12.58 MiB
│  │  ✓ | exa_gpu  | time: 225.975 ms | iters: 14     | obj: 5.545599e-01  | CPU:  8.125 MiB | GPU: 27.359 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time:   1.248 s  | iters: 16     | obj: 5.545709e-01  | CPU:  62.15 MiB
│  │  ✓ | exa_gpu  | time: 817.556 ms | iters: 16     | obj: 5.545179e-01  | CPU: 14.275 MiB | GPU: 138.008 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time:   2.995 s  | iters: 18     | obj: 5.545709e-01  | CPU: 129.56 MiB
│  │  ✓ | exa_gpu  | time:   1.260 s  | iters: 16     | obj: 5.544658e-01  | CPU: 21.192 MiB | GPU: 275.910 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time:  11.733 s  | iters: 34     | obj: 5.545709e-01  | CPU: 351.46 MiB
│  │  ✓ | exa_gpu  | time:   2.869 s  | iters: 19     | obj: 5.543620e-01  | CPU: 36.279 MiB | GPU: 559.601 MiB
│  └─
└─

┌─ Problem: vanderpol
│
├──┬ Solver: madnlp, Discretization: trapeze
│  │
│  │  N = 1000
│  │  ✓ | exa      | time:  13.843 ms | iters: 3      | obj: 1.047808e+00  | CPU:   6.51 MiB
│  │  ✓ | exa_gpu  | time:  74.323 ms | iters: 7      | obj: 1.045639e+00  | CPU:  4.413 MiB | GPU: 17.544 MiB
│  │
│  │  N = 5000
│  │  ✓ | exa      | time: 139.303 ms | iters: 3      | obj: 1.047807e+00  | CPU:  30.82 MiB
│  │  ✓ | exa_gpu  | time:  85.178 ms | iters: 7      | obj: 1.036994e+00  | CPU:  8.680 MiB | GPU: 87.681 MiB
│  │
│  │  N = 10000
│  │  ✓ | exa      | time: 310.716 ms | iters: 3      | obj: 1.047807e+00  | CPU:  61.20 MiB
│  │  ✓ | exa_gpu  | time: 101.549 ms | iters: 7      | obj: 1.026238e+00  | CPU: 13.951 MiB | GPU: 175.349 MiB
│  │
│  │  N = 20000
│  │  ✓ | exa      | time: 584.383 ms | iters: 2      | obj: 1.047731e+00  | CPU: 119.67 MiB
│  │  ✓ | exa_gpu  | time: 135.861 ms | iters: 7      | obj: 1.004888e+00  | CPU: 24.456 MiB | GPU: 350.659 MiB
│  └─
└─