HEBench
hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor Class Referencefinal

#include <hebench_matmult_o.h>

Inheritance diagram for hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor:
Collaboration diagram for hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor:

Public Member Functions

 BenchmarkDescriptor ()=default
 
 ~BenchmarkDescriptor () override=default
 
hebench::TestHarness::PartialBenchmarkcreateBenchmark (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 benchmark descriptor. More...
 
void destroyBenchmark (hebench::TestHarness::PartialBenchmark *p_bench) override
 Destroys an object returned by createBenchmark(). More...
 
- Public Member Functions inherited from hebench::TestHarness::MatrixMultiply::BenchmarkDescriptorCategory
 BenchmarkDescriptorCategory ()=default
 
 ~BenchmarkDescriptorCategory () override=default
 
- Public Member Functions inherited from hebench::TestHarness::PartialBenchmarkDescriptor
 PartialBenchmarkDescriptor ()
 
 ~PartialBenchmarkDescriptor () override
 
DescriptionToken::Ptr matchDescriptor (const Engine &engine, const BenchmarkDescription::Backend &backend_desc, const BenchmarkDescription::Configuration &config) const override final
 Implementation of IBenchmarkDescriptor::matchDescriptor(). More...
 
- Public Member Functions inherited from hebench::TestHarness::IBenchmarkDescriptor
 IBenchmarkDescriptor ()=default
 
virtual ~IBenchmarkDescriptor ()=default
 

Static Public Attributes

static constexpr std::uint32_t BenchmarkID = 201
 
static constexpr std::uint64_t DefaultBatchSize = 100
 
- Static Public Attributes inherited from hebench::TestHarness::MatrixMultiply::BenchmarkDescriptorCategory
static constexpr const char * BaseWorkloadName = "Matrix Multiplication"
 
static constexpr std::uint64_t WorkloadParameterCount = 3
 
static constexpr std::uint64_t OpParameterCount = 2
 
static constexpr std::uint64_t OpResultCount = 1
 
static hebench::APIBridge::WorkloadParamType::WorkloadParamType WorkloadParameterType [WorkloadParameterCount]
 

Protected Member Functions

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 benchmark descriptor and workload parameters. More...
 
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. More...
 
- Protected Member Functions inherited from hebench::TestHarness::IBenchmarkDescriptor
DescriptionToken::Ptr createToken (const BenchmarkDescription::Backend &backend_desc, const BenchmarkDescription::Configuration &config, const BenchmarkDescription::Description &text_desc) const
 Creates a DescriptionToken object associated to this IBenchmarkDescription object using the specified benchmark description. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from hebench::TestHarness::MatrixMultiply::BenchmarkDescriptorCategory
static std::array< std::pair< std::uint64_t, std::uint64_t >, OpParameterCountfetchMatrixSizes (const std::vector< hebench::APIBridge::WorkloadParam > &w_params)
 fetchMatrixSizes More...
 
- Static Public Member Functions inherited from hebench::TestHarness::PartialBenchmarkDescriptor
static bool getForceConfigValues ()
 Specifies whether frontend will override backend descriptors using configuration data or not. More...
 
static void setForceConfigValues (bool value)
 Sets whether frontend will override backend descriptors using configuration data or not. More...
 
static std::uint64_t computeSampleSizes (std::uint64_t *sample_sizes, std::size_t param_count, const std::vector< std::uint64_t > &config_sample_sizes, const hebench::APIBridge::BenchmarkDescriptor &bench_desc, std::uint64_t default_sample_size_fallback, bool force_config)
 Extracts the batch sizes for a workload from a specified HEBench API benchmark descriptor. More...
 
- Static Protected Member Functions inherited from hebench::TestHarness::PartialBenchmarkDescriptor
static std::unordered_set< std::size_t > getCipherParamPositions (std::uint32_t cipher_param_mask)
 
static std::string getCategoryName (hebench::APIBridge::Category category)
 
static std::string getDataTypeName (hebench::APIBridge::DataType data_type)
 
static void completeCategoryParams (hebench::APIBridge::BenchmarkDescriptor &out_descriptor, const hebench::APIBridge::BenchmarkDescriptor &in_descriptor, const BenchmarkDescription::Configuration &config, bool force_config)
 Completes common elements of category parameters in a descriptor using the specified configuration. More...
 

Detailed Description

Definition at line 22 of file hebench_matmult_o.h.

Constructor & Destructor Documentation

◆ BenchmarkDescriptor()

hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::BenchmarkDescriptor ( )
default

◆ ~BenchmarkDescriptor()

hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::~BenchmarkDescriptor ( )
overridedefault

Member Function Documentation

◆ completeWorkloadDescription()

void hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::completeWorkloadDescription ( WorkloadDescriptionOutput output,
const Engine engine,
const BenchmarkDescription::Backend backend_desc,
const BenchmarkDescription::Configuration config 
) const
overrideprotectedvirtual

Completes the description for the matched benchmark.

Parameters
[out]outputStructure to receive the completed description.
[in]engineEngine that requested the matching.
[in]backend_descBackend descriptor to be described.
[in]configConfiguration for the benchmark being described.
Exceptions
std::invalid_argumentif fields in backend_desc or config are not supported or invalid.

This method will only be called if PartialBenchmarkDescriptor::matchBenchmarkDescriptor(const hebench::APIBridge::BenchmarkDescriptor &, const std::vector<hebench::APIBridge::WorkloadParam> &) returns true.

All fields in config are valid. In backend_desc: field operation_params_count is expected to be returned by this method; field descriptor is the original returned from the backend, and it is expected that this method returns the final, concrete version. All other input parameters are valid. Use these values to complete all fields in output.

This method must fill out all fields in the output structure. Field workload_header may be set to empty string, but workload_name and operation_params_count must be set to the correct values. Field concrete_descriptor must be set to the completed benchmark descriptor, where all configurable values are replaced by the concrete, final values. See WorkloadDescriptionOutput for more details.

If extra header information returned in workload_header is not empty, it will be appended in the report to a pre-generated header in CSV format. The following is an example of a pre-generated header:

Specifications,
, Encryption,
, , Scheme, CKKS
, , Security, 128 bits
, , Poly mod degree, 8192
, , Primes, 3
, , Warmup iterations, 2
, , Minimum test time (ms), 2000
, Workload, Element-wise Vector Addition (1000)
, , Data type, Float64
, , Encrypted parameters, All
@ Float64
64 bits IEEE 754 standard floating point real numbers.
Definition: types.h:306
Category
Defines all possible categories for each workload.
Definition: types.h:391
std::int32_t Scheme
Open-ended homomorphic encryption scheme ID.
Definition: types.h:406
std::int32_t Security
Open-ended homomorphic encryption scheme security ID.
Definition: types.h:412
Workload
Defines all possible workloads.
Definition: types.h:83

output .workload_header will be appended at the next line immediately after this.

See also
WorkloadDescriptionOutput

Reimplemented from hebench::TestHarness::MatrixMultiply::BenchmarkDescriptorCategory.

Definition at line 48 of file hebench_matmult_o.cpp.

◆ createBenchmark()

hebench::TestHarness::PartialBenchmark * hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::createBenchmark ( std::shared_ptr< Engine p_engine,
const DescriptionToken description_token 
)
overridevirtual

Creates the represented IBenchmark object that can perform the workload specified by the HEBench benchmark descriptor.

Parameters
[in]p_engineThe engine creating the benchmark.
[in]description_tokenDescription token describing the benchmark to create, as matched by matchBenchmarkDescriptor().
Returns
Pointer to object of class derived from IBenchmark that can perform the specified workload or null on unknown error.

Instead of returning null, this method may also throw instances of std::exception to communicate errors to caller with better error descriptions.

This method constructs an object of type derived from IBenchmark, performs any pending initialization on the fully constructed object, and returns a pointer to it. The returned pointer must live until passed to method destroyBenchmark().

See also
destroyBenchmark()

Implements hebench::TestHarness::IBenchmarkDescriptor.

Definition at line 90 of file hebench_matmult_o.cpp.

◆ destroyBenchmark()

void hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::destroyBenchmark ( hebench::TestHarness::PartialBenchmark p_bench)
overridevirtual

Destroys an object returned by createBenchmark().

Parameters
[in]p_benchPointer to object to clean up.
See also
createBenchmark()

Implements hebench::TestHarness::IBenchmarkDescriptor.

Definition at line 110 of file hebench_matmult_o.cpp.

◆ matchBenchmarkDescriptor()

bool hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::matchBenchmarkDescriptor ( const hebench::APIBridge::BenchmarkDescriptor bench_desc,
const std::vector< hebench::APIBridge::WorkloadParam > &  w_params 
) const
overrideprotectedvirtual

Determines if the represented benchmark can perform the workload described by a specified HEBench benchmark descriptor and workload parameters.

Parameters
[in]bench_descDescriptor to which compare.
[in]w_paramsArguments for the workload parameters.
Returns
true if the represented benchmark can perform the specified described workload.
false if no match was found.

This method is used by BenchmarkFactory::createBenchmark() to select the appropriate benchmark to create based on the descriptor.

See also
IBenchmarkDescriptor::matchDescriptor()

Reimplemented from hebench::TestHarness::MatrixMultiply::BenchmarkDescriptorCategory.

Definition at line 34 of file hebench_matmult_o.cpp.

Member Data Documentation

◆ BenchmarkID

constexpr std::uint32_t hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::BenchmarkID = 201
staticconstexpr

Definition at line 30 of file hebench_matmult_o.h.

◆ DefaultBatchSize

constexpr std::uint64_t hebench::TestHarness::MatrixMultiply::Offline::BenchmarkDescriptor::DefaultBatchSize = 100
staticconstexpr

Definition at line 33 of file hebench_matmult_o.h.


The documentation for this class was generated from the following files: