9#include "sleipnir/util/time_tracer.hpp"
16enum class SetupTimeTracerID : uint8_t {
36enum class SolveTimeTracerID : uint8_t {
56 FEASIBILITY_RESTORATION,
70 INEQUALITY_CONSTRAINTS,
76inline constexpr std::array newton_setup_time_trace{
77 TimeTraceEntry{SetupTimeTracerID::SETUP,
"setup", 0},
78 TimeTraceEntry{SetupTimeTracerID::GRADIENT,
"∇f(x)", 1},
79 TimeTraceEntry{SetupTimeTracerID::HESSIAN,
"∇²ₓₓL", 1},
83inline constexpr std::array sqp_setup_time_trace{
84 TimeTraceEntry{SetupTimeTracerID::SETUP,
"setup", 0},
85 TimeTraceEntry{SetupTimeTracerID::GRADIENT,
"∇f(x)", 1},
86 TimeTraceEntry{SetupTimeTracerID::HESSIAN,
"∇²ₓₓL", 1},
87 TimeTraceEntry{SetupTimeTracerID::HESSIAN_COST,
"∇²ₓₓL_f", 2},
88 TimeTraceEntry{SetupTimeTracerID::HESSIAN_CONSTRAINTS,
"∇²ₓₓL_c", 2},
89 TimeTraceEntry{SetupTimeTracerID::EQUALITY_JACOBIAN,
"∂cₑ/∂x", 1},
93inline constexpr std::array ipm_setup_time_trace{
94 TimeTraceEntry{SetupTimeTracerID::SETUP,
"setup", 0},
95 TimeTraceEntry{SetupTimeTracerID::GRADIENT,
"∇f(x)", 1},
96 TimeTraceEntry{SetupTimeTracerID::HESSIAN,
"∇²ₓₓL", 1},
97 TimeTraceEntry{SetupTimeTracerID::HESSIAN_COST,
"∇²ₓₓL_f", 2},
98 TimeTraceEntry{SetupTimeTracerID::HESSIAN_CONSTRAINTS,
"∇²ₓₓL_c", 2},
99 TimeTraceEntry{SetupTimeTracerID::EQUALITY_JACOBIAN,
"∂cₑ/∂x", 1},
100 TimeTraceEntry{SetupTimeTracerID::INEQUALITY_JACOBIAN,
"∂cᵢ/∂x", 1},
104inline constexpr std::array newton_time_trace{
105 TimeTraceEntry{SolveTimeTracerID::SOLVER,
"solver", 0},
106 TimeTraceEntry{SolveTimeTracerID::SETUP,
"setup", 1},
107 TimeTraceEntry{SolveTimeTracerID::ITERATION,
"iteration", 1},
108 TimeTraceEntry{SolveTimeTracerID::CALLBACKS,
"callbacks", 2},
109 TimeTraceEntry{SolveTimeTracerID::KKT_MATRIX_DECOMP,
"KKT matrix decomp",
111 TimeTraceEntry{SolveTimeTracerID::KKT_SYSTEM_SOLVE,
"KKT system solve", 2},
112 TimeTraceEntry{SolveTimeTracerID::LINE_SEARCH,
"line search", 2},
113 TimeTraceEntry{SolveTimeTracerID::COST,
"f(x)", 2},
114 TimeTraceEntry{SolveTimeTracerID::GRADIENT,
"∇f(x)", 2},
115 TimeTraceEntry{SolveTimeTracerID::HESSIAN,
"∇²ₓₓL", 2},
119inline constexpr std::array sqp_time_trace{
120 TimeTraceEntry{SolveTimeTracerID::SOLVER,
"solver", 0},
121 TimeTraceEntry{SolveTimeTracerID::SETUP,
"setup", 1},
122 TimeTraceEntry{SolveTimeTracerID::ITERATION,
"iteration", 1},
123 TimeTraceEntry{SolveTimeTracerID::CALLBACKS,
"callbacks", 2},
124 TimeTraceEntry{SolveTimeTracerID::KKT_MATRIX_BUILD,
"KKT matrix build", 2},
125 TimeTraceEntry{SolveTimeTracerID::KKT_MATRIX_DECOMP,
"KKT matrix decomp",
127 TimeTraceEntry{SolveTimeTracerID::KKT_SYSTEM_SOLVE,
"KKT system solve", 2},
128 TimeTraceEntry{SolveTimeTracerID::LINE_SEARCH,
"line search", 2},
129 TimeTraceEntry{SolveTimeTracerID::SOC,
"SOC", 3},
130 TimeTraceEntry{SolveTimeTracerID::FEASIBILITY_RESTORATION,
131 "feas. restoration", 2},
132 TimeTraceEntry{SolveTimeTracerID::COST,
"f(x)", 2},
133 TimeTraceEntry{SolveTimeTracerID::GRADIENT,
"∇f(x)", 2},
134 TimeTraceEntry{SolveTimeTracerID::HESSIAN,
"∇²ₓₓL", 2},
135 TimeTraceEntry{SolveTimeTracerID::HESSIAN_CONSTRAINTS,
"∇²ₓₓL_c", 2},
136 TimeTraceEntry{SolveTimeTracerID::EQUALITY_CONSTRAINTS,
"cₑ(x)", 2},
137 TimeTraceEntry{SolveTimeTracerID::EQUALITY_JACOBIAN,
"∂cₑ/∂x", 2},
141inline constexpr std::array ipm_time_trace{
142 TimeTraceEntry{SolveTimeTracerID::SOLVER,
"solver", 0},
143 TimeTraceEntry{SolveTimeTracerID::SETUP,
"setup", 1},
144 TimeTraceEntry{SolveTimeTracerID::ITERATION,
"iteration", 1},
145 TimeTraceEntry{SolveTimeTracerID::CALLBACKS,
"callbacks", 2},
146 TimeTraceEntry{SolveTimeTracerID::KKT_MATRIX_BUILD,
"KKT matrix build", 2},
147 TimeTraceEntry{SolveTimeTracerID::KKT_MATRIX_DECOMP,
"KKT matrix decomp",
149 TimeTraceEntry{SolveTimeTracerID::KKT_SYSTEM_SOLVE,
"KKT system solve", 2},
150 TimeTraceEntry{SolveTimeTracerID::LINE_SEARCH,
"line search", 2},
151 TimeTraceEntry{SolveTimeTracerID::SOC,
"SOC", 3},
152 TimeTraceEntry{SolveTimeTracerID::FEASIBILITY_RESTORATION,
153 "feas. restoration", 2},
154 TimeTraceEntry{SolveTimeTracerID::COST,
"f(x)", 2},
155 TimeTraceEntry{SolveTimeTracerID::GRADIENT,
"∇f(x)", 2},
156 TimeTraceEntry{SolveTimeTracerID::HESSIAN,
"∇²ₓₓL", 2},
157 TimeTraceEntry{SolveTimeTracerID::HESSIAN_CONSTRAINTS,
"∇²ₓₓL_c", 2},
158 TimeTraceEntry{SolveTimeTracerID::EQUALITY_CONSTRAINTS,
"cₑ(x)", 2},
159 TimeTraceEntry{SolveTimeTracerID::EQUALITY_JACOBIAN,
"∂cₑ/∂x", 2},
160 TimeTraceEntry{SolveTimeTracerID::INEQUALITY_CONSTRAINTS,
"cᵢ(x)", 2},
161 TimeTraceEntry{SolveTimeTracerID::INEQUALITY_JACOBIAN,
"∂cᵢ/∂x", 2},