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
No related merge requests found
......@@ -14,6 +14,8 @@
#include "aidge/utils/Registrar.hpp"
#include <cstdint> // std::int32_t, std::int64_t
#include "aidge/backend/cpu/data/Broadcasting.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
namespace {
static Registrar<AddImplForward_cpu> registrarAddImplForward_cpu_Float32(
{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(
{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 Aidge
......
......@@ -14,6 +14,7 @@
#include <numeric> // std::accumulate
#include <cstddef> // std::size_t
#include <cstdint> // std::int32_t, std::int64_t
#include <functional> // std::multiplies
#include "aidge/utils/Registrar.hpp"
......@@ -76,7 +77,7 @@ static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_Float32(
Aidge::DivImpl_cpu_forward_kernel<float, float, float>);
static Registrar<DivImplForward_cpu> registrarDivImplForward_cpu_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(
{DataType::Float64, DataType::Float64, DataType::Float64},
Aidge::DivImpl_cpu_forward_kernel<double, double, double>);
......
......@@ -14,6 +14,8 @@
#include "aidge/utils/Registrar.hpp"
#include <cstdint> // std::int32_t, std::int64_t
#include "aidge/backend/cpu/data/Broadcasting.hpp"
#include "aidge/backend/cpu/operator/MulImpl.hpp"
......@@ -35,13 +37,13 @@ void MulImpl_cpu_forward_kernel(const std::vector<std::size_t>& input1Dims,
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::size_t idx1 = getFlattenedIndex(input1Dims, indexes);
std::size_t idx2 = getFlattenedIndex(input2Dims, indexes);
output[oIndex] = input_1[idx1] * input_2[idx2];
}
}
......@@ -50,12 +52,15 @@ namespace {
static Registrar<MulImplForward_cpu> registrarMulImplForward_cpu_Float32(
{DataType::Float32, DataType::Float32, DataType::Float32},
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(
{DataType::Float64, DataType::Float64, DataType::Float64},
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 Aidge
......
......@@ -14,6 +14,10 @@
#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/operator/SubImpl.hpp"
......@@ -36,7 +40,7 @@ void SubImpl_cpu_forward_kernel(const std::vector<std::size_t>& input1Dims,
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::size_t idx1 = getFlattenedIndex(input1Dims, indexes);
......@@ -49,12 +53,15 @@ namespace {
static Registrar<SubImplForward_cpu> registrarSubImplForward_cpu_Float32(
{DataType::Float32, DataType::Float32, DataType::Float32},
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(
{DataType::Float64, DataType::Float64, DataType::Float64},
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 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