From 3ba4bdb8488d1e4b41d18f14047051384a3fe1de Mon Sep 17 00:00:00 2001
From: Olivier BICHLER <olivier.bichler@cea.fr>
Date: Wed, 12 Jun 2024 09:39:26 +0200
Subject: [PATCH] Improved Tensor::zeros()

---
 include/aidge/backend/TensorImpl.hpp | 4 +---
 src/backend/cpu/data/TensorImpl.cpp  | 7 +------
 2 files changed, 2 insertions(+), 9 deletions(-)

diff --git a/include/aidge/backend/TensorImpl.hpp b/include/aidge/backend/TensorImpl.hpp
index e11a6d26f..57c6c385d 100644
--- a/include/aidge/backend/TensorImpl.hpp
+++ b/include/aidge/backend/TensorImpl.hpp
@@ -201,9 +201,7 @@ public:
     /**
      * @brief Set every element of the implementation to zero.
      */
-    virtual void zeros() {
-        AIDGE_THROW_OR_ABORT(std::runtime_error, "Function not implented");
-    }
+    virtual void zeros() = 0;
 
     const std::string backend() const { return mBackend; }
 
diff --git a/src/backend/cpu/data/TensorImpl.cpp b/src/backend/cpu/data/TensorImpl.cpp
index 39ca71de9..ed3c96f80 100644
--- a/src/backend/cpu/data/TensorImpl.cpp
+++ b/src/backend/cpu/data/TensorImpl.cpp
@@ -38,12 +38,7 @@ bool Aidge::TensorImpl_cpu<T>::operator==(const Aidge::TensorImpl &other) const
 
 template <typename T>
 void Aidge::TensorImpl_cpu<T>::zeros() {
-    if (mData.empty()) {
-        lazyInit();
-    }
-    for (std::size_t i = 0; i < mData.size(); ++i) {
-        *(mData.data() + i) = T(0);
-    }
+    std::memset(rawPtr(), T(0), mNbElts * sizeof(T));
 }
 
 template <typename T>
-- 
GitLab