HEBench
hebench_matmult_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_MatrixMultiply_O_H_0596d40a3cce4b108a81595c50eb286d
6 #define _HEBench_Harness_MatrixMultiply_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 MatrixMultiply {
20 namespace Offline {
21 
23 {
24 public:
25  DISABLE_COPY(BenchmarkDescriptor)
26  DISABLE_MOVE(BenchmarkDescriptor)
27 private:
29 public:
30  static constexpr std::uint32_t BenchmarkID = 201;
31  // default number of samples for an operand
32  // (based on docs definition of the workload operation)
33  static constexpr std::uint64_t DefaultBatchSize = 100;
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(MatrixMultiply::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 MatrixMultiply
86 } // namespace TestHarness
87 } // namespace hebench
88 
89 #endif // defined _HEBench_Harness_MatrixMultiply_O_H_0596d40a3cce4b108a81595c50eb286d
Base class for workload benchmarks in the offline category.
Token returned by a successful call to IBenchmarkDescriptor::matchBenchmarkDescriptor().
std::shared_ptr< IDataLoader > Ptr
void destroyBenchmark(hebench::TestHarness::PartialBenchmark *p_bench) override
Destroys an object returned by createBenchmark().
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...
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 completeWorkloadDescription(WorkloadDescriptionOutput &output, const Engine &engine, const BenchmarkDescription::Backend &backend_desc, const BenchmarkDescription::Configuration &config) const override
Completes the description for the matched benchmark.
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.
IDataLoader::Ptr getDataset() const override
Dataset to be used for operations previously initialized during creation of this object.
void init() override
Initializes the partial benchmark members.
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