From 542a374c40b525448c9d55cc53ce8d6b5f0d1946 Mon Sep 17 00:00:00 2001 From: Edward Shogulin Date: Mon, 4 Apr 2022 13:27:03 +0300 Subject: [PATCH] [LPT] Introduce new quantization mode attribute (#11380) --- .../rt_info/quantization_mode_attribute.hpp | 34 +++++++++++++++++++ .../rt_info/quantization_mode_attribute.cpp | 30 ++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/common/low_precision_transformations/include/low_precision/rt_info/quantization_mode_attribute.hpp create mode 100644 src/common/low_precision_transformations/src/rt_info/quantization_mode_attribute.cpp diff --git a/src/common/low_precision_transformations/include/low_precision/rt_info/quantization_mode_attribute.hpp b/src/common/low_precision_transformations/include/low_precision/rt_info/quantization_mode_attribute.hpp new file mode 100644 index 00000000000..e4e9e262565 --- /dev/null +++ b/src/common/low_precision_transformations/include/low_precision/rt_info/quantization_mode_attribute.hpp @@ -0,0 +1,34 @@ +// Copyright (C) 2022 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#pragma once + +#include + +#include +#include + +namespace ngraph { + +class LP_TRANSFORMATIONS_API QuantizationModeAttribute : public ov::RuntimeAttribute { +public: + OPENVINO_RTTI("LowPrecision::QuantizationModeAttribute", "", ov::RuntimeAttribute, 0); + + enum class Mode { + Asymmetric, + Symmetric + }; + + QuantizationModeAttribute() : mode(Mode::Asymmetric) {} + QuantizationModeAttribute(const Mode mode) : mode(mode) {} + + bool operator==(const QuantizationModeAttribute& attribute) const { + return this->mode == attribute.mode; + } + + std::string to_string() const override; + + Mode mode; +}; +} // namespace ngraph diff --git a/src/common/low_precision_transformations/src/rt_info/quantization_mode_attribute.cpp b/src/common/low_precision_transformations/src/rt_info/quantization_mode_attribute.cpp new file mode 100644 index 00000000000..7a043f50d83 --- /dev/null +++ b/src/common/low_precision_transformations/src/rt_info/quantization_mode_attribute.cpp @@ -0,0 +1,30 @@ +// Copyright (C) 2022 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "low_precision/rt_info/quantization_mode_attribute.hpp" +#include + +using namespace ngraph; +using namespace ov; + +std::string QuantizationModeAttribute::to_string() const { + assert((mode == Mode::Asymmetric) || (mode == Mode::Symmetric)); + + std::stringstream ss; + switch (mode) { + case Mode::Asymmetric: { + ss << "Asymmetric"; + break; + } + case Mode::Symmetric: { + ss << "Symmetric"; + break; + } + default: { + ss << "UNKNOWN"; + break; + } + } + return ss.str(); +} \ No newline at end of file