HEBench
hebench_matmult_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_MatrixMultiply_L_H_0596d40a3cce4b108a81595c50eb286d
6 #define _HEBench_Harness_MatrixMultiply_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 MatrixMultiply {
20 namespace Latency {
21 
23 {
24 public:
25  DISABLE_COPY(BenchmarkDescriptor)
26  DISABLE_MOVE(BenchmarkDescriptor)
27 private:
29 public:
30  static constexpr std::uint32_t BenchmarkID = 101;
31  static constexpr std::uint64_t DefaultBatchSize = 1; // batch size for a parameter (always 1 for latency)
32 
33 public:
34  BenchmarkDescriptor() = default;
35  ~BenchmarkDescriptor() override = default;
36 
37  hebench::TestHarness::PartialBenchmark *createBenchmark(std::shared_ptr<Engine> p_engine,
38  const DescriptionToken &description_token) override;
40 
41 protected:
43  const std::vector<hebench::APIBridge::WorkloadParam> &w_params) const override;
45  const Engine &engine,
46  const BenchmarkDescription::Backend &backend_desc,
47  const BenchmarkDescription::Configuration &config) const override;
48 
49 private:
50  static bool m_b_registered;
51 };
52 
54 {
55 public:
56  DISABLE_COPY(Benchmark)
57  DISABLE_MOVE(Benchmark)
58 private:
59  IL_DECLARE_CLASS_NAME(MatrixMultiply::Latency::Benchmark)
60 
61 public:
63 
64  ~Benchmark() override = default;
65 
66 protected:
67  void init() override;
68  IDataLoader::Ptr getDataset() const override { return m_data; }
69  std::uint32_t getEventIDStart() const override { return BenchmarkDescriptor::BenchmarkID; }
70  bool validateResult(IDataLoader::Ptr dataset,
71  const std::uint64_t *param_data_pack_indices,
72  const std::vector<hebench::APIBridge::NativeDataBuffer *> &p_outputs,
73  hebench::APIBridge::DataType data_type) const override;
74 
75 private:
76  DataLoader::Ptr m_data;
77 
78  Benchmark(std::shared_ptr<Engine> p_engine,
79  const IBenchmarkDescriptor::DescriptionToken &description_token);
80 };
81 
82 } // namespace Latency
83 } // namespace MatrixMultiply
84 } // namespace TestHarness
85 } // namespace hebench
86 
87 #endif // defined _HEBench_Harness_MatrixMultiply_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
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.
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 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.
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.
std::uint32_t getEventIDStart() const override
An ID to identify the first event during the benchmark run.
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