HEBench
hebench_eltwiseadd_o.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_EltwiseAdd_O_H_0596d40a3cce4b108a81595c50eb286d
6 #define _HEBench_Harness_EltwiseAdd_O_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 EltwiseAdd {
20 namespace Offline {
21 
23 {
24 public:
25  DISABLE_COPY(BenchmarkDescriptor)
26  DISABLE_MOVE(BenchmarkDescriptor)
27 private:
28  IL_DECLARE_CLASS_NAME(EltwiseAdd::Offline::BenchmarkDescriptor)
29 public:
30  static constexpr std::uint32_t BenchmarkID = 401;
31  // default number of samples for an operand
32  // (based on docs definition of the workload operation)
33  static constexpr std::uint64_t DefaultBatchSize = 5;
34 
35 public:
36  BenchmarkDescriptor() = default;
37  ~BenchmarkDescriptor() override = default;
38 
39  hebench::TestHarness::PartialBenchmark *createBenchmark(std::shared_ptr<Engine> p_engine,
40  const DescriptionToken &description_token) override;
42 
43 protected:
45  const std::vector<hebench::APIBridge::WorkloadParam> &w_params) const override;
47  const Engine &engine,
48  const BenchmarkDescription::Backend &backend_desc,
49  const BenchmarkDescription::Configuration &config) const override;
50 
51 private:
52  static bool m_b_registered;
53 };
54 
56 {
57 public:
58  DISABLE_COPY(Benchmark)
59  DISABLE_MOVE(Benchmark)
60 private:
61  IL_DECLARE_CLASS_NAME(EltwiseAdd::Offline::Benchmark)
62 
63 public:
65 
66  ~Benchmark() override = default;
67 
68 protected:
69  void init() override;
70  IDataLoader::Ptr getDataset() const override { return m_data; }
71  std::uint32_t getEventIDStart() const override { return BenchmarkDescriptor::BenchmarkID; }
72  bool validateResult(IDataLoader::Ptr dataset,
73  const std::uint64_t *param_data_pack_indices,
74  const std::vector<hebench::APIBridge::NativeDataBuffer *> &p_outputs,
75  hebench::APIBridge::DataType data_type) const override;
76 
77 private:
78  DataLoader::Ptr m_data;
79 
80  Benchmark(std::shared_ptr<Engine> p_engine,
81  const IBenchmarkDescriptor::DescriptionToken &description_token);
82 };
83 
84 } // namespace Offline
85 } // namespace EltwiseAdd
86 } // namespace TestHarness
87 } // namespace hebench
88 
89 #endif // defined _HEBench_Harness_EltwiseAdd_O_H_0596d40a3cce4b108a81595c50eb286d
Base class for workload benchmarks in the offline category.
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.
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...
void destroyBenchmark(hebench::TestHarness::PartialBenchmark *p_bench) override
Destroys an object returned by createBenchmark().
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.
std::uint32_t getEventIDStart() const override
An ID to identify the first event during the benchmark run.
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().
DataType
Defines data types for a workload.
Definition: types.h:379
Defines a benchmark test.
Definition: types.h:527