From 57215ea19f98850ff15d90c90dbf69d631acde59 Mon Sep 17 00:00:00 2001 From: hrouis <houssemeddine.rouis92@gmail.com> Date: Fri, 26 Jan 2024 11:45:41 +0100 Subject: [PATCH] fix add operator --- .../cpu/operator/AddImpl_forward_kernels.hpp | 30 ++----------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/include/aidge/backend/cpu/operator/AddImpl_forward_kernels.hpp b/include/aidge/backend/cpu/operator/AddImpl_forward_kernels.hpp index a038c448..478a0226 100644 --- a/include/aidge/backend/cpu/operator/AddImpl_forward_kernels.hpp +++ b/include/aidge/backend/cpu/operator/AddImpl_forward_kernels.hpp @@ -14,35 +14,11 @@ #include "aidge/utils/Registrar.hpp" +#include "aidge/backend/cpu/data/Broadcasting.hpp" #include "aidge/backend/cpu/operator/AddImpl.hpp" namespace Aidge { -// Function to get multi-dimensional indices from a flattened index -std::vector<size_t> getMultiDimIndices(const std::vector<size_t>& dimensions, size_t idx) { - std::vector<size_t> indices(dimensions.size(), 0); - - for (int i = dimensions.size() - 1; i >= 0; --i) { - indices[i] = idx % dimensions[i]; - idx /= dimensions[i]; - } - - return indices; -} - -// Function to get a flattened index from multi-dimensional indices -std::size_t getFlattenedIndex(const std::vector<size_t>& dimensions, const std::vector<size_t>& indices) { - std::size_t flattenedIdx = 0; - std::size_t stride = 1; - - for (int i = dimensions.size() - 1; i >= 0; --i) { - std::size_t idx = dimensions[i]>1 ? indices[i] : 0; - flattenedIdx += idx * stride; - stride *= dimensions[i]; - } - return flattenedIdx; -} - template <class I, class O> void AddImpl_cpu_forward_kernel(const std::vector<const void*> inputs_, const std::vector<std::vector<std::size_t>>& inputDims, const std::size_t outputLength, const std::vector<std::size_t>& outDims, void* output_) { // FIXME: missing Add attributes as arguments @@ -54,11 +30,11 @@ void AddImpl_cpu_forward_kernel(const std::vector<const void*> inputs_, const st for (std::size_t oIndex = 0; oIndex < outputLength; ++oIndex) { + output[oIndex] = 0; std::vector<size_t> indexes = getMultiDimIndices(outDims, oIndex); - for(std::size_t iIndex = 0; iIndex < inputs.size(); ++iIndex) { std::size_t idx = getFlattenedIndex(inputDims[iIndex], indexes); - output[oIndex] += inputs[iIndex][idx]; + output[oIndex] += inputs[iIndex][idx]; } } } -- GitLab