19 #ifndef HIGHWAY_HWY_CONTRIB_SORT_RESULT_INL_H_
20 #define HIGHWAY_HWY_CONTRIB_SORT_RESULT_INL_H_
47 std::sort(seconds.begin(), seconds.end());
50 for (
size_t i =
kReps / 4; i < seconds.size() -
kReps / 2; ++i) {
61 #if defined(HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE) == \
62 defined(HWY_TARGET_TOGGLE)
63 #ifdef HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE
64 #undef HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE
66 #define HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE
89 const double bytes =
static_cast<double>(
num) *
92 printf(
"%10s: %12s: %7s: %9s: %.2E %4.0f MB/s (%2zu threads)\n",
109 template <
typename T,
class Traits>
111 size_t num_threads,
double sec) {
115 sizeof(T), string100);
118 template <
class Traits,
typename T>
120 size_t num,
const char* caller) {
121 constexpr
size_t N1 = st.Is128() ? 2 : 1;
126 for (
size_t i = 0; i < num - N1; i += N1) {
127 output_stats.
Notify(out[i]);
128 if (N1 == 2) output_stats.
Notify(out[i + 1]);
130 if (st.Compare1(out + i + N1, out + i)) {
131 printf(
"%s: i=%d of %d: N1=%d %5.0f %5.0f vs. %5.0f %5.0f\n\n", caller,
132 static_cast<int>(i),
static_cast<int>(num),
static_cast<int>(N1),
133 double(out[i + 1]),
double(out[i + 0]),
double(out[i + N1 + 1]),
134 double(out[i + N1]));
136 static_cast<int>(
sizeof(T) * 8 * N1));
139 output_stats.
Notify(out[num - N1]);
140 if (N1 == 2) output_stats.
Notify(out[num - N1 + 1]);
142 return input_stats == output_stats;
#define HWY_ABORT(format,...)
Definition: base.h:143
#define HWY_ASSERT(condition)
Definition: base.h:147
#define HWY_TARGET
Definition: detect_targets.h:328
bool VerifySort(Traits st, const InputStats< T > &input_stats, const T *out, size_t num, const char *caller)
Definition: result-inl.h:119
Result MakeResult(const Algo algo, Dist dist, Traits st, size_t num, size_t num_threads, double sec)
Definition: result-inl.h:110
HWY_DLLEXPORT void TypeName(const TypeInfo &info, size_t N, char *string100)
Definition: aligned_allocator.h:27
const char * AlgoName(Algo algo)
Definition: algo-inl.h:137
double SecondsSince(const Timestamp &t0)
Definition: result-inl.h:37
Dist
Definition: algo-inl.h:55
const char * DistName(Dist dist)
Definition: algo-inl.h:61
static HWY_MAYBE_UNUSED const char * TargetName(uint32_t target)
Definition: targets.h:80
constexpr size_t kReps
Definition: result-inl.h:42
Algo
Definition: algo-inl.h:116
double SummarizeMeasurements(std::vector< double > &seconds)
Definition: result-inl.h:46
#define HWY_NAMESPACE
Definition: set_macros-inl.h:80
Definition: result-inl.h:73
double sec
Definition: result-inl.h:104
uint32_t target
Definition: result-inl.h:98
size_t sizeof_t
Definition: result-inl.h:105
Algo algo
Definition: result-inl.h:99
bool is128
Definition: result-inl.h:101
Dist dist
Definition: result-inl.h:100
std::string type_name
Definition: result-inl.h:106
size_t num
Definition: result-inl.h:102
void Print() const
Definition: result-inl.h:88
size_t num_threads
Definition: result-inl.h:103
Result()
Definition: result-inl.h:74
Result(const uint32_t target, const Algo algo, Dist dist, bool is128, size_t num, size_t num_threads, double sec, size_t sizeof_t, const char *type_name)
Definition: result-inl.h:75
Definition: result-inl.h:32
double t
Definition: result-inl.h:34
Timestamp()
Definition: result-inl.h:33