diff options
-rw-r--r-- | arm_compute/core/ITensorInfo.h | 16 | ||||
-rw-r--r-- | arm_compute/core/SubTensorInfo.h | 15 | ||||
-rw-r--r-- | arm_compute/core/TensorInfo.h | 14 | ||||
-rw-r--r-- | src/core/TensorInfo.cpp | 3 |
4 files changed, 41 insertions, 7 deletions
diff --git a/arm_compute/core/ITensorInfo.h b/arm_compute/core/ITensorInfo.h index f113445fb7..5aa243ecf8 100644 --- a/arm_compute/core/ITensorInfo.h +++ b/arm_compute/core/ITensorInfo.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -200,6 +200,11 @@ public: * @return True if the tensor size can be changed. */ virtual bool is_resizable() const = 0; + /** Flag indicating whether the shape of the tensor is dynamic, meaning that it can change on kernel/function execution. + * + * @return True if its dynamic else false + */ + virtual bool is_dynamic() const = 0; /** Set the flag whether the tensor size can be changed. * * @param[in] is_resizable Flag that marks the tensor if it can be changed or not. @@ -207,6 +212,13 @@ public: * @return Reference to this ITensorInfo object */ virtual ITensorInfo &set_is_resizable(bool is_resizable) = 0; + /** Set the flag whether the tensor size is dynamic. + * + * @param[in] is_dynamic Flag that marks the tensor if it's dynamic. + * + * @return Reference to this ITensorInfo object + */ + virtual ITensorInfo &set_is_dynamic(bool is_dynamic) = 0; /** Valid region of the tensor. All elements in the valid region have defined values, i.e. are not undefined. * * @return The valid region. @@ -274,5 +286,5 @@ public: return std::pair<TensorShape, ValidRegion>(bc_shape, bc_valid_region); } }; -} +} // namespace arm_compute #endif /*__ARM_COMPUTE_TENSORINFO_H__ */ diff --git a/arm_compute/core/SubTensorInfo.h b/arm_compute/core/SubTensorInfo.h index 681e27033e..3de31deb44 100644 --- a/arm_compute/core/SubTensorInfo.h +++ b/arm_compute/core/SubTensorInfo.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -186,12 +186,23 @@ public: ARM_COMPUTE_ERROR_ON(_parent == nullptr); return _parent->is_resizable(); } + bool is_dynamic() const override + { + ARM_COMPUTE_ERROR_ON(_parent == nullptr); + return _parent->is_dynamic(); + } ITensorInfo &set_is_resizable(bool is_resizable) override { ARM_COMPUTE_ERROR_ON(_parent == nullptr); _parent->set_is_resizable(is_resizable); return *this; } + ITensorInfo &set_is_dynamic(bool is_dynamic) override + { + ARM_COMPUTE_ERROR_ON(_parent == nullptr); + _parent->set_is_dynamic(is_dynamic); + return *this; + } ValidRegion valid_region() const override { return _valid_region; @@ -224,5 +235,5 @@ private: ValidRegion _valid_region; bool _extend_parent; }; -} +} // namespace arm_compute #endif /*__ARM_COMPUTE_SUBTENSORINFO_H__ */ diff --git a/arm_compute/core/TensorInfo.h b/arm_compute/core/TensorInfo.h index 1eaf052d8e..77913f52f9 100644 --- a/arm_compute/core/TensorInfo.h +++ b/arm_compute/core/TensorInfo.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2018 ARM Limited. + * Copyright (c) 2016-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -277,11 +277,20 @@ public: { return _is_resizable; } + bool is_dynamic() const override + { + return _is_dynamic; + } ITensorInfo &set_is_resizable(bool is_resizable) override { _is_resizable = is_resizable; return *this; } + ITensorInfo &set_is_dynamic(bool is_dynamic) override + { + _is_dynamic = is_dynamic; + return *this; + } ValidRegion valid_region() const override { return _valid_region; @@ -314,10 +323,11 @@ private: DataType _data_type; Format _format; bool _is_resizable; + bool _is_dynamic; ValidRegion _valid_region; PaddingSize _padding; QuantizationInfo _quantization_info; DataLayout _data_layout; }; -} +} // namespace arm_compute #endif /*__ARM_COMPUTE_TENSORINFO_H__ */ diff --git a/src/core/TensorInfo.cpp b/src/core/TensorInfo.cpp index 1059cf2497..33d682f772 100644 --- a/src/core/TensorInfo.cpp +++ b/src/core/TensorInfo.cpp @@ -33,7 +33,7 @@ using namespace arm_compute; TensorInfo::TensorInfo() - : _total_size(0), _offset_first_element_in_bytes(0), _strides_in_bytes(), _num_channels(0), _tensor_shape(), _data_type(DataType::UNKNOWN), _format(Format::UNKNOWN), _is_resizable{ true }, + : _total_size(0), _offset_first_element_in_bytes(0), _strides_in_bytes(), _num_channels(0), _tensor_shape(), _data_type(DataType::UNKNOWN), _format(Format::UNKNOWN), _is_resizable{ true }, _is_dynamic{ false }, _valid_region{ Coordinates(), _tensor_shape }, _padding{ 0 }, _quantization_info(), _data_layout(DataLayout::NCHW) { } @@ -49,6 +49,7 @@ TensorInfo::TensorInfo(const ITensorInfo &info) _data_type = info.data_type(); _format = info.format(); _is_resizable = info.is_resizable(); + _is_dynamic = info.is_dynamic(); _valid_region = info.valid_region(); _padding = info.padding(); _quantization_info = info.quantization_info(); |