From d95abd33ca7b9a7ee742452e87277883983f45da Mon Sep 17 00:00:00 2001 From: cmoineau <cyril.moineau@cea.fr> Date: Wed, 26 Mar 2025 09:47:41 +0000 Subject: [PATCH] Fix clip implementation + add ReLU int8. --- .../aidge/backend/cpu/operator/ClipImpl_kernels.hpp | 11 ++++++----- .../aidge/backend/cpu/operator/ReLUImpl_kernels.hpp | 5 ++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/aidge/backend/cpu/operator/ClipImpl_kernels.hpp b/include/aidge/backend/cpu/operator/ClipImpl_kernels.hpp index 1afac469..f7a64585 100644 --- a/include/aidge/backend/cpu/operator/ClipImpl_kernels.hpp +++ b/include/aidge/backend/cpu/operator/ClipImpl_kernels.hpp @@ -23,13 +23,14 @@ void ClipImpl_cpu_forward_kernel( float max_, const void* input_, const std::size_t length, - void* output_) + void* output_) { const I* input = static_cast<const I*>(input_); O* output = static_cast<O*>(output_); - + I minCasted = static_cast<I>(min_); + I maxCasted = static_cast<I>(max_); for (std::size_t i = 0; i < length; ++i) { - output[i] = std::min(std::max(static_cast<float>(input[i]), min_), max_); + output[i] = std::min(std::max(input[i], minCasted), maxCasted); } } @@ -38,9 +39,9 @@ void ClipImpl_cpu_backward_kernel( float min_, float max_, const std::size_t length, - const void* input_, + const void* input_, const void* grad_output_, - void* grad_input_) + void* grad_input_) { const I* input = static_cast<const I*>(input_); const GO* grad_output = static_cast<const GO*>(grad_output_); diff --git a/include/aidge/backend/cpu/operator/ReLUImpl_kernels.hpp b/include/aidge/backend/cpu/operator/ReLUImpl_kernels.hpp index bb5d7cc3..6b7c3c9c 100644 --- a/include/aidge/backend/cpu/operator/ReLUImpl_kernels.hpp +++ b/include/aidge/backend/cpu/operator/ReLUImpl_kernels.hpp @@ -60,7 +60,10 @@ REGISTRAR(ReLUImpl_cpu, {ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<double, double>, Aidge::ReLUImpl_cpu_backward_kernel<double, double, double>}); REGISTRAR(ReLUImpl_cpu, {DataType::Int32}, - {ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<int32_t, int32_t>, Aidge::ReLUImpl_cpu_backward_kernel<int32_t, int32_t, int32_t>}); + {ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<int32_t, int32_t>, nullptr}); +REGISTRAR(ReLUImpl_cpu, + {DataType::Int8}, + {ProdConso::inPlaceModel, Aidge::ReLUImpl_cpu_forward_kernel<int8_t, int8_t>, nullptr}); } // namespace Aidge #endif /* AIDGE_CPU_OPERATOR_RELUIMPL_KERNELS_H_ */ -- GitLab