diff --git a/include/aidge/operator/Operator.hpp b/include/aidge/operator/Operator.hpp index adec17d07f39727a0c75d32fa24bcc624aa66e1a..f1e25b7a1f0ba3c07d656d4170a4b2d2bc045e5b 100644 --- a/include/aidge/operator/Operator.hpp +++ b/include/aidge/operator/Operator.hpp @@ -109,7 +109,7 @@ public: * The pointer itself is not changed, thus keeping the current connections. * @param inputIdx Index of the input to set. */ - virtual void setOutput(const IOIndex_t outputIdx, const std::shared_ptr<Data>& data) = 0; + virtual void setOutput(const IOIndex_t outputIdx, const std::shared_ptr<Data>& data) const = 0; virtual std::shared_ptr<Data> getRawOutput(const IOIndex_t outputIdx) const = 0; std::shared_ptr<Hook> getHook(const std::string& hookName) { diff --git a/include/aidge/operator/OperatorTensor.hpp b/include/aidge/operator/OperatorTensor.hpp index 657a6d8ab6124b8919a3ac8fea5b6bfa6c4254b9..1097454fce62f645eb83c491498031738847e96c 100644 --- a/include/aidge/operator/OperatorTensor.hpp +++ b/include/aidge/operator/OperatorTensor.hpp @@ -62,7 +62,7 @@ public: std::shared_ptr<Data> getRawInput(const IOIndex_t inputIdx) const override final; // output management - void setOutput(const IOIndex_t outputIdx, const std::shared_ptr<Data>& data) override; + void setOutput(const IOIndex_t outputIdx, const std::shared_ptr<Data>& data) const override; virtual const std::shared_ptr<Tensor>& getOutput(const IOIndex_t outputIdx) const; std::shared_ptr<Aidge::Data> getRawOutput(const Aidge::IOIndex_t outputIdx) const override final; /////////////////////////////////////////////////// diff --git a/include/aidge/operator/Producer.hpp b/include/aidge/operator/Producer.hpp index d391cc629f5cd0dbb9a6961a2cb42a9ae0b186b9..1647c563d38ab4931cc3a0c2a4281555215f990e 100644 --- a/include/aidge/operator/Producer.hpp +++ b/include/aidge/operator/Producer.hpp @@ -115,7 +115,7 @@ public: // fmt::print("Basic Producer backward() function.\n"); } - void setOutput(const Aidge::IOIndex_t outputIdx, const std::shared_ptr<Aidge::Data>& data) override { + void setOutput(const Aidge::IOIndex_t outputIdx, const std::shared_ptr<Aidge::Data>& data) const override { if (mAttributes->template getAttr<ProdAttr::Constant>()) { AIDGE_THROW_OR_ABORT(std::runtime_error, "Producer is constant, cannot update output."); } diff --git a/python_binding/graph/pybind_Node.cpp b/python_binding/graph/pybind_Node.cpp index 06c171214d5df261e5df832179a0fa69420aab7d..1fa552ce153b2b0f655ca9f38d1d80f62390184b 100644 --- a/python_binding/graph/pybind_Node.cpp +++ b/python_binding/graph/pybind_Node.cpp @@ -169,7 +169,11 @@ void init_Node(py::module& m) { if (pybind11::isinstance<Connector>(arg)) { // Convert Python object to C++ object adn push it ot vector connectors.push_back(arg.cast<Connector>()); - } else { + } + else if (arg.is(py::none())) { + connectors.push_back(Connector()); + } + else { throw std::runtime_error("One of the arguments was not a Connector."); } } diff --git a/python_binding/operator/pybind_Operator.cpp b/python_binding/operator/pybind_Operator.cpp index 2b2f30f14931fd041bfb4ec1a712e5c9419fdf22..dbf71a3cad870d848fbc2f5f67c13d5347b38b89 100644 --- a/python_binding/operator/pybind_Operator.cpp +++ b/python_binding/operator/pybind_Operator.cpp @@ -37,7 +37,7 @@ void init_Operator(py::module& m){ py::class_<Operator, std::shared_ptr<Operator>>(m, "Operator") .def("__repr__", &Operator::repr) .def("backend", &Operator::backend) - .def("set_output", py::overload_cast<const IOIndex_t, const std::shared_ptr<Data>&>(&Operator::setOutput), py::arg("outputIdx"), py::arg("data")) + .def("set_output", py::overload_cast<const IOIndex_t, const std::shared_ptr<Data>&>(&Operator::setOutput, py::const_), py::arg("outputIdx"), py::arg("data")) .def("set_input", py::overload_cast<const IOIndex_t, const std::shared_ptr<Data>&>(&Operator::setInput), py::arg("inputIdx"), py::arg("data")) .def("get_raw_output", &Operator::getRawOutput, py::arg("outputIdx")) .def("set_input", py::overload_cast<const IOIndex_t, const std::shared_ptr<Data>&>(&Operator::setInput), py::arg("inputIdx"), py::arg("data")) diff --git a/python_binding/operator/pybind_OperatorTensor.cpp b/python_binding/operator/pybind_OperatorTensor.cpp index 4d4541ab36468bc6b531e0242888dd70c5afc71f..8c515e321207605c20acc9e5b02271906c9707d1 100644 --- a/python_binding/operator/pybind_OperatorTensor.cpp +++ b/python_binding/operator/pybind_OperatorTensor.cpp @@ -28,7 +28,7 @@ void init_OperatorTensor(py::module& m){ .def("get_output", &OperatorTensor::getOutput, py::arg("outputIdx")) .def("get_input", &OperatorTensor::getInput, py::arg("inputIdx")) - .def("set_output", (void (OperatorTensor::*)(const IOIndex_t, const std::shared_ptr<Data>&)) &OperatorTensor::setOutput, py::arg("outputIdx"), py::arg("data")) + .def("set_output", (void (OperatorTensor::*)(const IOIndex_t, const std::shared_ptr<Data>&) const) &OperatorTensor::setOutput, py::arg("outputIdx"), py::arg("data")) .def("set_input", (void (OperatorTensor::*)(const IOIndex_t, const std::shared_ptr<Data>&)) &OperatorTensor::setInput, py::arg("outputIdx"), py::arg("data")) .def("forward_dims", &OperatorTensor::forwardDims, py::arg("allow_data_dependency") = false) .def("dims_forwarded", &OperatorTensor::dimsForwarded) diff --git a/src/operator/OperatorTensor.cpp b/src/operator/OperatorTensor.cpp index 938a386c4ca743e33f97caa981ff160522299948..ff6fb9ce4b6b8596477dfdd1f43f8927e534459b 100644 --- a/src/operator/OperatorTensor.cpp +++ b/src/operator/OperatorTensor.cpp @@ -73,7 +73,7 @@ const std::shared_ptr<Aidge::Tensor>& Aidge::OperatorTensor::getInput(const Aidg return mInputs[inputIdx]; } -void Aidge::OperatorTensor::setOutput(const Aidge::IOIndex_t outputIdx, const std::shared_ptr<Aidge::Data>& data) { +void Aidge::OperatorTensor::setOutput(const Aidge::IOIndex_t outputIdx, const std::shared_ptr<Aidge::Data>& data) const { AIDGE_ASSERT(data->type() == Tensor::Type, "{} Operator only accepts Tensors as inputs", type()); AIDGE_ASSERT(outputIdx < nbOutputs(), "{} Operator has {} outputs", type(), nbOutputs()); const auto& data_tensor = std::dynamic_pointer_cast<Tensor>(data); diff --git a/unit_tests/data/Test_Tensor.cpp b/unit_tests/data/Test_Tensor.cpp index 98d3193ffc56f78bb5274ebe0795a4d67d163d27..a536f113f7d11eb8cec81b5fdbf57909bd70611d 100644 --- a/unit_tests/data/Test_Tensor.cpp +++ b/unit_tests/data/Test_Tensor.cpp @@ -14,13 +14,14 @@ #include <cstdint> // std::uint8_t, std::uint16_t, std::int32_t #include <numeric> // std::accumulate, std::inner_product #include <functional> // std::multiplies -#include <random> // std::random_device, std::mt19937, +#include <random> // std::mt19937, // std::uniform_int_distribution, std::uniform_real_distribution #include <set> #include <string> #include <vector> #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include "aidge/backend/cpu/data/TensorImpl.hpp" #include "aidge/data/Data.hpp" @@ -127,7 +128,7 @@ TEST_CASE("[core/data] Tensor(Construction)", "[Tensor][Constructor]") { constexpr std::uint16_t NBTRIALS = 10; // Create random number generators - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5); @@ -169,7 +170,7 @@ TEST_CASE("[core/data] Tensor(getter/setter)", "[Tensor][Getter][Setter]") { constexpr std::uint16_t NBTRIALS = 10; // Create random number generators - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5); @@ -261,7 +262,7 @@ TEST_CASE("[core/data] Tensor(other)", "[Tensor][extract][zeros][print]") { constexpr std::uint16_t NBTRIALS = 10; // Create random number generators - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5); diff --git a/unit_tests/graph/Test_GraphView.cpp b/unit_tests/graph/Test_GraphView.cpp index 8e9f5a27e275a5ce56ddf57fa092ec96cec84711..d9289c4aa3f4b44ce72d772c9a39dd8e66ab09e7 100644 --- a/unit_tests/graph/Test_GraphView.cpp +++ b/unit_tests/graph/Test_GraphView.cpp @@ -17,6 +17,7 @@ #include <string> #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include "aidge/backend/OperatorImpl.hpp" #include "aidge/data/Tensor.hpp" @@ -35,7 +36,7 @@ TEST_CASE("genRandomGraph", "[GraphView][randomGen]") { size_t nbUnicity = 0; for (int test = 0; test < nbTests; ++test) { - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; const std::mt19937::result_type seed(rd()); RandomGraph randGraph; @@ -81,7 +82,7 @@ TEST_CASE("clone", "[GraphView][clone]") { const size_t nbTests = 100; for (int test = 0; test < nbTests; ++test) { - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; const std::mt19937::result_type seed(rd()); RandomGraph randGraph; @@ -155,7 +156,7 @@ TEST_CASE("remove", "[GraphView][remove]") { size_t nbTested = 0; for (int test = 0; test < nbTests; ++test) { - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; const std::mt19937::result_type seed(rd()); RandomGraph randGraph; diff --git a/unit_tests/operator/Test_Div_Op.cpp b/unit_tests/operator/Test_Div_Op.cpp index cef7bc53ef7e9247e59077028a728e9b1bb2aebe..d35edec17cd9732119cfcaf249b5e7965a14ea65 100644 --- a/unit_tests/operator/Test_Div_Op.cpp +++ b/unit_tests/operator/Test_Div_Op.cpp @@ -10,9 +10,10 @@ ********************************************************************************/ #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include <cstddef> // std::size_t #include <memory> -#include <random> // std::random_device, std::mt19937, std::uniform_int_distribution +#include <random> // std::mt19937, std::uniform_int_distribution #include <vector> #include "aidge/data/Tensor.hpp" @@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Div_Op(forwardDims)", "[Div][forwardDims]") { constexpr std::uint16_t NBTRIALS = 10; // Create a random number generator - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5); diff --git a/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp b/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp index 1d99fc7a513d0fa183fac786acee253a7cc97f10..15c714b63c2b86e156b43cdaec390ddf60eb7353 100644 --- a/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp +++ b/unit_tests/operator/Test_GlobalAveragePooling_Op.cpp @@ -10,9 +10,10 @@ ********************************************************************************/ #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include <cstddef> // std::size_t #include <memory> -#include <random> // std::random_device, std::mt19937, std::uniform_int_distribution +#include <random> // std::mt19937, std::uniform_int_distribution #include <vector> #include "aidge/data/Tensor.hpp" @@ -25,7 +26,7 @@ TEST_CASE("[core/operator] GlobalAveragePooling_Op(forwardDims)", "[GlobalAveragePooling][forwardDims]") { constexpr std::uint16_t NB_TRIALS = 10; // Create a random number generator - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> inf3DimsDistribution(1, 2); diff --git a/unit_tests/operator/Test_MatMul_Op.cpp b/unit_tests/operator/Test_MatMul_Op.cpp index 102a4ab4ec7d6262bdcc05f0c56605dfcb6af89a..876c1ac764efe54475f6d45982acca76aacb7528 100644 --- a/unit_tests/operator/Test_MatMul_Op.cpp +++ b/unit_tests/operator/Test_MatMul_Op.cpp @@ -10,9 +10,10 @@ ********************************************************************************/ #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include <cstddef> // std::size_t #include <memory> -#include <random> // std::random_device, std::mt19937, std::uniform_int_distribution +#include <random> // std::mt19937, std::uniform_int_distribution #include <vector> #include "aidge/data/Tensor.hpp" @@ -22,10 +23,11 @@ namespace Aidge { TEST_CASE("[core/operator] MatMul_Op(forwardDims)", "[MatMul][forwardDims]") { // Create a random number generator - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dist(1, 10); + std::cerr << "Test case start, random " << dist(gen) << " " << rd() << std::endl; // Create MatMul Operator std::shared_ptr<Node> myMatMul = MatMul(); auto op = std::static_pointer_cast<OperatorTensor>(myMatMul -> getOperator()); diff --git a/unit_tests/operator/Test_Mul_Op.cpp b/unit_tests/operator/Test_Mul_Op.cpp index 8efd1c2dcff0686dd3f1e589ceae6b0655c7937e..bee90d725b25508abf90813532bb5ca754d8fb9a 100644 --- a/unit_tests/operator/Test_Mul_Op.cpp +++ b/unit_tests/operator/Test_Mul_Op.cpp @@ -10,9 +10,10 @@ ********************************************************************************/ #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include <cstddef> // std::size_t #include <memory> -#include <random> // std::random_device, std::mt19937, std::uniform_int_distribution +#include <random> // std::mt19937, std::uniform_int_distribution #include <vector> #include "aidge/data/Tensor.hpp" @@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Mul_Op(forwardDims)", "[Mul][forwardDims]") { constexpr std::uint16_t NBTRIALS = 10; // Create a random number generator - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5); diff --git a/unit_tests/operator/Test_Pow_Op.cpp b/unit_tests/operator/Test_Pow_Op.cpp index 90b865c1d9bd19e3fce51c2af477a9cde16e33bd..274f7c00b9bd3c3ba57f0463dbe3a1b727141013 100644 --- a/unit_tests/operator/Test_Pow_Op.cpp +++ b/unit_tests/operator/Test_Pow_Op.cpp @@ -10,9 +10,10 @@ ********************************************************************************/ #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include <cstddef> // std::size_t #include <memory> -#include <random> // std::random_device, std::mt19937, std::uniform_int_distribution +#include <random> // std::mt19937, std::uniform_int_distribution #include <vector> #include "aidge/data/Tensor.hpp" @@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Pow_Op(forwardDims)", "[Pow][forwardDims]") { constexpr std::uint16_t NBTRIALS = 10; // Create a random number generator - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5); diff --git a/unit_tests/operator/Test_Sub_Op.cpp b/unit_tests/operator/Test_Sub_Op.cpp index 0797def124a6bbb97c4f15ae98a310a46d313181..110cbbfe68b723a2a670abe590ca5392881170f3 100644 --- a/unit_tests/operator/Test_Sub_Op.cpp +++ b/unit_tests/operator/Test_Sub_Op.cpp @@ -10,9 +10,10 @@ ********************************************************************************/ #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include <cstddef> // std::size_t #include <memory> -#include <random> // std::random_device, std::mt19937, std::uniform_int_distribution +#include <random> // std::mt19937, std::uniform_int_distribution #include <vector> #include "aidge/data/Tensor.hpp" @@ -24,7 +25,7 @@ TEST_CASE("[core/operator] Sub_Op(forwardDims)", "[Sub][forwardDims]") { constexpr std::uint16_t NBTRIALS = 10; // Create a random number generator - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; std::mt19937 gen(rd()); std::uniform_int_distribution<std::size_t> dimsDist(1, 10); std::uniform_int_distribution<std::size_t> nbDimsDist(1, 5); diff --git a/unit_tests/scheduler/Test_Scheduler.cpp b/unit_tests/scheduler/Test_Scheduler.cpp index ceaa5e301c820ef54970a0e76004ad3467ae66da..3c3026ff09222f9623d886f9c4574bf23667cd9a 100644 --- a/unit_tests/scheduler/Test_Scheduler.cpp +++ b/unit_tests/scheduler/Test_Scheduler.cpp @@ -17,6 +17,7 @@ #include <string> #include <catch2/catch_test_macros.hpp> +#include <catch2/generators/catch_generators_random.hpp> #include "aidge/backend/OperatorImpl.hpp" #include "aidge/data/Tensor.hpp" @@ -35,7 +36,7 @@ TEST_CASE("randomScheduling", "[Scheduler][randomGen]") { std::uniform_int_distribution<std::size_t> nb_nodes_dist(100, 500); for (int test = 0; test < nbTests; ++test) { - std::random_device rd; + auto rd = Catch::Generators::Detail::getSeed; const std::mt19937::result_type seed(rd()); std::mt19937 gen(rd());