|
6 | 6 | #include <tuple> // for tuple |
7 | 7 | #include <type_traits> // for move |
8 | 8 | #include <vector> // for vector |
9 | | -#include <xtensor/xlayout.hpp> // for layout_type, layout_type::ro... |
| 9 | +#include <xtensor/xarray.hpp> // for xarray_container |
| 10 | +#include <xtensor/xlayout.hpp> // for layout_type, layout_type::row... |
10 | 11 | #include <xtensor/xmath.hpp> // for sum |
11 | | -#include <xtensor/xoperation.hpp> // for operator* |
| 12 | +#include <xtensor/xoperation.hpp> // for xfunction_type_t, operator* |
| 13 | +#include <xtensor/xreducer.hpp> // for xreducer |
12 | 14 | #include <xtensor/xtensor_forward.hpp> // for xarray |
13 | 15 |
|
14 | 16 | #include "benchmark/benchmark.h" // for BENCHMARK, State, BENCHMARK_... |
|
20 | 22 | */ |
21 | 23 | template <typename Oracle> class my_oracle { |
22 | 24 | using Arr = xt::xarray<double, xt::layout_type::row_major>; |
| 25 | + using Vec = std::valarray<double>; |
23 | 26 | using Cut = std::pair<Arr, double>; |
24 | 27 |
|
25 | 28 | private: |
@@ -138,36 +141,37 @@ static void LMI_old(benchmark::State &state) { |
138 | 141 | } |
139 | 142 | BENCHMARK(LMI_old); |
140 | 143 |
|
141 | | -/** |
142 | | - * @brief |
143 | | - * |
144 | | - * @param[in,out] state |
145 | | - */ |
146 | | -static void LMI_No_Trick(benchmark::State &state) { |
147 | | - using Arr = xt::xarray<double, xt::layout_type::row_major>; |
148 | | - |
149 | | - // const auto c = Arr {1.0, -1.0, 1.0}; |
150 | | - const auto F1 = std::vector<Arr>{{{-7.0, -11.0}, {-11.0, 3.0}}, |
151 | | - {{7.0, -18.0}, {-18.0, 8.0}}, |
152 | | - {{-2.0, -8.0}, {-8.0, 1.0}}}; |
153 | | - const auto B1 = Arr{{33.0, -9.0}, {-9.0, 26.0}}; |
154 | | - const auto F2 = std::vector<Arr>{ |
155 | | - {{-21.0, -11.0, 0.0}, {-11.0, 10.0, 8.0}, {0.0, 8.0, 5.0}}, |
156 | | - {{0.0, 10.0, 16.0}, {10.0, -10.0, -10.0}, {16.0, -10.0, 3.0}}, |
157 | | - {{-5.0, 2.0, -17.0}, {2.0, -6.0, 8.0}, {-17.0, 8.0, 6.0}}}; |
158 | | - const auto B2 = Arr{{14.0, 9.0, 40.0}, {9.0, 91.0, 10.0}, {40.0, 10.0, 15.0}}; |
159 | | - |
160 | | - while (state.KeepRunning()) { |
161 | | - auto P = my_oracle<LmiOracle<Arr>>(F1, B1, F2, B2, Arr{1.0, -1.0, 1.0}); |
162 | | - auto E = Ell<Arr>(10.0, Arr{0.0, 0.0, 0.0}); |
163 | | - E.no_defer_trick = true; |
164 | | - auto t = 1e100; // std::numeric_limits<double>::max() |
165 | | - [[maybe_unused]] const auto rslt = cutting_plane_optim(P, E, t); |
166 | | - } |
167 | | -} |
168 | | - |
169 | | -// Register the function as a benchmark |
170 | | -BENCHMARK(LMI_No_Trick); |
| 144 | +// /** |
| 145 | +// * @brief |
| 146 | +// * |
| 147 | +// * @param[in,out] state |
| 148 | +// */ |
| 149 | +// static void LMI_No_Trick(benchmark::State &state) { |
| 150 | +// using Arr = xt::xarray<double, xt::layout_type::row_major>; |
| 151 | +// |
| 152 | +// // const auto c = Arr {1.0, -1.0, 1.0}; |
| 153 | +// const auto F1 = std::vector<Arr>{{{-7.0, -11.0}, {-11.0, 3.0}}, |
| 154 | +// {{7.0, -18.0}, {-18.0, 8.0}}, |
| 155 | +// {{-2.0, -8.0}, {-8.0, 1.0}}}; |
| 156 | +// const auto B1 = Arr{{33.0, -9.0}, {-9.0, 26.0}}; |
| 157 | +// const auto F2 = std::vector<Arr>{ |
| 158 | +// {{-21.0, -11.0, 0.0}, {-11.0, 10.0, 8.0}, {0.0, 8.0, 5.0}}, |
| 159 | +// {{0.0, 10.0, 16.0}, {10.0, -10.0, -10.0}, {16.0, -10.0, 3.0}}, |
| 160 | +// {{-5.0, 2.0, -17.0}, {2.0, -6.0, 8.0}, {-17.0, 8.0, 6.0}}}; |
| 161 | +// const auto B2 = Arr{{14.0, 9.0, 40.0}, {9.0, 91.0, 10.0}, |
| 162 | +// {40.0, 10.0, 15.0}}; |
| 163 | +// |
| 164 | +// while (state.KeepRunning()) { |
| 165 | +// auto P = my_oracle<LmiOracle<Arr>>(F1, B1, F2, B2, Arr{1.0, -1.0, 1.0}); |
| 166 | +// auto E = Ell<Arr>(10.0, Arr{0.0, 0.0, 0.0}); |
| 167 | +// E.no_defer_trick = true; |
| 168 | +// auto t = 1e100; // std::numeric_limits<double>::max() |
| 169 | +// [[maybe_unused]] const auto rslt = cutting_plane_optim(P, E, t); |
| 170 | +// } |
| 171 | +// } |
| 172 | +// |
| 173 | +// // Register the function as a benchmark |
| 174 | +// BENCHMARK(LMI_No_Trick); |
171 | 175 |
|
172 | 176 | BENCHMARK_MAIN(); |
173 | 177 |
|
|
0 commit comments