17#include "../KernelGenerator.h"
18#include "../Validator.h"
25void Validator::visit(
const ir::operation::Reduce &) {
_supported =
true; }
27void KernelGenerator::visit(
const ir::operation::Reduce &node)
29 const auto output_index{node.getOutputs().at(0)};
32 const auto keep_dims{node.param().keep_dims};
33 const auto reduce_type = node.param().reduce_type;
36 auto input_tensor = _tensor_reg->getAclTensor(input_index);
39 const auto &axes = _ctx.
at(axes_index);
40 const auto input_rank = _ctx.
at(input_index).shape().rank();
42 std::unique_ptr<arm_compute::IFunction> fn;
46 fn = acl_common::generateLayer<arm_compute::CLReduceMean>(input_tensor->handle(), acl_axes,
53 fn = acl_common::generateLayer<arm_compute::CLReduceOperation>(
54 _tensor_builder->acl_tensor_manager()->internal_buffer_manager(), input_tensor->handle(),
std::unique_ptr< exec::IFunction > _return_fn
const Object & at(const Index &index) const
Get the object that is associated with the given index.
std::set< uint32_t > asSet(const ir::Operand &operand, int32_t rank)
arm_compute::ReductionOperation convertReduceType(ir::operation::Reduce::ReduceType reduce_type_ir)
arm_compute::Coordinates asCoordinates(const ir::Operand &operand, int32_t rank)
std::unique_ptr< AclFunction > asAclFunction(std::unique_ptr<::arm_compute::IFunction > &&layer)