HEBench
hebench_simple_set_intersection_l.h
Go to the documentation of this file.
1 
2 // Copyright (C) 2021 Intel Corporation
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #ifndef _HEBench_Harness_SimpleSetIntersection_L_H_0596d40a3cce4b108a81595c50eb286d
6 #define _HEBench_Harness_SimpleSetIntersection_L_H_0596d40a3cce4b108a81595c50eb286d
7 
8 #include <memory>
9 
10 #include "hebench/modules/general/include/nocopy.h"
11 #include "hebench/modules/logging/include/logging.h"
12 
16 
17 namespace hebench {
18 namespace TestHarness {
19 namespace SimpleSetIntersection {
20 namespace Latency {
21 
23 {
24 public:
25  DISABLE_COPY(BenchmarkDescriptor)
26  DISABLE_MOVE(BenchmarkDescriptor)
27 private:
29 public:
30  // TODO: Ask for ID selection
31  static constexpr std::uint32_t BenchmarkID = 1201;
32  static constexpr std::uint64_t DefaultBatchSize = 1; // batch size for a parameter (always 1 for latency)
33 
34 public:
35  BenchmarkDescriptor() = default;
36  ~BenchmarkDescriptor() override = default;
37 
38  hebench::TestHarness::PartialBenchmark *createBenchmark(std::shared_ptr<Engine> p_engine,
39  const DescriptionToken &description_token) override;
41 
42 protected:
44  const std::vector<hebench::APIBridge::WorkloadParam> &w_params) const override;
46  const Engine &engine,
47  const BenchmarkDescription::Backend &backend_desc,
48  const BenchmarkDescription::Configuration &config) const override;
49 
50 private:
51  static bool m_b_registered;
52 };
53 
55 {
56 public:
57  DISABLE_COPY(Benchmark)
58  DISABLE_MOVE(Benchmark)
59 private:
60  IL_DECLARE_CLASS_NAME(SimpleSetIntersection::Latency::Benchmark)
61 
62 public:
64 
65  ~Benchmark() override = default;
66 
67 protected:
68  void init() override;
69  IDataLoader::Ptr getDataset() const override { return m_data; }
70  std::uint32_t getEventIDStart() const override { return BenchmarkDescriptor::BenchmarkID; }
71  bool validateResult(IDataLoader::Ptr dataset,
72  const std::uint64_t *param_data_pack_indices,
73  const std::vector<hebench::APIBridge::NativeDataBuffer *> &p_outputs,
74  hebench::APIBridge::DataType data_type) const override;
75 
76 private:
77  DataLoader::Ptr m_data;
78  std::uint64_t m_k_count;
79 
80  Benchmark(std::shared_ptr<Engine> p_engine,
81  const IBenchmarkDescriptor::DescriptionToken &description_token);
82 };
83 
84 } // namespace Latency
85 } // namespace SimpleSetIntersection
86 } // namespace TestHarness
87 } // namespace hebench
88 
89 #endif // defined _HEBench_Harness_SimpleSetIntersection_L_H_0596d40a3cce4b108a81595c50eb286d
Base class for workload benchmarks in the latency category.
Token returned by a successful call to IBenchmarkDescriptor::matchBenchmarkDescriptor().
std::shared_ptr< IDataLoader > Ptr
Bundles values that need to be filled by a workload during completeWorkloadDescription().
hebench::TestHarness::PartialBenchmark * createBenchmark(std::shared_ptr< Engine > p_engine, const DescriptionToken &description_token) override
Creates the represented IBenchmark object that can perform the workload specified by the HEBench benc...
void completeWorkloadDescription(WorkloadDescriptionOutput &output, const Engine &engine, const BenchmarkDescription::Backend &backend_desc, const BenchmarkDescription::Configuration &config) const override
Completes the description for the matched benchmark.
void destroyBenchmark(hebench::TestHarness::PartialBenchmark *p_bench) override
Destroys an object returned by createBenchmark().
bool matchBenchmarkDescriptor(const hebench::APIBridge::BenchmarkDescriptor &bench_desc, const std::vector< hebench::APIBridge::WorkloadParam > &w_params) const override
Determines if the represented benchmark can perform the workload described by a specified HEBench ben...
std::uint32_t getEventIDStart() const override
An ID to identify the first event during the benchmark run.
bool validateResult(IDataLoader::Ptr dataset, const std::uint64_t *param_data_pack_indices, const std::vector< hebench::APIBridge::NativeDataBuffer * > &p_outputs, hebench::APIBridge::DataType data_type) const override
Validates the result of an operation against the ground truth.
void init() override
Initializes the partial benchmark members.
IDataLoader::Ptr getDataset() const override
Dataset to be used for operations previously initialized during creation of this object.
DataType
Defines data types for a workload.
Definition: types.h:379
@ SimpleSetIntersection
Definition: types.h:268
Defines a benchmark test.
Definition: types.h:527