19#ifndef HIGHWAY_HWY_CONTRIB_SORT_RESULT_INL_H_
20#define HIGHWAY_HWY_CONTRIB_SORT_RESULT_INL_H_
45 std::sort(seconds.begin(), seconds.end());
48 const size_t num = seconds.size();
49 for (
size_t i = num / 4; i < num / 2; ++i) {
60#if defined(HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE) == \
61 defined(HWY_TARGET_TOGGLE)
62#ifdef HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE
63#undef HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE
65#define HIGHWAY_HWY_CONTRIB_SORT_RESULT_TOGGLE
86 const double bytes =
static_cast<double>(
num_keys) *
89 printf(
"%10s: %12s: %7s: %9s: %.2E %4.0f MB/s (%2zu threads)\n",
105template <
class Traits,
typename LaneType>
107 const LaneType* out,
size_t num_lanes,
const char* caller) {
108 constexpr size_t N1 = st.LanesPerKey();
113 for (
size_t i = 0; i < num_lanes - N1; i += N1) {
114 output_stats.
Notify(out[i]);
115 if (N1 == 2) output_stats.
Notify(out[i + 1]);
117 if (st.Compare1(out + i + N1, out + i)) {
118 printf(
"%s: i=%d of %d lanes: N1=%d %5.0f %5.0f vs. %5.0f %5.0f\n\n",
119 caller,
static_cast<int>(i),
static_cast<int>(num_lanes),
120 static_cast<int>(N1),
static_cast<double>(out[i + 1]),
121 static_cast<double>(out[i + 0]),
122 static_cast<double>(out[i + N1 + 1]),
123 static_cast<double>(out[i + N1]));
125 static_cast<int>(
sizeof(
LaneType) * 8 * N1));
128 output_stats.
Notify(out[num_lanes - N1]);
129 if (N1 == 2) output_stats.
Notify(out[num_lanes - N1 + 1]);
131 return input_stats == output_stats;
#define HWY_ABORT(format,...)
Definition base.h:188
#define HWY_ASSERT(condition)
Definition base.h:192
#define HWY_TARGET
Definition detect_targets.h:380
bool VerifySort(Traits st, const InputStats< LaneType > &input_stats, const LaneType *out, size_t num_lanes, const char *caller)
Definition result-inl.h:106
decltype(GetLane(V())) LaneType
Definition generic_ops-inl.h:33
Definition aligned_allocator.h:27
static const char * DistName(Dist dist)
Definition algo-inl.h:105
Dist
Definition algo-inl.h:99
static const char * AlgoName(Algo algo)
Definition algo-inl.h:186
static HWY_MAYBE_UNUSED const char * TargetName(int64_t target)
Definition targets.h:85
static double SummarizeMeasurements(std::vector< double > &seconds)
Definition result-inl.h:44
Algo
Definition algo-inl.h:162
static double SecondsSince(const Timestamp &t0)
Definition result-inl.h:37
#define HWY_NAMESPACE
Definition set_macros-inl.h:82
Definition result-inl.h:72
double sec
Definition result-inl.h:100
Algo algo
Definition result-inl.h:96
size_t sizeof_key
Definition result-inl.h:101
Dist dist
Definition result-inl.h:97
void Print() const
Definition result-inl.h:85
int64_t target
Definition result-inl.h:95
std::string key_name
Definition result-inl.h:102
size_t num_threads
Definition result-inl.h:99
Result()
Definition result-inl.h:73
Result(const Algo algo, Dist dist, size_t num_keys, size_t num_threads, double sec, size_t sizeof_key, const std::string &key_name)
Definition result-inl.h:74
size_t num_keys
Definition result-inl.h:98
Definition result-inl.h:32
double t
Definition result-inl.h:34
Timestamp()
Definition result-inl.h:33