Skip to content
Snippets Groups Projects
Commit 87d07901 authored by Maxence Naud's avatar Maxence Naud
Browse files

Add int64 support for element-wise operators

parent dabc6c73
No related branches found
No related tags found
1 merge request!73version 0.2.3
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#include "aidge/utils/Registrar.hpp" #include "aidge/utils/Registrar.hpp"
#include <cstdint> // std::int32_t, std::int64_t
#include "aidge/backend/cpu/data/Broadcasting.hpp" #include "aidge/backend/cpu/data/Broadcasting.hpp"
#include "aidge/backend/cpu/operator/AddImpl.hpp" #include "aidge/backend/cpu/operator/AddImpl.hpp"
...@@ -42,10 +44,12 @@ void AddImpl_cpu_forward_kernel(const std::vector<const void*> inputs_, const st ...@@ -42,10 +44,12 @@ void AddImpl_cpu_forward_kernel(const std::vector<const void*> inputs_, const st
namespace { namespace {
static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Float32( static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Float32(
{DataType::Float32, DataType::Float32}, Aidge::AddImpl_cpu_forward_kernel<float, float>); {DataType::Float32, DataType::Float32}, Aidge::AddImpl_cpu_forward_kernel<float, float>);
static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Int32(
{DataType::Int32, DataType::Int32}, Aidge::AddImpl_cpu_forward_kernel<int, int>);
static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Float64( static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Float64(
{DataType::Float64, DataType::Float64}, Aidge::AddImpl_cpu_forward_kernel<double, double>); {DataType::Float64, DataType::Float64}, Aidge::AddImpl_cpu_forward_kernel<double, double>);
static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Int32(
{DataType::Int32, DataType::Int32}, Aidge::AddImpl_cpu_forward_kernel<std::int32_t, std::int32_t>);
static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Int64(
{DataType::Int64, DataType::Int64}, Aidge::AddImpl_cpu_forward_kernel<std::int64_t, std::int64_t>);
} // namespace } // namespace
} // namespace Aidge } // namespace Aidge
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <numeric> // std::accumulate #include <numeric> // std::accumulate
#include <cstddef> // std::size_t #include <cstddef> // std::size_t
#include <cstdint> // std::int32_t, std::int64_t
#include <functional> // std::multiplies #include <functional> // std::multiplies
#include "aidge/utils/Registrar.hpp" #include "aidge/utils/Registrar.hpp"
...@@ -76,7 +77,7 @@ static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_Float32( ...@@ -76,7 +77,7 @@ static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_Float32(
Aidge::DivImpl_cpu_forward_kernel<float, float, float>); Aidge::DivImpl_cpu_forward_kernel<float, float, float>);
static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_Int32( static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_Int32(
{DataType::Int32, DataType::Int32, DataType::Int32}, {DataType::Int32, DataType::Int32, DataType::Int32},
Aidge::DivImpl_cpu_forward_kernel<int, int, int>); Aidge::DivImpl_cpu_forward_kernel<std::int32_t, std::int32_t, std::int32_t>);
static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_Float64( static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_Float64(
{DataType::Float64, DataType::Float64, DataType::Float64}, {DataType::Float64, DataType::Float64, DataType::Float64},
Aidge::DivImpl_cpu_forward_kernel<double, double, double>); Aidge::DivImpl_cpu_forward_kernel<double, double, double>);
......
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#include "aidge/utils/Registrar.hpp" #include "aidge/utils/Registrar.hpp"
#include <cstdint> // std::int32_t, std::int64_t
#include "aidge/backend/cpu/data/Broadcasting.hpp" #include "aidge/backend/cpu/data/Broadcasting.hpp"
#include "aidge/backend/cpu/operator/MulImpl.hpp" #include "aidge/backend/cpu/operator/MulImpl.hpp"
...@@ -35,13 +37,13 @@ void MulImpl_cpu_forward_kernel(const std::vector<std::size_t>& input1Dims, ...@@ -35,13 +37,13 @@ void MulImpl_cpu_forward_kernel(const std::vector<std::size_t>& input1Dims,
totalElements *= dimSize; totalElements *= dimSize;
} }
for (std::size_t oIndex = 0; oIndex < totalElements; ++oIndex) for (std::size_t oIndex = 0; oIndex < totalElements; ++oIndex)
{ {
std::vector<size_t> indexes = getMultiDimIndices(outputDims, oIndex); std::vector<size_t> indexes = getMultiDimIndices(outputDims, oIndex);
std::size_t idx1 = getFlattenedIndex(input1Dims, indexes); std::size_t idx1 = getFlattenedIndex(input1Dims, indexes);
std::size_t idx2 = getFlattenedIndex(input2Dims, indexes); std::size_t idx2 = getFlattenedIndex(input2Dims, indexes);
output[oIndex] = input_1[idx1] * input_2[idx2]; output[oIndex] = input_1[idx1] * input_2[idx2];
} }
} }
...@@ -50,12 +52,15 @@ namespace { ...@@ -50,12 +52,15 @@ namespace {
static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Float32( static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Float32(
{DataType::Float32, DataType::Float32, DataType::Float32}, {DataType::Float32, DataType::Float32, DataType::Float32},
Aidge::MulImpl_cpu_forward_kernel<float, float, float>); Aidge::MulImpl_cpu_forward_kernel<float, float, float>);
static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Int32(
{DataType::Int32, DataType::Int32, DataType::Int32},
Aidge::MulImpl_cpu_forward_kernel<int, int, int>);
static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Float64( static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Float64(
{DataType::Float64, DataType::Float64, DataType::Float64}, {DataType::Float64, DataType::Float64, DataType::Float64},
Aidge::MulImpl_cpu_forward_kernel<double, double, double>); Aidge::MulImpl_cpu_forward_kernel<double, double, double>);
static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Int32(
{DataType::Int32, DataType::Int32, DataType::Int32},
Aidge::MulImpl_cpu_forward_kernel<std::int32_t, std::int32_t, std::int32_t>);
static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Int64(
{DataType::Int64, DataType::Int64, DataType::Int64},
Aidge::MulImpl_cpu_forward_kernel<std::int64_t, std::int64_t, std::int64_t>);
} // namespace } // namespace
} // namespace Aidge } // namespace Aidge
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
#include "aidge/utils/Registrar.hpp" #include "aidge/utils/Registrar.hpp"
#include <cstddef> // std::size_t
#include <cstdint> // std::int32_t, std::int64_t
#include <vector>
#include "aidge/backend/cpu/data/Broadcasting.hpp" #include "aidge/backend/cpu/data/Broadcasting.hpp"
#include "aidge/backend/cpu/operator/SubImpl.hpp" #include "aidge/backend/cpu/operator/SubImpl.hpp"
...@@ -36,7 +40,7 @@ void SubImpl_cpu_forward_kernel(const std::vector<std::size_t>& input1Dims, ...@@ -36,7 +40,7 @@ void SubImpl_cpu_forward_kernel(const std::vector<std::size_t>& input1Dims,
totalElements *= dimSize; totalElements *= dimSize;
} }
for (std::size_t oIndex = 0; oIndex < totalElements; ++oIndex) for (std::size_t oIndex = 0; oIndex < totalElements; ++oIndex)
{ {
std::vector<size_t> indexes = getMultiDimIndices(outputDims, oIndex); std::vector<size_t> indexes = getMultiDimIndices(outputDims, oIndex);
std::size_t idx1 = getFlattenedIndex(input1Dims, indexes); std::size_t idx1 = getFlattenedIndex(input1Dims, indexes);
...@@ -49,12 +53,15 @@ namespace { ...@@ -49,12 +53,15 @@ namespace {
static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Float32( static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Float32(
{DataType::Float32, DataType::Float32, DataType::Float32}, {DataType::Float32, DataType::Float32, DataType::Float32},
Aidge::SubImpl_cpu_forward_kernel<float, float, float>); Aidge::SubImpl_cpu_forward_kernel<float, float, float>);
static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Int32(
{DataType::Int32, DataType::Int32, DataType::Int32},
Aidge::SubImpl_cpu_forward_kernel<int, int, int>);
static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Float64( static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Float64(
{DataType::Float64, DataType::Float64, DataType::Float64}, {DataType::Float64, DataType::Float64, DataType::Float64},
Aidge::SubImpl_cpu_forward_kernel<double, double, double>); Aidge::SubImpl_cpu_forward_kernel<double, double, double>);
static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Int32(
{DataType::Int32, DataType::Int32, DataType::Int32},
Aidge::SubImpl_cpu_forward_kernel<std::int32_t, std::int32_t, std::int32_t>);
static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Int64(
{DataType::Int64, DataType::Int64, DataType::Int64},
Aidge::SubImpl_cpu_forward_kernel<std::int64_t, std::int64_t, std::int64_t>);
} // namespace } // namespace
} // namespace Aidge } // namespace Aidge
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment