From 3c5ca20d9ff9b8ca112fa08f6ced4d34ca236f1a Mon Sep 17 00:00:00 2001 From: bhalimi <benjamin.halimi@cea.fr> Date: Mon, 23 Sep 2024 13:11:55 +0000 Subject: [PATCH] minor changes --- include/aidge/backend/QuantizationCPU.hpp | 2 ++ python_binding/operator/SAT/pybind_DoReFa.cpp | 34 +++++++++++++++++++ python_binding/pybind_Quantization.cpp | 4 +-- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 python_binding/operator/SAT/pybind_DoReFa.cpp diff --git a/include/aidge/backend/QuantizationCPU.hpp b/include/aidge/backend/QuantizationCPU.hpp index 8b6fe78..dbc6c0e 100644 --- a/include/aidge/backend/QuantizationCPU.hpp +++ b/include/aidge/backend/QuantizationCPU.hpp @@ -15,6 +15,8 @@ #include "aidge/backend/cpu/operator/LSQImpl.hpp" #include "aidge/backend/cpu/operator/SAT/TanhClampImpl.hpp" +#include "aidge/backend/cpu/operator/SAT/DoReFaImpl.hpp" + // ... diff --git a/python_binding/operator/SAT/pybind_DoReFa.cpp b/python_binding/operator/SAT/pybind_DoReFa.cpp new file mode 100644 index 0000000..4e66665 --- /dev/null +++ b/python_binding/operator/SAT/pybind_DoReFa.cpp @@ -0,0 +1,34 @@ +/******************************************************************************** + * Copyright (c) 2023 CEA-List + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + * + ********************************************************************************/ + +#include <pybind11/pybind11.h> + +#include "aidge/data/Tensor.hpp" +#include "aidge/operator/SAT/DoReFa.hpp" +#include "aidge/operator/OperatorTensor.hpp" + +namespace py = pybind11; +namespace Aidge { + +void init_DoReFa(py::module& m) { + py::enum_<DoReFaMode>(m, "DoReFaMode") + .value("Default", DoReFaMode::Default) + .value("Symmetric", DoReFaMode::Symmetric) + .export_values(); + + py::class_<DoReFa_Op, std::shared_ptr<DoReFa_Op>, OperatorTensor>(m, "DoReFaOp", py::multiple_inheritance()) + .def(py::init<size_t, DoReFaMode>(), py::arg("range") = 255, py::arg("mode") = DoReFaMode::Default) + .def_static("get_inputs_name", &DoReFa_Op::getInputsName) + .def_static("get_outputs_name", &DoReFa_Op::getOutputsName); + declare_registrable<DoReFa_Op>(m, "DoReFaOp"); + m.def("DoReFa", &DoReFa, py::arg("range") = 255, py::arg("mode") = DoReFaMode::Default, py::arg("name") = ""); +} +} // namespace Aidge diff --git a/python_binding/pybind_Quantization.cpp b/python_binding/pybind_Quantization.cpp index 2ab1d0d..ab26c11 100644 --- a/python_binding/pybind_Quantization.cpp +++ b/python_binding/pybind_Quantization.cpp @@ -23,6 +23,7 @@ namespace Aidge void init_FixedQ(py::module& m); void init_LSQ(py::module& m); void init_TanhClamp(py::module& m); +void init_DoReFa(py::module& m); // quantization routines @@ -36,12 +37,11 @@ PYBIND11_MODULE(aidge_quantization, m) init_FixedQ(m); init_LSQ(m); init_TanhClamp(m); - + init_DoReFa(m); init_PTQ(m); init_QAT_FixedQ(m); init_QAT_LSQ(m); - } } // namespace Aidge -- GitLab