From 0499dff9293a86d3d53f72fed0a38b2823563674 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Fri, 31 Jul 2020 22:21:38 +0100 Subject: COMPMID-3392: Collapse TensorMaps into a single TensorPack Collapse InputTensorMap and OutputTensorMap to a single TensorPack mechanism. Signed-off-by: Georgios Pinitas Change-Id: Ie2fdfc6b07d84ad589169ec99ca64fcf45a00bec Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/c/VisualCompute/ComputeLibrary/+/253783 Tested-by: bsgcomp Reviewed-by: Michalis Spyrou Signed-off-by: Michalis Spyrou Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3641 Tested-by: Arm Jenkins Comments-Addressed: Arm Jenkins Reviewed-by: SiCong Li Reviewed-by: Sheri Zhang --- arm_compute/core/CL/ICLKernel.h | 7 +- .../core/CL/kernels/CLActivationLayerKernel.h | 3 +- .../CL/kernels/CLBatchConcatenateLayerKernel.h | 3 +- .../CL/kernels/CLDepthConcatenateLayerKernel.h | 3 +- .../CL/kernels/CLElementWiseUnaryLayerKernel.h | 3 +- .../core/CL/kernels/CLElementwiseOperationKernel.h | 3 +- arm_compute/core/CL/kernels/CLFillBorderKernel.h | 2 +- .../CL/kernels/CLHeightConcatenateLayerKernel.h | 3 +- .../CL/kernels/CLPixelWiseMultiplicationKernel.h | 4 +- arm_compute/core/CL/kernels/CLReshapeLayerKernel.h | 3 +- arm_compute/core/CL/kernels/CLStridedSliceKernel.h | 3 +- .../CL/kernels/CLWidthConcatenate2TensorsKernel.h | 3 +- .../CL/kernels/CLWidthConcatenate4TensorsKernel.h | 3 +- .../CL/kernels/CLWidthConcatenateLayerKernel.h | 3 +- arm_compute/core/CPP/ICPPKernel.h | 7 +- arm_compute/core/ITensorPack.h | 100 +++++++++++++++++++++ .../core/NEON/kernels/NEActivationLayerKernel.h | 3 +- .../core/NEON/kernels/NEArithmeticAdditionKernel.h | 2 +- .../NEON/kernels/NEArithmeticSubtractionKernel.h | 2 +- .../NEON/kernels/NEBatchConcatenateLayerKernel.h | 3 +- .../NEON/kernels/NEDepthConcatenateLayerKernel.h | 3 +- .../NEON/kernels/NEElementwiseOperationKernel.h | 3 +- .../NEON/kernels/NEHeightConcatenateLayerKernel.h | 3 +- .../NEON/kernels/NEPixelWiseMultiplicationKernel.h | 4 +- .../core/NEON/kernels/NEReshapeLayerKernel.h | 3 +- .../core/NEON/kernels/NEStridedSliceKernel.h | 3 +- .../NEON/kernels/NEWidthConcatenateLayerKernel.h | 3 +- arm_compute/core/experimental/Types.h | 7 +- arm_compute/runtime/CL/CLScheduler.h | 7 +- arm_compute/runtime/CL/CLTuner.h | 7 +- arm_compute/runtime/CL/ICLOperator.h | 4 +- arm_compute/runtime/CL/ICLTuner.h | 5 +- .../runtime/CL/functions/CLConcatenateLayer.h | 2 +- .../runtime/CL/functions/CLElementwiseOperations.h | 14 +-- arm_compute/runtime/CL/functions/CLPReluLayer.h | 2 +- .../CL/functions/CLPixelWiseMultiplication.h | 4 +- arm_compute/runtime/CL/tuners/BifrostTuner.h | 2 +- arm_compute/runtime/CL/tuners/MidgardTuner.h | 2 +- arm_compute/runtime/CPP/CPPScheduler.h | 4 +- arm_compute/runtime/IOperator.h | 9 +- arm_compute/runtime/IScheduler.h | 5 +- arm_compute/runtime/NEON/INEOperator.h | 5 +- .../runtime/NEON/functions/NEConcatenateLayer.h | 2 +- arm_compute/runtime/OMP/OMPScheduler.h | 5 +- arm_compute/runtime/SingleThreadScheduler.h | 5 +- 45 files changed, 173 insertions(+), 103 deletions(-) create mode 100644 arm_compute/core/ITensorPack.h (limited to 'arm_compute') diff --git a/arm_compute/core/CL/ICLKernel.h b/arm_compute/core/CL/ICLKernel.h index 6e606ff857..d4990a1dee 100644 --- a/arm_compute/core/CL/ICLKernel.h +++ b/arm_compute/core/CL/ICLKernel.h @@ -225,14 +225,13 @@ public: * * @note The queue is *not* flushed by this method, and therefore the kernel will not have been executed by the time this method returns. * - * @param[in] inputs A vector containing the input tensors. - * @param[in] outputs A vector containing the output tensors. + * @param[in] tensors A vector containing the tensors to operato on. * @param[in] window Region on which to execute the kernel. (Must be a valid region of the window returned by window()). * @param[in,out] queue Command queue on which to enqueue the kernel. */ - virtual void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, cl::CommandQueue &queue) + virtual void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) { - ARM_COMPUTE_UNUSED(inputs, outputs, window, queue); + ARM_COMPUTE_UNUSED(tensors, window, queue); } /** Add the passed parameters to the object's kernel's arguments starting from the index idx. * diff --git a/arm_compute/core/CL/kernels/CLActivationLayerKernel.h b/arm_compute/core/CL/kernels/CLActivationLayerKernel.h index cf62ca600b..81d4ccb065 100644 --- a/arm_compute/core/CL/kernels/CLActivationLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLActivationLayerKernel.h @@ -68,8 +68,7 @@ public: static Status validate(const ITensorInfo *input, const ITensorInfo *output, const ActivationLayerInfo &act_info); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; private: bool _run_in_place; diff --git a/arm_compute/core/CL/kernels/CLBatchConcatenateLayerKernel.h b/arm_compute/core/CL/kernels/CLBatchConcatenateLayerKernel.h index 890fecf0c9..bb8968ca83 100644 --- a/arm_compute/core/CL/kernels/CLBatchConcatenateLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLBatchConcatenateLayerKernel.h @@ -73,8 +73,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int batch_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; private: unsigned int _batch_offset; diff --git a/arm_compute/core/CL/kernels/CLDepthConcatenateLayerKernel.h b/arm_compute/core/CL/kernels/CLDepthConcatenateLayerKernel.h index ad365d655b..d8493bc5d8 100644 --- a/arm_compute/core/CL/kernels/CLDepthConcatenateLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLDepthConcatenateLayerKernel.h @@ -71,8 +71,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int depth_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; private: unsigned int _depth_offset; diff --git a/arm_compute/core/CL/kernels/CLElementWiseUnaryLayerKernel.h b/arm_compute/core/CL/kernels/CLElementWiseUnaryLayerKernel.h index f8f158c5bc..82cd953b68 100644 --- a/arm_compute/core/CL/kernels/CLElementWiseUnaryLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLElementWiseUnaryLayerKernel.h @@ -60,8 +60,7 @@ public: static Status validate(const ITensorInfo *input, const ITensorInfo *output, const ElementWiseUnary &op); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; }; } // namespace arm_compute #endif /* ARM_COMPUTE_CLELEMENTWISEUNARYLAYERKERNEL_H */ diff --git a/arm_compute/core/CL/kernels/CLElementwiseOperationKernel.h b/arm_compute/core/CL/kernels/CLElementwiseOperationKernel.h index 76bc879638..b459292161 100644 --- a/arm_compute/core/CL/kernels/CLElementwiseOperationKernel.h +++ b/arm_compute/core/CL/kernels/CLElementwiseOperationKernel.h @@ -54,8 +54,7 @@ public: ~CLElementwiseOperationKernel() = default; // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, cl::CommandQueue &queue) override; - + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; BorderSize border_size() const override; protected: diff --git a/arm_compute/core/CL/kernels/CLFillBorderKernel.h b/arm_compute/core/CL/kernels/CLFillBorderKernel.h index 8cad68dc1a..5323af4c0e 100644 --- a/arm_compute/core/CL/kernels/CLFillBorderKernel.h +++ b/arm_compute/core/CL/kernels/CLFillBorderKernel.h @@ -85,7 +85,7 @@ public: void set_constant_border(unsigned int idx, const PixelValue &constant_border_value); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; void run(const Window &window, cl::CommandQueue &queue) override; bool is_parallelisable() const override; diff --git a/arm_compute/core/CL/kernels/CLHeightConcatenateLayerKernel.h b/arm_compute/core/CL/kernels/CLHeightConcatenateLayerKernel.h index 0563fad414..4fa2b40881 100644 --- a/arm_compute/core/CL/kernels/CLHeightConcatenateLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLHeightConcatenateLayerKernel.h @@ -68,8 +68,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int height_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; private: unsigned int _height_offset; diff --git a/arm_compute/core/CL/kernels/CLPixelWiseMultiplicationKernel.h b/arm_compute/core/CL/kernels/CLPixelWiseMultiplicationKernel.h index 86159fc915..6b5bd11bde 100644 --- a/arm_compute/core/CL/kernels/CLPixelWiseMultiplicationKernel.h +++ b/arm_compute/core/CL/kernels/CLPixelWiseMultiplicationKernel.h @@ -132,7 +132,7 @@ public: ConvertPolicy overflow_policy, RoundingPolicy rounding_policy, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; BorderSize border_size() const override; private: @@ -184,7 +184,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; BorderSize border_size() const override; private: diff --git a/arm_compute/core/CL/kernels/CLReshapeLayerKernel.h b/arm_compute/core/CL/kernels/CLReshapeLayerKernel.h index 11c06d1cab..6e3f255c52 100644 --- a/arm_compute/core/CL/kernels/CLReshapeLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLReshapeLayerKernel.h @@ -53,8 +53,7 @@ public: static Status validate(const ITensorInfo *input, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; }; } // namespace arm_compute #endif /*ARM_COMPUTE_CLRESHAPELAYERKERNEL_H */ diff --git a/arm_compute/core/CL/kernels/CLStridedSliceKernel.h b/arm_compute/core/CL/kernels/CLStridedSliceKernel.h index 28a665b113..74311b71fa 100644 --- a/arm_compute/core/CL/kernels/CLStridedSliceKernel.h +++ b/arm_compute/core/CL/kernels/CLStridedSliceKernel.h @@ -73,8 +73,7 @@ public: int32_t begin_mask, int32_t end_mask, int32_t shrink_axis_mask); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; }; } // namespace arm_compute #endif /*ARM_COMPUTE_CL_STRIDED_SLICE_KERNEL_H */ diff --git a/arm_compute/core/CL/kernels/CLWidthConcatenate2TensorsKernel.h b/arm_compute/core/CL/kernels/CLWidthConcatenate2TensorsKernel.h index aaedaa90ee..a379b5f0b8 100644 --- a/arm_compute/core/CL/kernels/CLWidthConcatenate2TensorsKernel.h +++ b/arm_compute/core/CL/kernels/CLWidthConcatenate2TensorsKernel.h @@ -67,8 +67,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; }; } // namespace arm_compute #endif /* ARM_COMPUTE_CLWIDTHCONCATENATE_2TENSORS_KERNEL_H */ diff --git a/arm_compute/core/CL/kernels/CLWidthConcatenate4TensorsKernel.h b/arm_compute/core/CL/kernels/CLWidthConcatenate4TensorsKernel.h index b1d6e890a0..6b0e8ee21d 100644 --- a/arm_compute/core/CL/kernels/CLWidthConcatenate4TensorsKernel.h +++ b/arm_compute/core/CL/kernels/CLWidthConcatenate4TensorsKernel.h @@ -71,8 +71,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *input3, const ITensorInfo *input4, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; }; } // namespace arm_compute #endif /* ARM_COMPUTE_CLWIDTHCONCATENATE_4TENSORS_KERNEL_H */ diff --git a/arm_compute/core/CL/kernels/CLWidthConcatenateLayerKernel.h b/arm_compute/core/CL/kernels/CLWidthConcatenateLayerKernel.h index cb8777d5fd..32e90af404 100644 --- a/arm_compute/core/CL/kernels/CLWidthConcatenateLayerKernel.h +++ b/arm_compute/core/CL/kernels/CLWidthConcatenateLayerKernel.h @@ -68,8 +68,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int width_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, cl::CommandQueue &queue) override; + void run_op(ITensorPack &tensors, const Window &window, cl::CommandQueue &queue) override; private: unsigned int _width_offset; diff --git a/arm_compute/core/CPP/ICPPKernel.h b/arm_compute/core/CPP/ICPPKernel.h index 3f784cf6d9..ab369ffe1d 100644 --- a/arm_compute/core/CPP/ICPPKernel.h +++ b/arm_compute/core/CPP/ICPPKernel.h @@ -79,14 +79,13 @@ public: * * @note The width of the window has to be a multiple of num_elems_processed_per_iteration(). * - * @param[in] inputs A vector containing the input tensors. - * @param[in] outputs A vector containing the output tensors. + * @param[in] tensors A vector containing the tensors to operate on. * @param[in] window Region on which to execute the kernel. (Must be a region of the window returned by window()) * @param[in] info Info about executing thread and CPU. */ - virtual void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, const ThreadInfo &info) + virtual void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) { - ARM_COMPUTE_UNUSED(inputs, outputs, window, info); + ARM_COMPUTE_UNUSED(tensors, window, info); } /** Name of the kernel diff --git a/arm_compute/core/ITensorPack.h b/arm_compute/core/ITensorPack.h new file mode 100644 index 0000000000..36b6aea490 --- /dev/null +++ b/arm_compute/core/ITensorPack.h @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2020 Arm Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef ARM_COMPUTE_ITENSORPACK_H +#define ARM_COMPUTE_ITENSORPACK_H + +#include +#include + +namespace arm_compute +{ +// Forward declaration +class ITensor; + +/** Tensor packing service */ +class ITensorPack +{ +private: + struct PackElement + { + PackElement() = default; + PackElement(ITensor *tensor) + : tensor(tensor), ctensor(nullptr) + { + } + PackElement(const ITensor *ctensor) + : tensor(nullptr), ctensor(ctensor) + { + } + + ITensor *tensor{ nullptr }; + const ITensor *ctensor{ nullptr }; + }; + +public: + /** Default Constructor */ + ITensorPack() = default; + /** Add tensor to the pack + * + * @param[in] id ID/type of the tensor to add + * @param[in] tensor Tensor to add + */ + void add_tensor(int id, ITensor *tensor); + + /** Add const tensor to the pack + * + * @param[in] id ID/type of the tensor to add + * @param[in] tensor Tensor to add + */ + void add_tensor(int id, const ITensor *tensor); + /** Get tensor of a given id from the pac + * + * @param[in] id ID of tensor to extract + * + * @return The pointer to the tensor if exist and is non-const else nullptr + */ + ITensor *get_tensor(int id); + /** Get constant tensor of a given id + * + * @param[in] id ID of tensor to extract + * + * @return The pointer to the tensor if exist and is const else nullptr + */ + const ITensor *get_const_tensor(int id) const; + /** Pack size accessor + * + * @return Number of tensors registered to the pack + */ + size_t size() const; + /** Checks if pack is empty + * + * @return True if empty else false + */ + bool empty() const; + +private: + std::map _pack{}; /**< Container with the packed tensors */ +}; +} // namespace arm_compute +#endif /*ARM_COMPUTE_ITENSORPACK_H */ diff --git a/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h b/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h index 960e6fa3e5..325647bd66 100644 --- a/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEActivationLayerKernel.h @@ -76,8 +76,7 @@ public: static Status validate(const ITensorInfo *input, const ITensorInfo *output, const ActivationLayerInfo &act_info); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: using ActivationFunction = ActivationLayerInfo::ActivationFunction; diff --git a/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h b/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h index 764596d7dc..eece5708e8 100644 --- a/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h +++ b/arm_compute/core/NEON/kernels/NEArithmeticAdditionKernel.h @@ -86,7 +86,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, ConvertPolicy policy); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised add functions diff --git a/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h b/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h index 86c3dd8e88..e3a41a2b1c 100644 --- a/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h +++ b/arm_compute/core/NEON/kernels/NEArithmeticSubtractionKernel.h @@ -98,7 +98,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, ConvertPolicy policy); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised sub functions diff --git a/arm_compute/core/NEON/kernels/NEBatchConcatenateLayerKernel.h b/arm_compute/core/NEON/kernels/NEBatchConcatenateLayerKernel.h index f397a29b48..478890925b 100644 --- a/arm_compute/core/NEON/kernels/NEBatchConcatenateLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEBatchConcatenateLayerKernel.h @@ -76,8 +76,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int batch_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: using BatchConcatFunction = void(const ITensor *in, ITensor *out, unsigned int batch_offset, const Window &window); diff --git a/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h b/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h index e1aaa59f25..3b2b9a1b79 100644 --- a/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEDepthConcatenateLayerKernel.h @@ -76,8 +76,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int depth_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: using DepthConcatFunction = void(const ITensor *in, ITensor *out, unsigned int depth_offset, const Window &window); diff --git a/arm_compute/core/NEON/kernels/NEElementwiseOperationKernel.h b/arm_compute/core/NEON/kernels/NEElementwiseOperationKernel.h index cf43aca4b0..47b8c3b7c8 100644 --- a/arm_compute/core/NEON/kernels/NEElementwiseOperationKernel.h +++ b/arm_compute/core/NEON/kernels/NEElementwiseOperationKernel.h @@ -67,8 +67,7 @@ public: using ElementwiseFunction = void(const ITensor *input1, const ITensor *input2, ITensor *output, const Window &window); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; protected: /** Validate the argument passed to the kernel diff --git a/arm_compute/core/NEON/kernels/NEHeightConcatenateLayerKernel.h b/arm_compute/core/NEON/kernels/NEHeightConcatenateLayerKernel.h index d463b53e2c..8a5e86acc4 100644 --- a/arm_compute/core/NEON/kernels/NEHeightConcatenateLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEHeightConcatenateLayerKernel.h @@ -74,8 +74,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int height_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: unsigned int _height_offset; diff --git a/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h b/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h index 8876d04c62..c530d78c42 100644 --- a/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h +++ b/arm_compute/core/NEON/kernels/NEPixelWiseMultiplicationKernel.h @@ -111,7 +111,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, float scale, ConvertPolicy overflow_policy, RoundingPolicy rounding_policy); // Inherited methods overridden - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: /** Common signature for all the specialised multiplication functions with integer scaling factor @@ -178,7 +178,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; }; } // namespace arm_compute diff --git a/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h b/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h index 97e91ed03d..a4b8426e41 100644 --- a/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEReshapeLayerKernel.h @@ -57,8 +57,7 @@ public: static Status validate(const ITensorInfo *input, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; }; } // namespace arm_compute #endif /*ARM_COMPUTE_NERESHAPELAYERKERNEL_H */ diff --git a/arm_compute/core/NEON/kernels/NEStridedSliceKernel.h b/arm_compute/core/NEON/kernels/NEStridedSliceKernel.h index 59caeecb0d..be55fd75de 100644 --- a/arm_compute/core/NEON/kernels/NEStridedSliceKernel.h +++ b/arm_compute/core/NEON/kernels/NEStridedSliceKernel.h @@ -91,8 +91,7 @@ public: int32_t begin_mask, int32_t end_mask, int32_t shrink_axis_mask); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: Coordinates _starts_abs; /**< Absolute start coordinates */ diff --git a/arm_compute/core/NEON/kernels/NEWidthConcatenateLayerKernel.h b/arm_compute/core/NEON/kernels/NEWidthConcatenateLayerKernel.h index b5336ad026..64d741deab 100644 --- a/arm_compute/core/NEON/kernels/NEWidthConcatenateLayerKernel.h +++ b/arm_compute/core/NEON/kernels/NEWidthConcatenateLayerKernel.h @@ -73,8 +73,7 @@ public: static Status validate(const ITensorInfo *input, unsigned int width_offset, const ITensorInfo *output); // Inherited methods overridden: - void run_op(const InputTensorMap &inputs, const OutputTensorMap &outputs, - const Window &window, const ThreadInfo &info) override; + void run_op(ITensorPack &tensors, const Window &window, const ThreadInfo &info) override; private: unsigned int _width_offset; diff --git a/arm_compute/core/experimental/Types.h b/arm_compute/core/experimental/Types.h index eca833e708..4dee5ff70d 100644 --- a/arm_compute/core/experimental/Types.h +++ b/arm_compute/core/experimental/Types.h @@ -24,13 +24,14 @@ #ifndef ARM_COMPUTE_EXPERIMENTAL_TYPES_H #define ARM_COMPUTE_EXPERIMENTAL_TYPES_H +#include "arm_compute/core/ITensorPack.h" #include "arm_compute/core/TensorShape.h" -#include #include namespace arm_compute { +// Forward declaration class ITensor; /** Memory type */ @@ -51,10 +52,6 @@ enum TensorType : int32_t ACL_SRC_VEC = 256, }; -using InputTensorMap = std::map; -using OutputTensorMap = std::map; -using OperatorTensorMap = OutputTensorMap; - namespace experimental { struct MemoryInfo diff --git a/arm_compute/runtime/CL/CLScheduler.h b/arm_compute/runtime/CL/CLScheduler.h index 93595c65c7..8a22832792 100644 --- a/arm_compute/runtime/CL/CLScheduler.h +++ b/arm_compute/runtime/CL/CLScheduler.h @@ -76,11 +76,10 @@ public: /** Schedule the execution of the passed kernel if possible. * * @param[in] kernel Kernel to execute. - * @param[in] inputs Vector containing the input tensors. - * @param[in] outputs Vector containing the output tensors. + * @param[in] tensors Vector containing the tensors to operate on. * @param[in] flush (Optional) Specifies if the command queue will be flushed after running the kernel. */ - void enqueue_op(ICLKernel &kernel, const InputTensorMap &inputs, const OutputTensorMap &outputs, bool flush = true); + void enqueue_op(ICLKernel &kernel, ITensorPack &tensors, bool flush = true); /** Initialises the context and command queue to be used by the scheduler. * @@ -152,7 +151,7 @@ public: bool is_initialised() const; private: - void enqueue_common(ICLKernel &kernel, const InputTensorMap &inputs, const OutputTensorMap &outputs, bool flush); + void enqueue_common(ICLKernel &kernel, ITensorPack &tensors, bool flush); /** Flag to ensure symbols initialisation is happening before Scheduler creation */ static std::once_flag _initialize_symbols; diff --git a/arm_compute/runtime/CL/CLTuner.h b/arm_compute/runtime/CL/CLTuner.h index aa31181d2d..3b45a2177e 100644 --- a/arm_compute/runtime/CL/CLTuner.h +++ b/arm_compute/runtime/CL/CLTuner.h @@ -116,7 +116,7 @@ public: // Inherited methods overridden: void tune_kernel_static(ICLKernel &kernel) override; void tune_kernel_dynamic(ICLKernel &kernel) override; - void tune_kernel_dynamic(ICLKernel &kernel, const InputTensorMap &inputs, const OutputTensorMap &outputs) override; + void tune_kernel_dynamic(ICLKernel &kernel, ITensorPack &tensors) override; /** Is the kernel_event set ? * @@ -127,11 +127,12 @@ public: private: /** Find optimal LWS using brute-force approach * - * @param[in] kernel OpenCL kernel to be tuned with LWS + * @param[in] kernel OpenCL kernel to be tuned with LWS + * @param[in,out] tensors Tensors for the kernel to operate on * * @return The optimal LWS to use */ - cl::NDRange find_optimal_lws(ICLKernel &kernel, const InputTensorMap &inputs, const OutputTensorMap &outputs); + cl::NDRange find_optimal_lws(ICLKernel &kernel, ITensorPack &tensors); std::unordered_map _lws_table; cl::Event _kernel_event; diff --git a/arm_compute/runtime/CL/ICLOperator.h b/arm_compute/runtime/CL/ICLOperator.h index 2d6c96e815..526b7e93e9 100644 --- a/arm_compute/runtime/CL/ICLOperator.h +++ b/arm_compute/runtime/CL/ICLOperator.h @@ -54,8 +54,8 @@ public: ICLOperator &operator=(ICLOperator &&) = default; // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; - void prepare(OperatorTensorMap constants) override; + void run(ITensorPack &tensors) override; + void prepare(ITensorPack &constants) override; MemoryRequirements workspace() const override; protected: diff --git a/arm_compute/runtime/CL/ICLTuner.h b/arm_compute/runtime/CL/ICLTuner.h index 4bc8ddf632..0f951c384e 100644 --- a/arm_compute/runtime/CL/ICLTuner.h +++ b/arm_compute/runtime/CL/ICLTuner.h @@ -54,10 +54,9 @@ public: /** Tune OpenCL kernel dynamically * * @param[in] kernel Kernel to tune - * @param[in] inputs Inputs for the kernel to use - * @param[in, out] outputs Outputs for the kernel to use + * @param[in, out] tensors Tensors for the kernel to use */ - virtual void tune_kernel_dynamic(ICLKernel &kernel, const InputTensorMap &inputs, const OutputTensorMap &outputs) = 0; + virtual void tune_kernel_dynamic(ICLKernel &kernel, ITensorPack &tensors) = 0; }; } // namespace arm_compute #endif /*ARM_COMPUTE_ICLTUNER_H */ diff --git a/arm_compute/runtime/CL/functions/CLConcatenateLayer.h b/arm_compute/runtime/CL/functions/CLConcatenateLayer.h index 99a2053a5a..f535c8ea97 100644 --- a/arm_compute/runtime/CL/functions/CLConcatenateLayer.h +++ b/arm_compute/runtime/CL/functions/CLConcatenateLayer.h @@ -144,7 +144,7 @@ public: static Status validate(const std::vector &inputs_vector, const ITensorInfo *output, size_t axis); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: std::vector> _concat_kernels; diff --git a/arm_compute/runtime/CL/functions/CLElementwiseOperations.h b/arm_compute/runtime/CL/functions/CLElementwiseOperations.h index 5af24c90ac..2d9d43863d 100644 --- a/arm_compute/runtime/CL/functions/CLElementwiseOperations.h +++ b/arm_compute/runtime/CL/functions/CLElementwiseOperations.h @@ -98,7 +98,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, ConvertPolicy policy, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; @@ -168,7 +168,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, ConvertPolicy policy, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; @@ -207,7 +207,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; @@ -246,7 +246,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; @@ -285,7 +285,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; @@ -324,7 +324,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; @@ -363,7 +363,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; diff --git a/arm_compute/runtime/CL/functions/CLPReluLayer.h b/arm_compute/runtime/CL/functions/CLPReluLayer.h index 08567cccfb..84743508df 100644 --- a/arm_compute/runtime/CL/functions/CLPReluLayer.h +++ b/arm_compute/runtime/CL/functions/CLPReluLayer.h @@ -64,7 +64,7 @@ public: static Status validate(const ITensorInfo *input, const ITensorInfo *alpha, const ITensorInfo *output); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; diff --git a/arm_compute/runtime/CL/functions/CLPixelWiseMultiplication.h b/arm_compute/runtime/CL/functions/CLPixelWiseMultiplication.h index ca8d77e6b7..2066012306 100644 --- a/arm_compute/runtime/CL/functions/CLPixelWiseMultiplication.h +++ b/arm_compute/runtime/CL/functions/CLPixelWiseMultiplication.h @@ -103,7 +103,7 @@ public: ConvertPolicy overflow_policy, RoundingPolicy rounding_policy, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; @@ -136,7 +136,7 @@ public: static Status validate(const ITensorInfo *input1, const ITensorInfo *input2, const ITensorInfo *output, const ActivationLayerInfo &act_info = ActivationLayerInfo()); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: CLFillBorderKernel _border_handler; diff --git a/arm_compute/runtime/CL/tuners/BifrostTuner.h b/arm_compute/runtime/CL/tuners/BifrostTuner.h index 830f7d9067..237693fb88 100644 --- a/arm_compute/runtime/CL/tuners/BifrostTuner.h +++ b/arm_compute/runtime/CL/tuners/BifrostTuner.h @@ -37,7 +37,7 @@ public: // Inherited overriden methods void tune_kernel_static(ICLKernel &kernel) override; void tune_kernel_dynamic(ICLKernel &kernel) override; - void tune_kernel_dynamic(ICLKernel &kernel, const InputTensorMap &inputs, const OutputTensorMap &outputs) override; + void tune_kernel_dynamic(ICLKernel &kernel, ITensorPack &tensors) override; }; } // namespace tuners } // namespace arm_compute diff --git a/arm_compute/runtime/CL/tuners/MidgardTuner.h b/arm_compute/runtime/CL/tuners/MidgardTuner.h index c702e7a2aa..86d46044c2 100644 --- a/arm_compute/runtime/CL/tuners/MidgardTuner.h +++ b/arm_compute/runtime/CL/tuners/MidgardTuner.h @@ -37,7 +37,7 @@ public: // Inherited overriden methods void tune_kernel_static(ICLKernel &kernel) override; void tune_kernel_dynamic(ICLKernel &kernel) override; - void tune_kernel_dynamic(ICLKernel &kernel, const InputTensorMap &inputs, const OutputTensorMap &outputs) override; + void tune_kernel_dynamic(ICLKernel &kernel, ITensorPack &tensors) override; }; } // namespace tuners } // namespace arm_compute diff --git a/arm_compute/runtime/CPP/CPPScheduler.h b/arm_compute/runtime/CPP/CPPScheduler.h index 9d55ed448e..e8ad427eba 100644 --- a/arm_compute/runtime/CPP/CPPScheduler.h +++ b/arm_compute/runtime/CPP/CPPScheduler.h @@ -52,7 +52,7 @@ public: void set_num_threads_with_affinity(unsigned int num_threads, BindFunc func) override; unsigned int num_threads() const override; void schedule(ICPPKernel *kernel, const Hints &hints) override; - void schedule_op(ICPPKernel *kernel, const Hints &hints, const InputTensorMap &inputs, const OutputTensorMap &outputs) override; + void schedule_op(ICPPKernel *kernel, const Hints &hints, ITensorPack &tensors) override; protected: /** Will run the workloads in parallel using num_threads @@ -62,7 +62,7 @@ protected: void run_workloads(std::vector &workloads) override; private: - void schedule_common(ICPPKernel *kernel, const Hints &hints, const InputTensorMap &inputs, const OutputTensorMap &outputs); + void schedule_common(ICPPKernel *kernel, const Hints &hints, ITensorPack &tensors); struct Impl; std::unique_ptr _impl; }; diff --git a/arm_compute/runtime/IOperator.h b/arm_compute/runtime/IOperator.h index d72fca4399..e7952bb748 100644 --- a/arm_compute/runtime/IOperator.h +++ b/arm_compute/runtime/IOperator.h @@ -40,13 +40,10 @@ public: virtual ~IOperator() = default; /** Run the kernels contained in the function * - * - * @param[in] inputs Vector that contains the input tensors. - * @param[in] outputs Vector that contains the output tensors. - * @param[in] workspace Vector that contains the workspace tensors. + * @param[in] tensors Vector that contains the tensors to operate on. * */ - virtual void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) = 0; + virtual void run(ITensorPack &tensors) = 0; /** Prepare the function for executing * * Any one off pre-processing step required by the function is handled here @@ -55,7 +52,7 @@ public: * * @note Prepare stage might not need all the function's buffers' backing memory to be available in order to execute */ - virtual void prepare(OperatorTensorMap constants) = 0; + virtual void prepare(ITensorPack &constants) = 0; /** Return the memory requirements required by the workspace */ diff --git a/arm_compute/runtime/IScheduler.h b/arm_compute/runtime/IScheduler.h index fff77274bd..98627538e8 100644 --- a/arm_compute/runtime/IScheduler.h +++ b/arm_compute/runtime/IScheduler.h @@ -168,10 +168,9 @@ public: * * @param[in] kernel Kernel to execute. * @param[in] hints Hints for the scheduler. - * @param[in] inputs Vector containing the input tensors. - * @param[in] outputs Vector containing the output tensors. + * @param[in] tensors Vector containing the tensors to operate on. */ - virtual void schedule_op(ICPPKernel *kernel, const Hints &hints, const InputTensorMap &inputs, const OutputTensorMap &outputs) = 0; + virtual void schedule_op(ICPPKernel *kernel, const Hints &hints, ITensorPack &tensors) = 0; /** Execute all the passed workloads * diff --git a/arm_compute/runtime/NEON/INEOperator.h b/arm_compute/runtime/NEON/INEOperator.h index f91305543f..415e767eec 100644 --- a/arm_compute/runtime/NEON/INEOperator.h +++ b/arm_compute/runtime/NEON/INEOperator.h @@ -24,6 +24,7 @@ #ifndef ARM_COMPUTE_INEOPERATOR_H #define ARM_COMPUTE_INEOPERATOR_H +#include "../../core/ITensor.h" #include "arm_compute/core/NEON/INEKernel.h" #include "arm_compute/runtime/IOperator.h" #include "arm_compute/runtime/IRuntimeContext.h" @@ -54,8 +55,8 @@ public: INEOperator &operator=(INEOperator &&) = default; // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; - void prepare(OperatorTensorMap constants) override; + void run(ITensorPack &tensors) override; + void prepare(ITensorPack &constants) override; MemoryRequirements workspace() const override; protected: diff --git a/arm_compute/runtime/NEON/functions/NEConcatenateLayer.h b/arm_compute/runtime/NEON/functions/NEConcatenateLayer.h index 73c62330c5..1d703ae729 100644 --- a/arm_compute/runtime/NEON/functions/NEConcatenateLayer.h +++ b/arm_compute/runtime/NEON/functions/NEConcatenateLayer.h @@ -132,7 +132,7 @@ public: static Status validate(const std::vector &inputs_vector, const ITensorInfo *output, size_t axis); // Inherited methods overridden: - void run(InputTensorMap inputs, OutputTensorMap outputs, OperatorTensorMap workspace) override; + void run(ITensorPack &tensors) override; private: std::vector> _concat_kernels; diff --git a/arm_compute/runtime/OMP/OMPScheduler.h b/arm_compute/runtime/OMP/OMPScheduler.h index 56bd6baaa6..56a31cc076 100644 --- a/arm_compute/runtime/OMP/OMPScheduler.h +++ b/arm_compute/runtime/OMP/OMPScheduler.h @@ -63,10 +63,9 @@ public: * * @param[in] kernel Kernel to execute. * @param[in] hints Hints for the scheduler. - * @param[in] inputs Vector containing the input tensors. - * @param[in] outputs Vector containing the output tensors. + * @param[in] tensors Vector containing the tensors to operate on. */ - void schedule_op(ICPPKernel *kernel, const Hints &hints, const InputTensorMap &inputs, const OutputTensorMap &outputs) override; + void schedule_op(ICPPKernel *kernel, const Hints &hints, ITensorPack &tensors) override; protected: /** Execute all the passed workloads diff --git a/arm_compute/runtime/SingleThreadScheduler.h b/arm_compute/runtime/SingleThreadScheduler.h index 42fc742062..d45730e499 100644 --- a/arm_compute/runtime/SingleThreadScheduler.h +++ b/arm_compute/runtime/SingleThreadScheduler.h @@ -54,10 +54,9 @@ public: * * @param[in] kernel Kernel to execute. * @param[in] hints Hints for the scheduler. - * @param[in] inputs Vector containing the input tensors. - * @param[in] outputs Vector containing the output tensors. + * @param[in] tensors Vector containing the tensors to operate on. */ - void schedule_op(ICPPKernel *kernel, const Hints &hints, const InputTensorMap &inputs, const OutputTensorMap &outputs) override; + void schedule_op(ICPPKernel *kernel, const Hints &hints, ITensorPack &tensors) override; protected: /** Will run the workloads sequentially and in order. -- cgit v1.2.1