@@ -21,13 +21,14 @@ int main(int argc, char **argv)
21
21
{
22
22
using ar_type = double ;
23
23
using st_type = float ;
24
+ using size_type = matrix_info::size_type;
24
25
25
- constexpr std:: size_t min_size{1'000'000 };
26
- constexpr std:: size_t default_max_size{535 * 1000 * 1000 };
26
+ constexpr size_type min_size{1'000'000 };
27
+ constexpr size_type default_max_size{535 * 1000 * 1000 };
27
28
constexpr char DELIM{' ;' };
28
29
29
30
bool detailed_error{false };
30
- std:: size_t max_size{default_max_size};
31
+ size_type max_size{default_max_size};
31
32
32
33
const std::string use_error_string (" --error" );
33
34
const std::string set_size_string (" --size" );
@@ -84,7 +85,7 @@ int main(int argc, char **argv)
84
85
return static_cast <ar_type>(st_data.get_result ());
85
86
};
86
87
87
- constexpr std:: size_t benchmark_reference{0 };
88
+ constexpr size_type benchmark_reference{0 };
88
89
using benchmark_info_t =
89
90
std::tuple<std::string, std::function<void (matrix_info, matrix_info)>,
90
91
std::function<ar_type ()>>;
@@ -139,7 +140,7 @@ int main(int argc, char **argv)
139
140
st_data.gpu_y (), st_data.gpu_res ());
140
141
},
141
142
st_get_result}};
142
- const std:: size_t benchmark_num{benchmark_info.size ()};
143
+ const size_type benchmark_num{static_cast <size_type>( benchmark_info.size () )};
143
144
144
145
145
146
std::cout << " Vector Size" ;
@@ -163,32 +164,32 @@ int main(int argc, char **argv)
163
164
};
164
165
165
166
// Number of elements of a vector at the start of the benchmark
166
- const std:: size_t start = std::min (max_size, min_size);
167
+ const size_type start = std::min (max_size, min_size);
167
168
// Increase in number of elements between consecutive benchmark runs
168
- constexpr std:: size_t row_incr = 2'000'000 ;
169
+ constexpr size_type row_incr = 2'000'000 ;
169
170
// Number of benchmark runs (ignoring randomization)
170
- const std:: size_t steps =
171
+ const size_type steps =
171
172
(max_size < start) ? 0 : (max_size - start) / row_incr;
172
173
// Number of benchmark restarts with a different randomization for vectors
173
174
// Only used for a detailed error run
174
- constexpr std:: size_t max_randomize_num{10 };
175
+ constexpr size_type max_randomize_num{10 };
175
176
176
- std::vector<std:: size_t > benchmark_vec_size ((steps + 1 ));
177
+ std::vector<size_type > benchmark_vec_size ((steps + 1 ));
177
178
std::vector<double > benchmark_time ((steps + 1 ) * benchmark_num);
178
179
// std::vector<ar_type> benchmark_error((steps + 1) * benchmark_num);
179
180
// stores the result for all different benchmark runs to compute the error
180
181
const auto actual_randomize_num = detailed_error ? max_randomize_num : 1 ;
181
182
std::vector<ar_type> raw_result (actual_randomize_num * (steps + 1 ) *
182
183
benchmark_num);
183
184
const auto get_raw_idx = [benchmark_num, actual_randomize_num](
184
- std:: size_t rnd, std:: size_t step,
185
- std:: size_t bi) {
185
+ size_type rnd, size_type step,
186
+ size_type bi) {
186
187
return step * actual_randomize_num * benchmark_num +
187
188
bi * actual_randomize_num + rnd;
188
189
};
189
190
190
191
// Run all benchmarks and collect the raw data here
191
- for (std:: size_t randomize = 0 ; randomize < actual_randomize_num;
192
+ for (size_type randomize = 0 ; randomize < actual_randomize_num;
192
193
++randomize) {
193
194
if (randomize != 0 ) {
194
195
write_random ({{max_size, 1 }}, vector_dist, rengine,
@@ -198,14 +199,14 @@ int main(int argc, char **argv)
198
199
ar_data.copy_cpu_to_gpu ();
199
200
st_data.convert_from (ar_data);
200
201
}
201
- for (std:: size_t vec_size = start, i = 0 ; vec_size <= max_size;
202
+ for (size_type vec_size = start, i = 0 ; vec_size <= max_size;
202
203
vec_size += row_incr, ++i) {
203
204
benchmark_vec_size.at (i) = vec_size;
204
205
const matrix_info x_info{{vec_size, 1 }};
205
206
const matrix_info y_info{{vec_size, 1 }};
206
207
207
- for (std:: size_t bi = 0 ; bi < benchmark_num; ++bi) {
208
- const std:: size_t idx = i * benchmark_num + bi;
208
+ for (size_type bi = 0 ; bi < benchmark_num; ++bi) {
209
+ const size_type idx = i * benchmark_num + bi;
209
210
auto curr_lambda = [&]() {
210
211
std::get<1 >(benchmark_info[bi])(x_info, y_info);
211
212
};
@@ -218,26 +219,26 @@ int main(int argc, char **argv)
218
219
}
219
220
220
221
// Print the evaluated results
221
- for (std:: size_t i = 0 ; i <= steps; ++i) {
222
+ for (size_type i = 0 ; i <= steps; ++i) {
222
223
if (!detailed_error) {
223
224
std::cout << benchmark_vec_size[i];
224
- for (std:: size_t bi = 0 ; bi < benchmark_num; ++bi) {
225
+ for (size_type bi = 0 ; bi < benchmark_num; ++bi) {
225
226
std::cout << DELIM << benchmark_time[i * benchmark_num + bi];
226
227
}
227
228
const auto result_ref =
228
229
raw_result[get_raw_idx (0 , i, benchmark_reference)];
229
- for (std:: size_t bi = 0 ; bi < benchmark_num; ++bi) {
230
+ for (size_type bi = 0 ; bi < benchmark_num; ++bi) {
230
231
std::cout << DELIM
231
232
<< get_error (raw_result[i * benchmark_num + bi],
232
233
result_ref);
233
234
}
234
235
std::cout << ' \n ' ;
235
236
} else {
236
237
std::cout << benchmark_vec_size[i];
237
- for (std:: size_t bi = 0 ; bi < benchmark_num; ++bi) {
238
+ for (size_type bi = 0 ; bi < benchmark_num; ++bi) {
238
239
// sort and compute the median
239
240
std::array<ar_type, max_randomize_num> local_error;
240
- for (std:: size_t rnd = 0 ; rnd < actual_randomize_num; ++rnd) {
241
+ for (size_type rnd = 0 ; rnd < actual_randomize_num; ++rnd) {
241
242
const auto result_ref =
242
243
raw_result[get_raw_idx (rnd, i, benchmark_reference)];
243
244
local_error[rnd] = get_error (
@@ -270,11 +271,11 @@ int main(int argc, char **argv)
270
271
std::cout << DELIM << " Result " << std::get<0 >(info);
271
272
}
272
273
std::cout << ' \n ' ;
273
- for (std:: size_t i = 0 ; i <= steps; ++i) {
274
- for (std:: size_t randomize = 0 ; randomize < actual_randomize_num;
274
+ for (size_type i = 0 ; i <= steps; ++i) {
275
+ for (size_type randomize = 0 ; randomize < actual_randomize_num;
275
276
++randomize) {
276
277
std::cout << randomize << DELIM << benchmark_vec_size[i];
277
- for (std:: size_t bi = 0 ; bi < benchmark_num; ++bi) {
278
+ for (size_type bi = 0 ; bi < benchmark_num; ++bi) {
278
279
std::cout << DELIM << raw_result[get_raw_idx (randomize, i, bi)];
279
280
}
280
281
std::cout << ' \n ' ;
0 commit comments