diff options
Diffstat (limited to 'runtime/neurun/core/include')
137 files changed, 0 insertions, 9714 deletions
diff --git a/runtime/neurun/core/include/backend/Backend.h b/runtime/neurun/core/include/backend/Backend.h deleted file mode 100644 index 9c4484fca..000000000 --- a/runtime/neurun/core/include/backend/Backend.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_BACKEND_H__ -#define __NEURUN_BACKEND_BACKEND_H__ - -#include <memory> - -#include "ir/Operands.h" - -namespace neurun -{ -namespace backend -{ - -namespace custom -{ -class IKernelBuilder; -} - -class Backend; -struct IConfig; -class IConstantInitializer; -class IKernelGenerator; -class IShapeFixer; -class ITensorRegister; -struct ITensorBuilder; - -class BackendContext -{ -public: - const Backend *backend; - std::shared_ptr<ITensorBuilder> tensor_builder; - std::shared_ptr<IConstantInitializer> constant_initializer; - std::shared_ptr<IKernelGenerator> kernel_gen; - std::shared_ptr<IShapeFixer> shape_fixer; - std::shared_ptr<ITensorRegister> tensor_register; -}; - -class Backend -{ -public: - virtual ~Backend() = default; - virtual std::shared_ptr<neurun::backend::IConfig> config() const = 0; - - virtual std::unique_ptr<BackendContext> - newContext(const ir::Operands &operands, - const std::shared_ptr<backend::custom::IKernelBuilder> &kb) const = 0; -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_BACKEND_H__ diff --git a/runtime/neurun/core/include/backend/CustomKernelBuilder.h b/runtime/neurun/core/include/backend/CustomKernelBuilder.h deleted file mode 100644 index 848ebd595..000000000 --- a/runtime/neurun/core/include/backend/CustomKernelBuilder.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_CUSTOM_KERNEL_BUILDER_H__ -#define __NEURUN_BACKEND_CUSTOM_KERNEL_BUILDER_H__ - -#include "exec/IFunction.h" - -#include "misc/tensor/Shape.h" -#include "ir/DataType.h" - -#include <vector> -#include <memory> - -namespace neurun -{ -namespace backend -{ -namespace custom -{ - -using Shape = nnfw::misc::tensor::Shape; - -struct TypeInfo -{ - Shape shape; - ir::DataType dtype; -}; - -struct CustomKernelConfigParams -{ - std::vector<void *> input_allocations; - std::vector<TypeInfo> input_types; - - std::vector<void *> output_allocations; - std::vector<TypeInfo> output_types; - - char *userdata; - size_t userdata_size; -}; - -class IKernelBuilder -{ -public: - virtual ~IKernelBuilder() = default; - virtual std::unique_ptr<exec::IFunction> buildKernel(const std::string &id, - CustomKernelConfigParams &¶ms) const = 0; -}; - -} // namespace custom - -} // namespace backend - -} // namespace neurun - -#endif // __NEURUN_BACKEND_CUSTOM_KERNEL_BUILDER_H__ diff --git a/runtime/neurun/core/include/backend/ExecTime.h b/runtime/neurun/core/include/backend/ExecTime.h deleted file mode 100644 index 4eaf49fab..000000000 --- a/runtime/neurun/core/include/backend/ExecTime.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_EXEC_TIME_H__ -#define __NEURUN_BACKEND_EXEC_TIME_H__ - -#include "backend/Backend.h" -#include "backend/IConfig.h" -#include "JSONExecTime.h" -#include <memory> -#include <limits> -#include <map> -#include <unordered_map> -#include <vector> - -namespace neurun -{ -namespace backend -{ -class ExecTime -{ -public: - explicit ExecTime(const std::vector<const Backend *> &backends) : _json(backends, _measurements) - { - } - -public: - /** - * @brief Get exec time of an operation with input size - * or linearly interpolated value based on size if there is no record for given size - * - * @param[in] backend id of a backend - * @param[in] operation name of an operation - * @param[in] quant if input type quantized - * @param[in] op_size sum of operation's flattened sizes of inputs and outputs - * @return execution time for given input sizes - * -1 if there are no records for given parameters (backend, op, quantization). - */ - int64_t getOperationExecTime(const Backend *backend, const std::string &operation, bool quant, - uint32_t op_size) const; - /** - * @brief Update exec time of the operation on a backend with given input size or - * add new entity if there is no one. - * - * @param[in] backend id of a backend - * @param[in] operation name of an operation - * @param[in] quant if input type quantized - * @param[in] op_size sum of operation's flattened sizes of inputs and outputs - * @param[in] time real measured value - */ - void updateOperationExecTime(const Backend *backend, const std::string &operation, bool quant, - uint32_t op_size, int64_t time); - /** - * @brief Get the permute time from one backend to another - * - * @param[in] from_backend - * @param[in] to_backend - * @param[in] quant if input type quantized - * @param[in] op_size sum of operation's flattened sizes of inputs and outputs - * @return permutation time for operation size - */ - int64_t getPermuteTime(const Backend *from_backend, const Backend *to_backend, bool quant, - uint32_t op_size) const; - /** - * @brief Update permute time from one backend to another - * - * @param[in] from_backend - * @param[in] to_backend - * @param[in] quant if input type quantized - * @param[in] time measured permutation time - * @param[in] op_size sum of operation's flattened sizes of inputs and outputs - */ - void updatePermuteTime(const Backend *from_backend, const Backend *to_backend, bool quant, - uint32_t op_size, int64_t time); - /** - * @brief Get the max value of int32_t in int64_t - * @return max value - */ - static int64_t getMax() { return _MAX; } - /** - * @brief Update metrics file with new data. - */ - void uploadOperationsExecTime() const { _json.uploadOperationsExecTime(); } - static const int64_t NOT_FOUND = -1; - -private: - /// @brief Measurement data, which is shared with serializer - MeasurementData _measurements; - // int64_t::max may cause integer overflow - static const int64_t _MAX = std::numeric_limits<int32_t>::max(); - /// @brief Serializer - JSON _json; -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_EXEC_TIME_H__ diff --git a/runtime/neurun/core/include/backend/IConfig.h b/runtime/neurun/core/include/backend/IConfig.h deleted file mode 100644 index 855f31ef9..000000000 --- a/runtime/neurun/core/include/backend/IConfig.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_ICONFIG_H__ -#define __NEURUN_BACKEND_ICONFIG_H__ - -#include "util/ITimer.h" -#include <memory> -#include <string> - -namespace neurun -{ -namespace backend -{ - -struct IConfig -{ - virtual ~IConfig() = default; - - virtual std::string id() = 0; - virtual bool initialize() = 0; - // Support permute kernel - virtual bool SupportPermutation() = 0; - // Support subtensor allocation - virtual bool SupportSubTensorAlloc() = 0; - - // Timer is used for backend profiling. In case of default (nullptr) timer profiler won't work. - virtual std::unique_ptr<util::ITimer> timer() { return nullptr; } -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_ICONFIG_H__ diff --git a/runtime/neurun/core/include/backend/IConstantInitializer.h b/runtime/neurun/core/include/backend/IConstantInitializer.h deleted file mode 100644 index 3cc770b29..000000000 --- a/runtime/neurun/core/include/backend/IConstantInitializer.h +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_ICONSTANT_INITIALIZER_H__ -#define __NEURUN_BACKEND_ICONSTANT_INITIALIZER_H__ - -#include <unordered_map> -#include <functional> - -#include "ITensorBuilder.h" -#include "ir/Layout.h" -#include "ir/Operand.h" -#include "ir/Operands.h" -#include "ir/OperationVisitor.h" -#include "ir/OpSequence.h" -#include "util/logging.h" -#include "util/Utils.h" - -namespace -{ -template <typename T> -static void Init(const neurun::ir::Operand &model_obj, neurun::backend::operand::ITensor &obj, - const bool copy, - const neurun::ir::Layout frontend_layout = neurun::ir::Layout::UNKNOWN) -{ - const auto shape = model_obj.shape(); - auto base = reinterpret_cast<const T *>(model_obj.data().base()); - - obj.access([&](::neurun::backend::operand::ITensor &tensor) { - switch (shape.rank()) - { - case 0: - { - assert(model_obj.data().size() == sizeof(T)); - const auto value = *reinterpret_cast<const T *>(base); - T *into = reinterpret_cast<T *>(tensor.buffer()); - *into = value; - break; - } - case 1: - { - auto vec_size = shape.dim(0); - for (int32_t n = 0; n < vec_size; ++n) - { - const T *from = reinterpret_cast<const T *>(base) + n; - const auto value = *from; - - T *into = reinterpret_cast<T *>(tensor.buffer()) + n; - - *into = value; - } - break; - } - case 2: - { - const int32_t copy_len = shape.dim(1); - - for (auto i = 0; i < shape.dim(0); ++i) - { - neurun::util::Coordinates coords{i, 0}; - memcpy(tensor.buffer() + tensor.calcOffset(coords), base + i * copy_len, - copy_len * sizeof(T)); - } - break; - } - case 3: - { - const int32_t width = shape.dim(1); - const int32_t copy_len = shape.dim(2); - - for (auto i = 0; i < shape.dim(0); ++i) - { - for (auto j = 0; j < shape.dim(1); ++j) - { - neurun::util::Coordinates coords{i, j, 0}; - memcpy(tensor.buffer() + tensor.calcOffset(coords), - base + i * width * copy_len + j * copy_len, copy_len * sizeof(T)); - } - } - break; - } - case 4: - { - const int32_t height = shape.dim(1); - const int32_t width = shape.dim(2); - const int32_t copy_len = shape.dim(3); - for (auto i = 0; i < shape.dim(0); ++i) - { - for (auto j = 0; j < shape.dim(1); ++j) - { - for (auto k = 0; k < shape.dim(2); ++k) - { - if (copy) - { - neurun::util::Coordinates coords{i, j, k, 0}; - memcpy(tensor.buffer() + tensor.calcOffset(coords), - base + i * height * width * copy_len + j * width * copy_len + k * copy_len, - copy_len * sizeof(T)); - } - else - { - for (auto l = 0; l < shape.dim(3); ++l) - { - const auto coords = neurun::util::convertCoordinates( - {i, j, k, l}, frontend_layout, tensor.layout()); - T *into = reinterpret_cast<T *>(tensor.buffer() + tensor.calcOffset(coords)); - T value = *(base + i * height * width * copy_len + j * width * copy_len + - k * copy_len + l); - *into = value; - } - } - } - } - } - break; - } - default: - throw std::runtime_error{"Not yet supported"}; - } - }); -} - -template <typename T> -void copyInit(const neurun::ir::Operand &model_obj, neurun::backend::operand::ITensor &obj) -{ - Init<T>(model_obj, obj, true); -} - -template <typename T> -void permuteInit(const neurun::ir::Operand &model_obj, neurun::backend::operand::ITensor &obj, - const neurun::ir::Layout frontend_layout) -{ - const bool copy = frontend_layout == obj.layout(); - Init<T>(model_obj, obj, copy, frontend_layout); -} - -} // namespace - -namespace neurun -{ -namespace backend -{ - -class IConstantInitializer : ir::OperationVisitor -{ -public: - virtual ~IConstantInitializer() = default; - -public: - void run() - { - assert(tensor_builder().get()); - for (const auto &it : _init_map) - { - const auto &ind = it.first; - const auto &fn = it.second; - - const auto &model_obj = operands().at(ind); - auto tensor_obj = tensor_builder()->tensorAt(ind); - fn(model_obj, *tensor_obj); - VERBOSE(FillOperandData) << "Fill data for operand " << ind.value() << std::endl; - } - _init_map.clear(); - } - -public: - using Initializer = std::function<void(const ir::Operand &, backend::operand::ITensor &)>; - - void generate(const ir::OpSequence &subg, const ir::Operands &operands) - { - _current_subg_layout = subg.getLayout(); - subg.accept(*this); - for (const auto &e : subg.operations()) - { - for (const auto &ind : e.node->getInputs()) - { - const auto &obj = operands.at(ind); - if (obj.isConstant() && !exist(ind)) - { - registerPermuteInitializer(ind, obj); - } - } - } - } - -protected: - using OperationVisitor::visit; - -protected: - virtual const ir::Operands &operands() const = 0; - virtual std::shared_ptr<ITensorBuilder> tensor_builder() const = 0; - -protected: - void registerCopyInitializer(const ir::OperandIndex &index, const ir::Operand &obj) - { - // For only CONSTANTS - // TODO Add to check if tensor has been allocated - if (!obj.isConstant()) - return; - - const auto type = obj.typeInfo().type(); - using ir::DataType; - - switch (type) - { - case DataType::FLOAT32: - _init_map[index] = copyInit<float>; - break; - case DataType::INT32: - _init_map[index] = copyInit<int32_t>; - break; - case DataType::UINT32: - _init_map[index] = copyInit<uint32_t>; - break; - case DataType::BOOL8: - case DataType::QUANT8_ASYMM: - _init_map[index] = copyInit<uint8_t>; - break; - case DataType::QUANT8_SYMM: - _init_map[index] = copyInit<int8_t>; - break; - default: - throw std::runtime_error("Not supported, yet"); - break; - } - } - -protected: - void registerPermuteInitializer(const ir::OperandIndex &index, const ir::Operand &obj) - { - // For only CONSTANTS - // TODO Add to check if tensor has been allocated - if (!obj.isConstant()) - return; - - const auto type = obj.typeInfo().type(); - using ir::DataType; - using namespace std::placeholders; - - switch (type) - { - case DataType::FLOAT32: - _init_map[index] = std::bind(permuteInit<float>, _1, _2, _current_subg_layout); - break; - case DataType::INT32: - _init_map[index] = std::bind(permuteInit<int32_t>, _1, _2, _current_subg_layout); - break; - case DataType::UINT32: - _init_map[index] = std::bind(permuteInit<uint32_t>, _1, _2, _current_subg_layout); - break; - case DataType::BOOL8: - case DataType::QUANT8_ASYMM: - _init_map[index] = std::bind(permuteInit<uint8_t>, _1, _2, _current_subg_layout); - break; - case DataType::QUANT8_SYMM: - _init_map[index] = std::bind(permuteInit<int8_t>, _1, _2, _current_subg_layout); - break; - default: - throw std::runtime_error("Not supported, yet"); - break; - } - } - -private: - bool exist(const ir::OperandIndex &ind) { return _init_map.find(ind) != _init_map.end(); } - -protected: - std::unordered_map<ir::OperandIndex, Initializer> _init_map; - ir::Layout _current_subg_layout; -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_ICONSTANT_INITIALIZER_H__ diff --git a/runtime/neurun/core/include/backend/IKernelGenerator.h b/runtime/neurun/core/include/backend/IKernelGenerator.h deleted file mode 100644 index 4540e81d2..000000000 --- a/runtime/neurun/core/include/backend/IKernelGenerator.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_IKERNEL_GENERATOR_H__ -#define __NEURUN_BACKEND_IKERNEL_GENERATOR_H__ - -#include <memory> -#include <functional> - -#include "ITensorBuilder.h" -#include "compiler/IExecutionBuilder.h" -#include "ir/OperationVisitor.h" -#include "ir/OpSequence.h" -#include "cpp14/memory.h" - -namespace neurun -{ -namespace backend -{ - -class IKernelGenerator : public ir::OperationVisitor -{ -public: - virtual ~IKernelGenerator() = default; - - void generate(const ir::OpSequence &subg, neurun::compiler::IExecutionBuilder *executionBuilder) - { - _execution_builder = executionBuilder; - subg.accept(*this); - } - -protected: - using OperationVisitor::visit; - -#define OP(InternalName) \ - void visit(const ir::operation::InternalName &) override \ - { \ - throw std::runtime_error("KernelGenerator: NYI for operation '" #InternalName "'"); \ - } -#include "ir/Operations.lst" -#undef OP - -protected: - neurun::compiler::IExecutionBuilder *_execution_builder; -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_IKERNEL_GENERATOR_H__ diff --git a/runtime/neurun/core/include/backend/IMemoryManager.h b/runtime/neurun/core/include/backend/IMemoryManager.h deleted file mode 100644 index b06bab872..000000000 --- a/runtime/neurun/core/include/backend/IMemoryManager.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_IMEMORY_MANAGER_H__ -#define __NEURUN_BACKEND_IMEMORY_MANAGER_H__ - -namespace neurun -{ -namespace backend -{ - -struct IMemoryManager -{ - virtual ~IMemoryManager() = default; - - virtual void allocate(void) = 0; - virtual void deallocate(void) = 0; -}; - -} // namespace backend -} // namespace neurun - -#include <unordered_set> -#include <memory> - -namespace neurun -{ -namespace backend -{ - -using MemoryManagerSet = std::unordered_set<std::unique_ptr<backend::IMemoryManager>>; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_IMEMORY_MANAGER_H__ diff --git a/runtime/neurun/core/include/backend/IShapeFixer.h b/runtime/neurun/core/include/backend/IShapeFixer.h deleted file mode 100644 index 8168e2a11..000000000 --- a/runtime/neurun/core/include/backend/IShapeFixer.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_ISHAPE_FIXER_H__ -#define __NEURUN_BACKEND_ISHAPE_FIXER_H__ - -#include <memory> -#include <functional> - -#include "ir/LowerInfoMap.h" -#include "ITensorBuilder.h" -#include "ir/OperationVisitor.h" -#include "ir/OpSequence.h" -#include "cpp14/memory.h" - -namespace neurun -{ -namespace backend -{ - -class IShapeFixer : public ir::OperationVisitor -{ -public: - virtual ~IShapeFixer() = default; - -protected: -#define OP(InternalName) \ - void visit(const ir::operation::InternalName &) override \ - { \ - throw std::runtime_error("ShapeFixer: NYI for operation '" #InternalName "'"); \ - } -#include "ir/Operations.lst" -#undef OP - -public: - void fix(const ir::OpSequence &op_seq) { op_seq.accept(*this); }; -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_ISHAPE_FIXER_H__ diff --git a/runtime/neurun/core/include/backend/ITensorBuilder.h b/runtime/neurun/core/include/backend/ITensorBuilder.h deleted file mode 100644 index 5eb4ab2d8..000000000 --- a/runtime/neurun/core/include/backend/ITensorBuilder.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_ITENSOR_BUILDER_H__ -#define __NEURUN_BACKEND_ITENSOR_BUILDER_H__ - -#include <map> - -#include "ir/Index.h" -#include "ir/OperandInfo.h" -#include "ir/Operation.h" -#include "ir/Layout.h" -#include "operand/ITensor.h" -#include "compiler/SubTensorInfo.h" -#include "ITensorManager.h" - -namespace neurun -{ -namespace backend -{ - -struct ITensorBuilder -{ - using IterateFunction = std::function<void(const ir::OperandIndex &)>; - - virtual ~ITensorBuilder(void) = default; - - // TODO Merge registerTensorInfo and registerSubTensorInfo using abstraction by internal class - /** - * @brief Register tensor information to allocate on backend - */ - virtual void registerTensorInfo(const ir::OperandIndex &, const ir::OperandInfo &, - ir::Layout backend_layout, bool as_const) = 0; - /** - * @brief Register subtensor information to allocate on backend - */ - virtual void registerSubTensorInfo(const ir::OperandIndex &, const compiler::SubTensorInfo &) = 0; - - virtual void notifyFirstUse(const ir::OperandIndex &) = 0; - virtual void notifyLastUse(const ir::OperandIndex &) = 0; - - virtual bool isRegistered(const ir::OperandIndex &) const = 0; - - virtual void prepare(void) = 0; - virtual void allocateConsts() = 0; - virtual void allocateNonconsts() = 0; - virtual void postFunctionPrepare() = 0; - virtual void finalize() = 0; - - virtual std::shared_ptr<::neurun::backend::operand::ITensor> - tensorAt(const ir::OperandIndex &ind) = 0; - virtual void iterate(const IterateFunction &fn) = 0; - - virtual void preVisit(const ir::Operation &) = 0; - virtual void postVisit(const ir::Operation &) = 0; - - virtual std::unique_ptr<ITensorManager> releaseTensorManager(void) = 0; -}; - -} // namespace backend -} // namespace neurun - -#include <unordered_set> -#include <memory> - -namespace neurun -{ -namespace backend -{ - -using TensorBuilderSet = std::unordered_set<std::shared_ptr<backend::ITensorBuilder>>; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_ITENSOR_BUILDER_H__ diff --git a/runtime/neurun/core/include/backend/ITensorManager.h b/runtime/neurun/core/include/backend/ITensorManager.h deleted file mode 100644 index 74506ef59..000000000 --- a/runtime/neurun/core/include/backend/ITensorManager.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_ITENSOR_MANAGER_H__ -#define __NEURUN_BACKEND_ITENSOR_MANAGER_H__ - -namespace neurun -{ -namespace backend -{ - -// NOTE This name ITensorManager has been discussed whether or not the name is proper. -// Anyone can argue with any better name. -/** - * @brief Interface as an abstract tensor manager which has MemoryManager - */ -struct ITensorManager -{ - virtual ~ITensorManager() = default; - - virtual void allocateConsts(void) = 0; - virtual void allocateNonconsts(void) = 0; - virtual void deallocateConsts(void) = 0; - virtual void deallocateNonconsts(void) = 0; -}; - -} // namespace backend -} // namespace neurun - -#include <unordered_set> -#include <memory> - -namespace neurun -{ -namespace backend -{ - -using TensorManagerSet = std::unordered_set<std::unique_ptr<backend::ITensorManager>>; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_ITENSOR_MANAGER_H__ diff --git a/runtime/neurun/core/include/backend/ITensorRegister.h b/runtime/neurun/core/include/backend/ITensorRegister.h deleted file mode 100644 index 9e554ab77..000000000 --- a/runtime/neurun/core/include/backend/ITensorRegister.h +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_ITENSOR_REGISTER_H__ -#define __NEURUN_BACKEND_ITENSOR_REGISTER_H__ - -#include "compiler/SubTensorInfo.h" -#include "ir/LowerInfoMap.h" -#include "ir/operand/ParentInfo.h" -#include "ITensorBuilder.h" -#include "ir/Layout.h" -#include "ir/OperandIndexSequence.h" -#include "ir/OperandInfo.h" -#include "ir/Operands.h" -#include "ir/OperationVisitor.h" - -namespace -{ - -neurun::ir::Shape permuteTensorShape(const neurun::ir::Shape &shape, - neurun::ir::Layout frontend_layout, - neurun::ir::Layout backend_layout) -{ - assert(shape.rank() <= 4); - neurun::ir::Shape backend_shape{shape}; - if (shape.rank() == 4 && frontend_layout == neurun::ir::Layout::NHWC && - backend_layout == neurun::ir::Layout::NCHW) - { - backend_shape.dim(1) = shape.dim(3); - backend_shape.dim(2) = shape.dim(1); - backend_shape.dim(3) = shape.dim(2); - } - else if (shape.rank() == 4 && frontend_layout == neurun::ir::Layout::NCHW && - backend_layout == neurun::ir::Layout::NHWC) - { - backend_shape.dim(1) = shape.dim(2); - backend_shape.dim(2) = shape.dim(3); - backend_shape.dim(3) = shape.dim(1); - } - return backend_shape; -} -} // namespace - -namespace neurun -{ -namespace backend -{ - -class ITensorRegister : public ir::OperationVisitor -{ -public: - virtual ~ITensorRegister() = default; - -public: - void registerTensors(const ir::OpSequence &subg, const ir::LowerInfoMap *lower_info_map) - { - _current_subg_layout = subg.getLayout(); - _lower_info_map = lower_info_map; - assert(_lower_info_map != nullptr); - assert(tensor_builder().get() != nullptr); - subg.accept(*this); - } - -protected: - virtual const ir::Operands &operands() const = 0; - virtual std::shared_ptr<ITensorBuilder> tensor_builder() const = 0; - virtual bool supportSubTensor() const = 0; - -protected: -#define OP(InternalName) \ - void visit(const ir::operation::InternalName &node) override \ - { \ - ir::OperandIndexSequence indices{node.getInputs()}; \ - indices.append(node.getOutputs()); \ - for (const auto &index : indices) \ - { \ - defaultRegisterTensorInfo(index); \ - } \ - } -#include "ir/Operations.lst" -#undef OP - -protected: - void defaultRegisterTensorInfo(const ir::OperandIndex &index) const - { - if (tensor_builder()->isRegistered(index)) - { - return; - } - - const auto &obj = operands().at(index); - const auto frontend_layout = frontendLayout(); - const auto backend_layout = backendLayout(index); - if (supportSubTensor() && obj.parent_info() != nullptr) - { - tensor_builder()->registerSubTensorInfo( - index, generateSubTensorInfo(obj, frontend_layout, backend_layout)); - } - else - { - ir::OperandInfo backend_info{permuteTensorShape(obj.shape(), frontend_layout, backend_layout), - obj.typeInfo()}; - tensor_builder()->registerTensorInfo(index, backend_info, backend_layout, obj.isConstant()); - } - } - -protected: - ir::Layout frontendLayout() const { return _current_subg_layout; } - ir::Layout backendLayout(const ir::OperandIndex &index) const - { - assert(_lower_info_map != nullptr); - const auto lower_info = _lower_info_map->operand.at(index).get(); - return lower_info->def_factors().getOnlyElement().layout(); - } - -private: - compiler::SubTensorInfo generateSubTensorInfo(const ir::Operand &obj, ir::Layout frontend_layout, - ir::Layout backend_layout) const - { - assert(obj.shape().rank() <= 4); - const auto parent_index = obj.parent_info()->parent(); - auto shape = obj.shape(); - auto offset = obj.parent_info()->offset(); - if (operands().at(parent_index).shape().rank() == 4 && frontend_layout == ir::Layout::NHWC && - backend_layout == ir::Layout::NCHW) - { - shape.extendRank(4); - offset = {offset[0], offset[3], offset[1], offset[2]}; - } - else if (operands().at(parent_index).shape().rank() == 4 && - frontend_layout == ir::Layout::NHWC && backend_layout == ir::Layout::NCHW) - { - shape.extendRank(4); - offset = {offset[0], offset[2], offset[3], offset[1]}; - } - ir::Operand subtensor_obj{permuteTensorShape(shape, frontend_layout, backend_layout), - obj.typeInfo()}; - subtensor_obj.parent_info( - nnfw::cpp14::make_unique<ir::operand::ParentInfo>(parent_index, offset)); - return compiler::SubTensorInfo{subtensor_obj}; - } - -private: - ir::Layout _current_subg_layout; - const ir::LowerInfoMap *_lower_info_map{nullptr}; -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_ITENSOR_REGISTER_H__ diff --git a/runtime/neurun/core/include/backend/JSONExecTime.h b/runtime/neurun/core/include/backend/JSONExecTime.h deleted file mode 100644 index 84505e10f..000000000 --- a/runtime/neurun/core/include/backend/JSONExecTime.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_JSON_EXEC_TIME_H__ -#define __NEURUN_BACKEND_JSON_EXEC_TIME_H__ - -#include <fstream> -#include <unordered_map> -#include <map> -#include <vector> -#include "backend/Backend.h" -#include "backend/IConfig.h" - -namespace neurun -{ -namespace backend -{ - -/** - * @brief table, that contains execution time of an operation on some backend for different input - * sizes and transfer time from one backend to another for various input sizes (permutation time) - * - * backend -> op -> quant-> size --> time - * _measurements[Backend*]["string"][bool][uint32_t] = int64_t - */ -using MeasurementData = std::unordered_map< - const Backend *, - std::unordered_map<std::string, std::unordered_map<bool, std::map<uint32_t, int64_t>>>>; - -class JSON -{ -public: - explicit JSON(const std::vector<const Backend *> &backends, MeasurementData &measurements) - : _measurement_file("exec_time.json"), _backends(), _measurements(measurements) - { - for (const auto b : backends) - { - _backends.emplace(b->config()->id(), b); - } - loadOperationsExecTime(); - }; - /** - * @brief Update _operations_exec_time_file with new data. - */ - void uploadOperationsExecTime() const; - -private: - ///@brief file containing measurements - std::string _measurement_file; - std::unordered_map<std::string, const Backend *> _backends; - std::unordered_map< - const Backend *, - std::unordered_map<std::string, std::unordered_map<bool, std::map<uint32_t, int64_t>>>> - &_measurements; - /** - * @brief Helper function for inserting data to OperationExecTimes - * - * @param backend String name of backend - * @param operation String name of operation - * @param quant if input type quantized - * @param stream File stream - */ - void readOperation(const std::string &backend, const std::string &operation, bool quant, - std::ifstream &stream); - - /** - * @brief Helper function for writing OperationExecTimes to stream - * - * @param operation_info Map of operations execution information - * @param stream File stream - */ - void printOperation(const std::map<uint32_t, int64_t> &operation_info, - std::ofstream &stream) const; - /** - * @brief Parse and load operations_exec_time from _operations_exec_time_file. - */ - void loadOperationsExecTime(); -}; - -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_JSON_EXEC_TIME_H__ diff --git a/runtime/neurun/core/include/backend/operand/ITensor.h b/runtime/neurun/core/include/backend/operand/ITensor.h deleted file mode 100644 index c278b01a0..000000000 --- a/runtime/neurun/core/include/backend/operand/ITensor.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_BACKEND_OPERAND_I_TENSOR_H__ -#define __NEURUN_BACKEND_OPERAND_I_TENSOR_H__ - -#include <cstring> -#include <cstdint> -#include <functional> - -#include "ir/Layout.h" -#include "util/Coordinates.h" - -namespace neurun -{ -namespace backend -{ -namespace operand -{ - -class ITensor -{ -public: - virtual ~ITensor() = default; - -public: - virtual uint8_t *buffer() const = 0; - virtual size_t total_size() const = 0; - virtual size_t dimension(size_t index) const = 0; - virtual size_t num_dimensions() const = 0; - virtual size_t calcOffset(const neurun::util::Coordinates &coords) const = 0; - virtual ir::Layout layout() const = 0; - virtual bool has_padding() const = 0; - virtual void access(const std::function<void(ITensor &tensor)> &fn) = 0; -}; - -} // namespace operand -} // namespace backend -} // namespace neurun - -#endif // __NEURUN_BACKEND_OPERAND_I_TENSOR_H__ diff --git a/runtime/neurun/core/include/compiler/Compiler.h b/runtime/neurun/core/include/compiler/Compiler.h deleted file mode 100644 index 797fc77ad..000000000 --- a/runtime/neurun/core/include/compiler/Compiler.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file Compiler.h - * @brief This file contains Compiler class to define and run compilation phase - */ - -#ifndef __NEURUN_COMPILER_COMPILE_H_ -#define __NEURUN_COMPILER_COMPILE_H_ - -#include "ir/Graph.h" -#include "exec/IExecutor.h" - -namespace neurun -{ - -namespace compiler -{ - -enum class State -{ - CREATED, // Before compilation - STARTED, // Compile is started - LOWERED, // Backend is decided - COMPILED // Success compilation -}; - -/** - * @brief Class to compile graph model - */ -class Compiler -{ -public: - /** - * @brief Construct a new Compiler object - * @param[in] model Graph model - */ - Compiler(const std::shared_ptr<ir::Graph> &graph) - : _graph{graph}, _executor{nullptr}, _state{State::CREATED} - { - // DO NOTHING - } - -public: - /** - * @brief Run compilation. Compilation result will be saved in _plan - */ - void compile(void); - /** - * @brief Pass plan reference - * @param[out] plan Plan reference to return\n - * Set nullptr if compile is not run yet - */ - void release(std::shared_ptr<exec::IExecutor> &executor) { executor = _executor; } - - void state(State state) { _state = state; } - State state(void) const { return _state; } - - /** - * @brief Check if model can compile - * @return @c true if model can compile, otherwise @c false - * @note This method don't check model correctness,\n - * so model verification should be done before calling this method - */ - bool checkCompilable(); - -private: - std::shared_ptr<ir::Graph> _graph; - std::shared_ptr<exec::IExecutor> _executor; - State _state; -}; - -} // namespace compiler - -} // namespace neurun - -#endif // __NEURUN_COMPILER_COMPILE_H_ diff --git a/runtime/neurun/core/include/compiler/IExecutionBuilder.h b/runtime/neurun/core/include/compiler/IExecutionBuilder.h deleted file mode 100644 index c5a06fec0..000000000 --- a/runtime/neurun/core/include/compiler/IExecutionBuilder.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_COMPILER_I_EXECUTION_BUILDER_H__ -#define __NEURUN_COMPILER_I_EXECUTION_BUILDER_H__ - -#include <memory> - -#include "exec/IFunction.h" - -namespace neurun -{ -namespace compiler -{ - -struct IExecutionBuilder -{ - virtual ~IExecutionBuilder() = default; - - virtual void append(std::unique_ptr<::neurun::exec::IFunction> &&f) = 0; -}; - -} // namespace compiler -} // namespace neurun - -#endif // __NEURUN_COMPILER_I_EXECUTION_BUILDER_H__ diff --git a/runtime/neurun/core/include/compiler/SubTensorInfo.h b/runtime/neurun/core/include/compiler/SubTensorInfo.h deleted file mode 100644 index 18cab466b..000000000 --- a/runtime/neurun/core/include/compiler/SubTensorInfo.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file SubTensorInfo.h - * @brief This file contains SubTensorInfo to represent subsumption between tensors - * for backend tensor allocation - */ -#ifndef __NEURUN_COMPILER_SUBTENSOR_INFO_H__ -#define __NEURUN_COMPILER_SUBTENSOR_INFO_H__ - -#include "ir/Operand.h" - -namespace neurun -{ -namespace compiler -{ - -/** - * @brief Class to represent information of subtensor - */ -class SubTensorInfo -{ -public: - SubTensorInfo() = delete; - - /** - * @brief Construct a new SubTensorInfo object - * @param[in] obj SubTensor object - */ - SubTensorInfo(const ir::Operand &obj) - : _parent{obj.parent_info()->parent()}, _shape{obj.shape()}, _type{obj.typeInfo()}, - _offset{obj.parent_info()->offset()} - { - // DO NOTHING - } - -public: - /** - * @brief Return parent tensor index - * @return Parent tensor index - */ - const ir::OperandIndex parent(void) const { return _parent; } - /** - * @brief Return tensor shape - * @return Tensor shape - */ - const ir::Shape &shape(void) const { return _shape; } - /** - * @brief Return tensor type - * @return Tensor type - */ - const ir::TypeInfo &type(void) const { return _type; } - /** - * @brief Return tensor's offset in parent tensor - * @return Tensor offset - */ - const neurun::util::Coordinates offset(void) const { return _offset; } - -private: - const ir::OperandIndex _parent; - const ir::Shape _shape; - const ir::TypeInfo _type; - const neurun::util::Coordinates _offset; -}; - -} // compiler -} // neurun - -#endif // __NEURUN_COMPILER_SUBTENSOR_INFO_H__ diff --git a/runtime/neurun/core/include/exec/Execution.h b/runtime/neurun/core/include/exec/Execution.h deleted file mode 100644 index 7304f8aab..000000000 --- a/runtime/neurun/core/include/exec/Execution.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file Execution.h - * @brief This file defines execution - */ -#ifndef __NEURUN_EXEC_EXECUTION_H__ -#define __NEURUN_EXEC_EXECUTION_H__ - -#include "ir/Layout.h" -#include "exec/IExecutor.h" -#include "IODescription.h" - -#include <thread> - -namespace neurun -{ -namespace exec -{ - -/** - * @brief Class to define execution instance to collect input/output information for inference - * and prepare executor run (TODO) - */ -class Execution -{ - -public: - /** - * @brief Construct a new Execution object - * @param[in] executor Model executor - */ - Execution(const std::shared_ptr<IExecutor> &executor); - -public: - /** - * @brief Returns graph object - * @return Graph object - */ - const ir::Graph &graph() const { return _executor->graph(); } - /** - * @brief Set input data's information - * @param[in] index Input index - * @param[in] buffer Input data's buffer pointer - * @param[in] length Input data's length - * @param[in] layout Input data's data format - */ - void setInput(const ir::IOIndex &index, const void *buffer, size_t length, - ir::Layout layout = ir::Layout::NHWC); - /** - * @brief Set input data's information, especially to specify unknown dimensions on model - * build time. - * @param[in] index Input index - * @param[in] type Input data's type info - * @param[in] shape Input data's shape - * @param[in] buffer Input data's buffer pointer - * @param[in] length Input data's length - * @param[in] layout Input data's data format - */ - void setInput(const ir::IOIndex &index, const ir::TypeInfo &type, const ir::Shape &shape, - const void *buffer, size_t length, ir::Layout layout = ir::Layout::NHWC); - /** - * @brief Set output data's information - * @param[in] index Output index - * @param[in] buffer Output data's buffer pointer - * @param[in] length Output data's length - * @param[in] layout Output data's data format - */ - void setOutput(const ir::IOIndex &index, void *buffer, size_t length, - ir::Layout layout = ir::Layout::NHWC); - /** - * @brief Set output data's information, especially to specify unknown dimensions on model - * build time. - * @param[in] index Output index - * @param[in] type Output data's type info - * @param[in] shape Output data's shape - * @param[in] buffer Output data's buffer pointer - * @param[in] length Output data's length - * @param[in] layout Output data's data format - */ - void setOutput(const ir::IOIndex &index, const ir::TypeInfo &type, const ir::Shape &shape, - void *buffer, size_t length, ir::Layout layout = ir::Layout::NHWC); - /** - * @brief Set input data's data format - * @param[in] index Input index - * @param[in] layout Input data's data format - */ - void setInputLayout(const ir::IOIndex &index, ir::Layout layout); - /** - * @brief Set output data's data format - * @param[in] index Output index - * @param[in] layout Output data's data format - */ - void setOutputLayout(const ir::IOIndex &index, ir::Layout layout); - /** - * @brief Execution - * @note It should be called after setting input and output buffer - */ - void execute(); - - /** - * @brief Start asynchronous execution - * @note It returns after execution thread is started - * It should be called after setting input and output buffer - */ - void startExecute(void); - - /** - * @brief Return when execution is finished - * @note It waits until execution is finished - */ - void waitFinish(void); - - /** - * @brief Check execution is finished - * @return @c true if execution is finished, otherwise @c false - */ - bool isFinished(void) const; - -private: - const std::shared_ptr<IExecutor> _executor; - IODescription _io_desc; - std::unique_ptr<std::thread> _exec_thread; - bool finished{false}; -}; - -} // namespace exec -} // namespace neurun - -#endif // __NEURUN_EXEC_EXECUTION_H__ diff --git a/runtime/neurun/core/include/exec/ExecutionObservers.h b/runtime/neurun/core/include/exec/ExecutionObservers.h deleted file mode 100644 index ca658c706..000000000 --- a/runtime/neurun/core/include/exec/ExecutionObservers.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_EXEC_OBSREVERS_H__ -#define __NEURUN_EXEC_OBSREVERS_H__ - -#include "exec/IFunction.h" -#include "ir/OpSequence.h" -#include "backend/ExecTime.h" -#include "util/ITimer.h" -#include "IExecutor.h" -#include "misc/EventCollector.h" -#include "misc/EventRecorder.h" - -namespace neurun -{ -namespace exec -{ -class IExecutionObserver -{ -public: - /// @brief Invoked just before model (not individual operation) execution begins - virtual void handleBegin(IExecutor *) { return; } - - virtual void handleBegin(IExecutor *, const ir::OpSequence *, const backend::Backend *) = 0; - virtual void handleEnd(IExecutor *, const ir::OpSequence *, const backend::Backend *) = 0; - - /// @brief Invoked just after model (not individual operation) execution ends - virtual void handleEnd(IExecutor *) { return; } - - virtual ~IExecutionObserver() = default; -}; - -class ProfileObserver : public IExecutionObserver -{ -public: - explicit ProfileObserver(std::shared_ptr<backend::ExecTime> et) : _et(std::move(et)) {} - void handleBegin(IExecutor *, const ir::OpSequence *, const backend::Backend *) override; - void handleEnd(IExecutor *, const ir::OpSequence *, const backend::Backend *) override; - - void handleEnd(IExecutor *) override { _et->uploadOperationsExecTime(); } - -private: - std::unique_ptr<util::ITimer> _timer; - std::shared_ptr<backend::ExecTime> _et; -}; - -class ChromeTracingObserver : public IExecutionObserver -{ -public: - ChromeTracingObserver(const std::string &filepath); - ~ChromeTracingObserver(); - void handleBegin(IExecutor *) override; - void handleBegin(IExecutor *, const ir::OpSequence *, const backend::Backend *) override; - void handleEnd(IExecutor *, const ir::OpSequence *, const backend::Backend *) override; - void handleEnd(IExecutor *) override; - -private: - static std::string subgraphTag(const ir::OpSequence *op_seq); - -private: - std::ofstream _ofs; - EventRecorder _recorder; - EventCollector _collector; -}; - -} // namespace exec -} // namespace neurun - -#endif // __NEURUN_EXEC_OBSREVERS_H__ diff --git a/runtime/neurun/core/include/exec/IExecutor.h b/runtime/neurun/core/include/exec/IExecutor.h deleted file mode 100644 index de3291388..000000000 --- a/runtime/neurun/core/include/exec/IExecutor.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file IExecutor.h - * @brief This file defines interface of Executor - */ -#ifndef __NEURUN_EXEC_I_EXECUTOR_H_ -#define __NEURUN_EXEC_I_EXECUTOR_H_ - -#include "ir/Graph.h" -#include "IFunction.h" -#include "IODescription.h" -#include "ir/OperationIndexMap.h" - -namespace neurun -{ -namespace exec -{ -class IExecutionObserver; -/** - * @brief Struct to define interface of Executor - */ -struct IExecutor -{ - /** - * @brief Construct a new IExecutor object - */ - IExecutor() = default; - /** - * @brief Destroy the IExecutor object - */ - virtual ~IExecutor() = default; - - /** - * @brief Returns graph object - * - * @return Graph object - */ - virtual const ir::Graph &graph() = 0; - - /** - * @brief Set an ordering on operations - * @param[in] ranks The table encoding the ordering - */ - virtual void setIndexedRanks(std::shared_ptr<ir::OperationIndexMap<int64_t>>) = 0; - - /** - * @brief Start execution - * @param[in] desc Input and output description - * @note This method should be thread-safe - */ - virtual void execute(const IODescription &desc) = 0; -}; - -} // namespace exec -} // namespace neurun - -#endif // __NEURUN_EXEC_I_EXECUTOR_H_ diff --git a/runtime/neurun/core/include/exec/IFunction.h b/runtime/neurun/core/include/exec/IFunction.h deleted file mode 100644 index 5cc29ea75..000000000 --- a/runtime/neurun/core/include/exec/IFunction.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_EXEC_I_FUNCTION_H__ -#define __NEURUN_EXEC_I_FUNCTION_H__ - -namespace neurun -{ -namespace exec -{ - -class IFunction -{ -public: - virtual ~IFunction() = default; - virtual void run() = 0; - virtual void runSync() = 0; - virtual void prepare() {} -}; - -} // namespace exec -} // namespace neurun - -#endif // __NEURUN_EXEC_I_FUNCTION_H__ diff --git a/runtime/neurun/core/include/exec/IODescription.h b/runtime/neurun/core/include/exec/IODescription.h deleted file mode 100644 index bdcc78176..000000000 --- a/runtime/neurun/core/include/exec/IODescription.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_EXEC_IO_DESCRIPTION_H__ -#define __NEURUN_EXEC_IO_DESCRIPTION_H__ - -#include <vector> - -#include "ir/OperandInfo.h" - -namespace neurun -{ -namespace exec -{ - -struct InputDesc -{ - const ir::OperandInfo info; - const void *buffer; - const size_t size; - const ir::Layout layout; - - InputDesc(void) = delete; - InputDesc(const ir::OperandInfo &info, const void *buffer, const size_t size, ir::Layout layout) - : info(info), buffer(buffer), size(size), layout(layout) - { - } -}; - -struct OutputDesc -{ - const ir::OperandInfo info; - void *buffer; - const size_t size; - const ir::Layout layout; - - OutputDesc(void) = delete; - OutputDesc(const ir::OperandInfo &info, void *buffer, const size_t size, ir::Layout layout) - : info(info), buffer(buffer), size(size), layout(layout) - { - } -}; - -struct IODescription -{ - std::vector<std::unique_ptr<InputDesc>> inputs; - std::vector<std::unique_ptr<OutputDesc>> outputs; -}; - -} // namespace exec -} // namespace neurun - -#endif // __NEURUN_EXEC_IO_DESCRIPTION_H__ diff --git a/runtime/neurun/core/include/exec/NopFunction.h b/runtime/neurun/core/include/exec/NopFunction.h deleted file mode 100644 index 5cbd7e5ce..000000000 --- a/runtime/neurun/core/include/exec/NopFunction.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file NopFunction.h - * @brief This file defines NopFunction - */ -#ifndef __NEURUN_EXEC_NOP_FUNCTION_H_ -#define __NEURUN_EXEC_NOP_FUNCTION_H_ - -#include "IFunction.h" - -namespace neurun -{ -namespace exec -{ - -/** - * @brief A derivative of IFunction tha does nothing - * - */ -class NopFunction : public IFunction -{ -public: - NopFunction() = default; - void run() override - { - // DO NOTHING - } - void runSync() override - { - // this abstract method is used just for profiling and called for - // backend::acl_common::AclFunction - run(); - } -}; - -} // namespace exec -} // namespace neurun - -#endif // __NEURUN_EXEC_NOP_FUNCTION_H_ diff --git a/runtime/neurun/core/include/ir/BackendSet.h b/runtime/neurun/core/include/ir/BackendSet.h deleted file mode 100644 index 4979286df..000000000 --- a/runtime/neurun/core/include/ir/BackendSet.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_BACKEND_SET_H__ -#define __NEURUN_IR_BACKEND_SET_H__ - -#include "util/Set.h" - -namespace neurun -{ -namespace backend -{ -class Backend; -} // namespace backend -} // namespace neurun - -namespace neurun -{ -namespace ir -{ - -using BackendSet = util::Set<const backend::Backend *>; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_BACKEND_SET_H__ diff --git a/runtime/neurun/core/include/ir/Data.h b/runtime/neurun/core/include/ir/Data.h deleted file mode 100644 index a0a489553..000000000 --- a/runtime/neurun/core/include/ir/Data.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_DATA_H__ -#define __NEURUN_IR_DATA_H__ - -#include <algorithm> - -namespace neurun -{ -namespace ir -{ - -struct Data -{ - virtual ~Data() = default; - - virtual size_t size(void) const = 0; - virtual const uint8_t *base(void) const = 0; -}; - -class CachedData final : public Data -{ -public: - CachedData(const uint8_t *base, size_t size) : _base{new uint8_t[size]}, _size{size} - { - std::copy(base, base + size, _base); - } - -public: - ~CachedData() { delete[] _base; } - -public: - size_t size(void) const override { return _size; } - const uint8_t *base(void) const override { return _base; } - -private: - uint8_t *_base; - size_t _size; -}; - -class ExternalData final : public Data -{ -public: - ExternalData(const uint8_t *base, size_t size) : _base{base}, _size{size} - { - // DO NOTHING - } - -public: - size_t size(void) const override { return _size; } - const uint8_t *base(void) const override { return _base; } - -private: - const uint8_t *_base; - const size_t _size; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_DATA_H__ diff --git a/runtime/neurun/core/include/ir/DataType.h b/runtime/neurun/core/include/ir/DataType.h deleted file mode 100644 index 6eca6eb27..000000000 --- a/runtime/neurun/core/include/ir/DataType.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_DATATYPE_H__ -#define __NEURUN_IR_DATATYPE_H__ - -#include <stdexcept> - -namespace neurun -{ -namespace ir -{ - -enum class DataType -{ - FLOAT32 = 0, - INT32 = 1, - UINT32 = 2, - QUANT8_ASYMM = 3, - BOOL8 = 4, - UINT8 = 5, - QUANT8_SYMM = 6, -}; - -inline size_t sizeOfDataType(DataType data_type) -{ - switch (data_type) - { - case DataType::FLOAT32: - return sizeof(float); - case DataType::INT32: - return sizeof(int32_t); - case DataType::UINT32: - return sizeof(uint32_t); - case DataType::BOOL8: - case DataType::QUANT8_ASYMM: - case DataType::UINT8: - return sizeof(uint8_t); - case DataType::QUANT8_SYMM: - return sizeof(int8_t); - default: - throw std::runtime_error{"Unsupported type size"}; - } -} - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_DATATYPE_H__ diff --git a/runtime/neurun/core/include/ir/Graph.h b/runtime/neurun/core/include/ir/Graph.h deleted file mode 100644 index 5105c3a42..000000000 --- a/runtime/neurun/core/include/ir/Graph.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_GRAPH_H__ -#define __NEURUN_IR_GRAPH_H__ - -#include <functional> - -#include "ir/Operands.h" -#include "ir/Operations.h" -#include "ir/LowerInfoMap.h" -#include "ir/OpSequence.h" -#include "ir/Subgraphs.h" - -namespace neurun -{ -namespace compiler -{ -class BackendResolver; -} // namespace compiler -} // namespace neurun - -namespace neurun -{ -namespace backend -{ -namespace custom -{ -class IKernelBuilder; -} // namespace custom -} // namespace backend -} // namespace neurun - -namespace neurun -{ -namespace ir -{ - -class Graph -{ -private: - enum class Phase - { - BUILDING, - MODEL - }; - -public: - Graph(void); - ~Graph(void); - - // Graph Building -public: - OperandIndex addOperand(const Shape &shape, const TypeInfo &type); - OperationIndex addOperation(std::unique_ptr<Operation> &&node); - void setOperandValue(const OperandIndex &ind, std::unique_ptr<Data> &&data); - void addInput(const OperandIndex &ind); - void addOutput(const OperandIndex &ind); - void finishBuilding(void); - void lower(void); - void removeOperand(const OperandIndex &ind) { _operands.remove(ind); } - bool isBuildingPhase(void) const { return _phase == Phase::BUILDING; } - -private: - void initializeUseDef(); - - // Custom operations support -public: - void - bindKernelBuilder(const std::shared_ptr<neurun::backend::custom::IKernelBuilder> &kernel_builder) - { - _kernel_builder = kernel_builder; - } - - const std::shared_ptr<backend::custom::IKernelBuilder> &getKernelBuilder() const - { - return _kernel_builder; - } - -private: - std::shared_ptr<backend::custom::IKernelBuilder> _kernel_builder; - - // Accessors -public: - const OperandIndexSequence &getInputs() const { return _inputs; } - OperandIndexSequence &getInputs() { return _inputs; } - const OperandIndexSequence &getOutputs() const { return _outputs; } - OperandIndexSequence &getOutputs() { return _outputs; } - const Operands &operands() const { return _operands; } - Operands &operands() { return _operands; } // TODO Remove this non-const accessor - const Operations &operations() const { return _operations; } - Operations &operations() { return _operations; } - const compiler::BackendResolver *backend_resolver() const { return _backend_resolver.get(); } - -private: - Phase _phase{Phase::BUILDING}; - Operations _operations; - Operands _operands; - OperandIndexSequence _inputs; - OperandIndexSequence _outputs; - - // For LOWERED phase -public: - const LowerInfoMap *getLowerInfo() const { return _lower_info_map.get(); } - const operation::LowerInfo *getLowerInfo(const SubgraphIndex &subg_index) const; - void setLowerInfo(const SubgraphIndex &subg_index, - std::unique_ptr<operation::LowerInfo> &&lower_info); - void removeLowerInfo(const SubgraphIndex &subg_index); - const operand::LowerInfo *getLowerInfo(const OperandIndex &index) const; - operand::LowerInfo *getLowerInfo(const OperandIndex &index); - void setLowerInfo(const OperandIndex &index, std::unique_ptr<operand::LowerInfo> &&lower_info); - void removeLowerInfo(const OperandIndex &index); - Subgraphs &subgraphs() - { - assert(_op_seqs); - return *_op_seqs; - } - const Subgraphs *subgraphs() const { return _op_seqs.get(); } - void setBackendResolver(std::unique_ptr<compiler::BackendResolver> &&br); - -private: - void makeSubgraphs(OperandIndexMap<std::unique_ptr<operand::LowerInfo>> &operands_lower_info); - void - manipulateLowerInfo(OperandIndexMap<std::unique_ptr<operand::LowerInfo>> &operands_lower_info); - void dumpLowerInfo(); - bool mergeable(const SubgraphIndex &subg_index, const OperationIndex &node_index, Layout layout); - SubgraphIndex appendFreshSingleOpSubgraph(const OperationIndex &node_index, const Operation &node, - Layout layout); - -private: - std::unique_ptr<compiler::BackendResolver> _backend_resolver; - std::unique_ptr<LowerInfoMap> _lower_info_map; - // Pass(for Perm) can accept only graph so that Graph has Subgraphs as a member - std::unique_ptr<Subgraphs> _op_seqs; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_GRAPH_H__ diff --git a/runtime/neurun/core/include/ir/Index.h b/runtime/neurun/core/include/ir/Index.h deleted file mode 100644 index aebc64dcd..000000000 --- a/runtime/neurun/core/include/ir/Index.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERAND_INDEX_H__ -#define __NEURUN_IR_OPERAND_INDEX_H__ - -#include "util/Index.h" - -namespace neurun -{ -namespace ir -{ - -struct OperationIndexTag; -using OperationIndex = ::neurun::util::Index<uint32_t, OperationIndexTag>; - -struct OperandIndexTag; -using OperandIndex = ::neurun::util::Index<uint32_t, OperandIndexTag>; - -struct IOIndexTag; -using IOIndex = ::neurun::util::Index<uint32_t, IOIndexTag>; - -struct SubgraphIndexTag; -using SubgraphIndex = ::neurun::util::Index<uint32_t, SubgraphIndexTag>; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERAND_INDEX_H__ diff --git a/runtime/neurun/core/include/ir/InternalType.h b/runtime/neurun/core/include/ir/InternalType.h deleted file mode 100644 index 91085f2f3..000000000 --- a/runtime/neurun/core/include/ir/InternalType.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_INTERNAL_TYPE_H__ -#define __NEURUN_IR_INTERNAL_TYPE_H__ - -#include <cstdint> - -namespace neurun -{ -namespace ir -{ - -enum class Activation -{ - NONE = 0, - RELU = 1, - RELU1 = 2, - RELU6 = 3, - TANH = 4, - SIGMOID = 5 -}; - -enum class PaddingType -{ - EXPLICIT = 0, - SAME = 1, - VALID = 2 -}; - -struct ExplicitPadding -{ - uint32_t left; - uint32_t right; - uint32_t top; - uint32_t bottom; -}; - -// TODO Resolve explicit padding param at frontend and save in value field -struct Padding -{ - PaddingType type; - ExplicitPadding param; -}; - -struct Stride -{ - uint32_t vertical; - uint32_t horizontal; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_INTERNAL_TYPE_H__ diff --git a/runtime/neurun/core/include/ir/Layout.h b/runtime/neurun/core/include/ir/Layout.h deleted file mode 100644 index c4edb70db..000000000 --- a/runtime/neurun/core/include/ir/Layout.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_LAYOUT_H__ -#define __NEURUN_IR_LAYOUT_H__ - -#include <functional> -#include <string> - -namespace neurun -{ -namespace ir -{ - -enum class Layout -{ - UNKNOWN = 0, - NHWC, - NCHW -}; - -inline std::string to_string(Layout layout) -{ - switch (layout) - { - case Layout::NHWC: - return std::string{"NHWC"}; - case Layout::NCHW: - return std::string{"NCHW"}; - case Layout::UNKNOWN: - return std::string{"UNKNOWN"}; - default: - throw std::runtime_error("WRONG LAYOUT"); - } -} - -} // namespace ir -} // namespace neurun - -namespace std -{ - -template <> struct hash<neurun::ir::Layout> -{ - size_t operator()(neurun::ir::Layout value) const noexcept - { - using type = typename std::underlying_type<neurun::ir::Layout>::type; - return hash<type>()(static_cast<type>(value)); - } -}; - -} // namespace std - -#endif // __NEURUN_IR_LAYOUT_H__ diff --git a/runtime/neurun/core/include/ir/LowerInfoMap.h b/runtime/neurun/core/include/ir/LowerInfoMap.h deleted file mode 100644 index a8fd818b8..000000000 --- a/runtime/neurun/core/include/ir/LowerInfoMap.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_LOWER_INFO_MAP_H__ -#define __NEURUN_IR_LOWER_INFO_MAP_H__ - -#include <memory> -#include <unordered_map> - -#include "ir/operand/LowerInfo.h" -#include "ir/operation/LowerInfo.h" -#include "ir/OperandIndexMap.h" -#include "ir/Index.h" - -namespace neurun -{ -namespace ir -{ - -struct LowerInfoMap -{ - std::unordered_map<SubgraphIndex, std::unique_ptr<operation::LowerInfo>> operation; - OperandIndexMap<std::unique_ptr<operand::LowerInfo>> operand; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_LOWER_INFO_MAP_H__ diff --git a/runtime/neurun/core/include/ir/OpCode.h b/runtime/neurun/core/include/ir/OpCode.h deleted file mode 100644 index 2b466a212..000000000 --- a/runtime/neurun/core/include/ir/OpCode.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OP_CODE_H__ -#define __NEURUN_IR_OP_CODE_H__ - -#include <functional> -#include <stdint.h> - -namespace neurun -{ -namespace ir -{ - -enum class OpCode -{ - Invalid, //< Unused -#define OP(Name) Name, //< All operations -#include "ir/Operations.lst" -#undef OP - COUNT -}; - -const char *toString(OpCode opcode); - -} // namespace ir -} // namespace neurun - -namespace std -{ - -template <> struct hash<neurun::ir::OpCode> -{ - size_t operator()(neurun::ir::OpCode value) const noexcept - { - using type = typename std::underlying_type<neurun::ir::OpCode>::type; - return hash<type>()(static_cast<type>(value)); - } -}; - -} // namespace std - -#endif // __NEURUN_IR_OP_CODE_H__ diff --git a/runtime/neurun/core/include/ir/OpSequence.h b/runtime/neurun/core/include/ir/OpSequence.h deleted file mode 100644 index 68632e589..000000000 --- a/runtime/neurun/core/include/ir/OpSequence.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OP_SEQUENCE_H__ -#define __NEURUN_IR_OP_SEQUENCE_H__ - -#include <vector> -#include <string> -#include <memory> - -#include "ir/Layout.h" -#include "ir/Index.h" -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ - -// To support ValueSwappable, Element doesn't have members which are classes -// as value(or can have members which are classes as value and the classes -// support Swappable) -struct Element -{ - OperationIndex index; - const Operation *node; - - Element(const OperationIndex *i, const Operation *n) : index{*i}, node{n} - { - // DO NOTHING - } -}; - -class OpSequence -{ -public: - explicit OpSequence(Layout layout); - OpSequence(const OpSequence &) = delete; - -public: - void accept(OperationVisitor &v) const; - -public: - const OperandIndexSequence &getInputs() const { return _inputs; } - const OperandIndexSequence &getOutputs() const { return _outputs; } - void setInputs(const OperandIndexSequence &indexes) { _inputs = indexes; } - void setOutputs(const OperandIndexSequence &indexes) { _outputs = indexes; } - void replaceInput(const OperandIndex &from, const OperandIndex &to) { _inputs.replace(from, to); } - void replaceOutput(const OperandIndex &from, const OperandIndex &to) - { - _outputs.replace(from, to); - } - - void appendOperation(const OperationIndex &index, const Operation &node) - { - _operations.emplace_back(&index, &node); - } - - std::vector<Element> &operations(void) { return _operations; } - - const std::vector<Element> &operations(void) const { return _operations; } - - uint32_t size(void) const { return _operations.size(); } - - // TODO: Impl Dumper instead of this method - std::string getStr(void) const; - -public: - void remove(const OperationIndex &index); - -public: - Layout getLayout() const { return _layout; } - -public: - std::vector<Element>::const_iterator begin() const { return _operations.begin(); } - std::vector<Element>::const_iterator end() const { return _operations.end(); } - -private: - bool exist(const OperationIndex &index) const; - -private: - OperandIndexSequence _inputs; - OperandIndexSequence _outputs; - std::vector<Element> _operations; - -private: - Layout _layout; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OP_SEQUENCE_H__ diff --git a/runtime/neurun/core/include/ir/Operand.h b/runtime/neurun/core/include/ir/Operand.h deleted file mode 100644 index b1f28de48..000000000 --- a/runtime/neurun/core/include/ir/Operand.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERAND_H__ -#define __NEURUN_IR_OPERAND_H__ - -#include <cassert> -#include <cstdint> -#include <cpp14/memory.h> -#include <algorithm> - -#include "ir/Data.h" -#include "ir/DataType.h" -#include "ir/OperandInfo.h" -#include "ir/operand/ParentInfo.h" // TODO Remove this dependency -#include "ir/OperationIndexList.h" - -namespace neurun -{ -namespace ir -{ - -class Operand -{ -public: - explicit Operand(const Shape &shape, const TypeInfo &type) : _info{shape, type} - { - // DO NOTHING - } - -public: - const Shape &shape(void) const { return _info.shape(); } - const TypeInfo &typeInfo(void) const { return _info.typeInfo(); } - const OperandInfo &info(void) const { return _info; } - size_t operandSize(void) const; - - const OperationIndexList &getUses() const { return _uses; } - const OperationIndexList &getDef() const { return _def; } - void appendUse(const OperationIndex &idx); - void removeUse(const OperationIndex &idx); - void appendDef(const OperationIndex &idx); - void removeDef(const OperationIndex &idx); - -public: - void type(const DataType type) { _info.type(type); }; - -public: - void data(std::unique_ptr<Data> &&data) { _data = std::move(data); } - const Data &data(void) const - { - assert(_data); - return *_data; - } - - /** - * @brief Get true if Operand has data, otherwise @c false - a @return @c true if Operand has data, otherwise @c false - */ - bool isConstant(void) const { return _data != nullptr; } - -public: - template <typename T, typename... Args> void data(Args &&... args) - { - data(nnfw::cpp14::make_unique<T>(std::forward<Args>(args)...)); - } - -public: - template <typename T> T asScalar(void) const - { - assert((shape().rank() == 0) || ((shape().rank() == 1) && (shape().dim(0) == 1))); - assert(_data != nullptr); - assert((_data->base() != nullptr) && (_data->size() == sizeof(T))); - - return *(reinterpret_cast<const T *>(_data->base())); - } - - template <typename T> std::vector<T> asVector() const - { - assert(isConstant()); - assert(_data->size() % sizeof(T) == 0); - - const auto *base = reinterpret_cast<const T *>(_data->base()); - const std::size_t size = _data->size() / sizeof(T); - return std::vector<T>(base, base + size); - } - -public: - /** - * @brief Set parent information - * @param[in] parent_info Parent information - */ - void parent_info(std::unique_ptr<operand::ParentInfo> &&parent_info); - /** - * @brief Return parent information pointer as constant - * @return Parent information pointer - */ - const operand::ParentInfo *parent_info() const; - /** - * @brief Return parent information pointer - * @return Perent information pointer - */ - operand::ParentInfo *parent_info(); - -private: - OperandInfo _info; - std::shared_ptr<Data> _data; - - OperationIndexList _uses; - OperationIndexList _def; // size is 0 (constant) or 1 (from def operation) - - std::shared_ptr<operand::ParentInfo> _parent_info; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERAND_H__ diff --git a/runtime/neurun/core/include/ir/OperandConstraint.h b/runtime/neurun/core/include/ir/OperandConstraint.h deleted file mode 100644 index de6f21634..000000000 --- a/runtime/neurun/core/include/ir/OperandConstraint.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_MODEL_OPERAND_CONSTRAINT_H__ -#define __NEURUN_MODEL_OPERAND_CONSTRAINT_H__ - -#include <stdint.h> -#include <limits> -#include <set> - -namespace neurun -{ -namespace ir -{ - -class OperandConstraint -{ -private: - static const uint32_t INF = std::numeric_limits<uint32_t>::max(); - -public: - static OperandConstraint createAny() { return OperandConstraint{0u, INF}; } - static OperandConstraint createExact(uint32_t exact) { return OperandConstraint{exact, exact}; } - static OperandConstraint createAtMost(uint32_t end) { return OperandConstraint{0u, end}; } - static OperandConstraint createAtLeast(uint32_t begin) { return OperandConstraint{begin, INF}; } - static OperandConstraint createInRange(uint32_t begin, uint32_t end) - { - return OperandConstraint{begin, end}; - } - -private: - OperandConstraint(uint32_t begin, uint32_t end) : _begin{begin}, _end{end} {} - -public: - bool check(uint32_t ind) const { return _begin <= ind && ind <= _end; } - -private: - uint32_t _begin; - uint32_t _end; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_MODEL_OPERAND_CONSTRAINT_H__ diff --git a/runtime/neurun/core/include/ir/OperandIndexMap.h b/runtime/neurun/core/include/ir/OperandIndexMap.h deleted file mode 100644 index c9234128e..000000000 --- a/runtime/neurun/core/include/ir/OperandIndexMap.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERAND_INDEX_MAP_H__ -#define __NEURUN_IR_OPERAND_INDEX_MAP_H__ - -#include <unordered_map> - -#include "ir/Index.h" - -namespace neurun -{ -namespace ir -{ - -template <typename T> using OperandIndexMap = std::unordered_map<OperandIndex, T>; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERAND_INDEX_MAP_H__ diff --git a/runtime/neurun/core/include/ir/OperandIndexSequence.h b/runtime/neurun/core/include/ir/OperandIndexSequence.h deleted file mode 100644 index 7f8cec844..000000000 --- a/runtime/neurun/core/include/ir/OperandIndexSequence.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_MODEL_OPERAND_INDEX_SEQUENCE_H__ -#define __NEURUN_MODEL_OPERAND_INDEX_SEQUENCE_H__ - -#include <initializer_list> -#include <vector> - -#include "ir/Index.h" - -namespace neurun -{ -namespace ir -{ - -class OperandIndexSequence -{ -public: - OperandIndexSequence(void) = default; - OperandIndexSequence(std::initializer_list<OperandIndex> list); - OperandIndexSequence(std::initializer_list<int32_t> list); - OperandIndexSequence(std::initializer_list<uint32_t> list); - -public: - void append(const OperandIndex &index) { _set.emplace_back(index); } - void append(const OperandIndexSequence &l) { _set.insert(_set.end(), l.begin(), l.end()); } - -public: - uint32_t size() const { return static_cast<uint32_t>(_set.size()); } - const OperandIndex &at(IOIndex set_index) const { return _set.at(set_index.value()); } - const OperandIndex &at(uint32_t index) const { return _set.at(index); } - bool contains(const OperandIndex &index) const; - void replace(const OperandIndex &from, const OperandIndex &to); - -public: - std::vector<OperandIndex>::const_iterator begin(void) const { return _set.begin(); } - std::vector<OperandIndex>::const_iterator end(void) const { return _set.end(); } - -private: - std::vector<OperandIndex> _set; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_MODEL_OPERAND_INDEX_SET_H__ diff --git a/runtime/neurun/core/include/ir/OperandInfo.h b/runtime/neurun/core/include/ir/OperandInfo.h deleted file mode 100644 index 82ad7ef0f..000000000 --- a/runtime/neurun/core/include/ir/OperandInfo.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file OperandInfo.h - * @brief This file contains OperandInfo class - */ -#ifndef __NEURUN_IR_OPERAND_INFO_H__ -#define __NEURUN_IR_OPERAND_INFO_H__ - -#include "ir/Shape.h" -#include "ir/TypeInfo.h" -#include "ir/Layout.h" - -namespace neurun -{ -namespace ir -{ - -/** - * @brief Class to save tensor's shape and type - */ -class OperandInfo -{ -public: - /** - * @brief Construct a new OperandInfo object (deleted) - */ - OperandInfo() = delete; - /** - * @brief Construct a new OperandInfo object - * @param[in] shape Tensor shape - * @param[in] typeInfo Tensor data type - */ - OperandInfo(const Shape &shape, const TypeInfo &typeInfo) : _shape(shape), _typeInfo(typeInfo) - { - // DO NOTHING - } - /** - * @brief Construct a new OperandInfo object - * @param[in] origin info for copy - */ - OperandInfo(const OperandInfo &origin) : _shape(origin.shape()), _typeInfo(origin.typeInfo()) - { - // DO NOTHING - } - -public: - /** - * @brief Return tensor shape - * @return Tensor shape - */ - const Shape &shape() const { return _shape; } - /** - * @brief Return tensor data type info - * @return Tensor data type - */ - const TypeInfo &typeInfo() const { return _typeInfo; } - /** - * @brief Set tensor data type - */ - void type(const DataType type) { _typeInfo.type(type); } - /** - * @brief Return size of tensor (bytes) - * @return Tensor size - */ - size_t total_size() const { return _shape.num_elements() * sizeOfDataType(_typeInfo.type()); } - -private: - Shape _shape; - TypeInfo _typeInfo; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERAND_INFO_H__ diff --git a/runtime/neurun/core/include/ir/Operands.h b/runtime/neurun/core/include/ir/Operands.h deleted file mode 100644 index c8d68c088..000000000 --- a/runtime/neurun/core/include/ir/Operands.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERANDS_H__ -#define __NEURUN_IR_OPERANDS_H__ - -#include <memory> -#include <unordered_map> - -#include "ir/Operand.h" -#include "ir/Index.h" -#include "util/ObjectManager.h" - -namespace neurun -{ -namespace ir -{ - -class Operands : public util::ObjectManager<OperandIndex, Operand> -{ -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_MODEL_OPERAND_SET_H__ diff --git a/runtime/neurun/core/include/ir/Operation.h b/runtime/neurun/core/include/ir/Operation.h deleted file mode 100644 index a02f980a5..000000000 --- a/runtime/neurun/core/include/ir/Operation.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_H__ -#define __NEURUN_IR_OPERATION_H__ - -#include <memory> - -#include "ir/OpCode.h" -#include "ir/Operand.h" -#include "ir/OperandIndexSequence.h" -#include "ir/OperandConstraint.h" - -namespace neurun -{ -namespace ir -{ - -struct OperationVisitor; - -class Operation -{ -public: - Operation(OperandConstraint input_constr, const OperandIndexSequence &inputs, - const OperandIndexSequence &outputs); - explicit Operation(OperandConstraint input_constr); - - Operation(const Operation &) = delete; - Operation(Operation &&) = default; - Operation &operator=(const Operation &) = delete; - Operation &operator=(Operation &&) = default; - - virtual ~Operation(); - -public: - virtual void accept(OperationVisitor &v) const = 0; - virtual std::string name() const { return std::string{toString(opcode())}; } - virtual OpCode opcode() const = 0; - -public: - void replaceInput(const OperandIndex &from, const OperandIndex &to); - void replaceOutput(const OperandIndex &from, const OperandIndex &to); - const OperandIndexSequence &getInputs() const { return _inputs; } - const OperandIndexSequence &getOutputs() const { return _outputs; } - // It's for only input/output tensors but const data. - void setInputs(const OperandIndexSequence &indexes); - void setOutputs(const OperandIndexSequence &indexes); - -private: - OperandConstraint _input_constr; - OperandIndexSequence _inputs; - OperandIndexSequence _outputs; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_H__ diff --git a/runtime/neurun/core/include/ir/OperationIndexList.h b/runtime/neurun/core/include/ir/OperationIndexList.h deleted file mode 100644 index bf3ea3d6b..000000000 --- a/runtime/neurun/core/include/ir/OperationIndexList.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_MODEL_OPERATION_INDEX_LIST_H__ -#define __NEURUN_MODEL_OPERATION_INDEX_LIST_H__ - -#include <algorithm> -#include <cassert> -#include <initializer_list> -#include <list> - -#include "ir/Index.h" - -namespace neurun -{ -namespace ir -{ - -class OperationIndexList -{ -public: - OperationIndexList(void) = default; - OperationIndexList(std::initializer_list<OperationIndex> list); - -public: - void append(const OperationIndex &index) { _list.push_back(index); } - void remove(const OperationIndex &index) - { - auto itr = std::find(_list.begin(), _list.end(), index); - assert(itr != _list.end()); - _list.erase(itr); - } - -public: - uint32_t size() const { return static_cast<uint32_t>(_list.size()); } - const std::list<OperationIndex> &list() const { return _list; } - bool contains(const OperationIndex &index) const; - -private: - std::list<OperationIndex> _list; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_MODEL_OPERATION_INDEX_LIST_H__ diff --git a/runtime/neurun/core/include/ir/OperationIndexMap.h b/runtime/neurun/core/include/ir/OperationIndexMap.h deleted file mode 100644 index 50b1db527..000000000 --- a/runtime/neurun/core/include/ir/OperationIndexMap.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_INDEX_MAP_H__ -#define __NEURUN_IR_OPERATION_INDEX_MAP_H__ - -#include <unordered_map> - -#include "ir/Index.h" - -namespace neurun -{ -namespace ir -{ - -template <typename T> using OperationIndexMap = std::unordered_map<OperationIndex, T>; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_INDEX_MAP_H__ diff --git a/runtime/neurun/core/include/ir/OperationVisitor.h b/runtime/neurun/core/include/ir/OperationVisitor.h deleted file mode 100644 index 0eb6de2d3..000000000 --- a/runtime/neurun/core/include/ir/OperationVisitor.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_VISITOR_H__ -#define __NEURUN_IR_OPERATION_VISITOR_H__ - -#include "ir/Operations.Include.h" -#include "ir/OpSequence.h" - -namespace neurun -{ -namespace ir -{ - -struct OperationVisitor -{ - virtual ~OperationVisitor() = default; - -#define OP(InternalName) \ - virtual void visit(const operation::InternalName &) {} -#include "ir/Operations.lst" -#undef OP - - // This OpSequence node should be handled specially so that - // Op.lst doesn't have OpSequence - // TODO Remove by pushing it down to derived classes. - virtual void visit(const OpSequence &op_seq) - { - for (const auto &e : op_seq.operations()) - { - e.node->accept(*this); - } - } -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_VISITOR_H__ diff --git a/runtime/neurun/core/include/ir/Operations.Include.h b/runtime/neurun/core/include/ir/Operations.Include.h deleted file mode 100644 index e14e18cc1..000000000 --- a/runtime/neurun/core/include/ir/Operations.Include.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This file has no ifdef guard intentionally - -#include "ir/operation/BatchToSpaceND.h" -#include "ir/operation/Conv2D.h" -#include "ir/operation/MaxPool2D.h" -#include "ir/operation/AvgPool2D.h" -#include "ir/operation/Concat.h" -#include "ir/operation/Reshape.h" -#include "ir/operation/FullyConnected.h" -#include "ir/operation/Softmax.h" -#include "ir/operation/Transpose.h" -#include "ir/operation/Permute.h" -#include "ir/operation/ReduceSum.h" -#include "ir/operation/Add.h" -#include "ir/operation/Sub.h" -#include "ir/operation/DepthwiseConv2D.h" -#include "ir/operation/Slice.h" -#include "ir/operation/StridedSlice.h" -#include "ir/operation/Mul.h" -#include "ir/operation/Squeeze.h" -#include "ir/operation/Tanh.h" -#include "ir/operation/Logistic.h" -#include "ir/operation/Cast.h" -#include "ir/operation/Div.h" -#include "ir/operation/Exp.h" -#include "ir/operation/ReduceMax.h" -#include "ir/operation/Comparison.h" -#include "ir/operation/LogicalAnd.h" -#include "ir/operation/LogicalOr.h" -#include "ir/operation/LogicalNot.h" -#include "ir/operation/LSTM.h" -#include "ir/operation/RSQRT.h" -#include "ir/operation/ReLU.h" -#include "ir/operation/ResizeBilinear.h" -#include "ir/operation/ReLU1.h" -#include "ir/operation/ReLU6.h" -#include "ir/operation/RNN.h" -#include "ir/operation/Floor.h" -#include "ir/operation/SpaceToBatchND.h" -#include "ir/operation/SpaceToDepth.h" -#include "ir/operation/L2Pool2D.h" -#include "ir/operation/EmbeddingLookup.h" -#include "ir/operation/L2Normalization.h" -#include "ir/operation/HashtableLookup.h" -#include "ir/operation/InstanceNorm.h" -#include "ir/operation/PReLU.h" -#include "ir/operation/TransposeConv.h" -#include "ir/operation/SQRT.h" -#include "ir/operation/SquaredDifference.h" -#include "ir/operation/TopKV2.h" -#include "ir/operation/Gather.h" -#include "ir/operation/Neg.h" -#include "ir/operation/Abs.h" -#include "ir/operation/ArgMax.h" -#include "ir/operation/Dequantize.h" -#include "ir/operation/Mean.h" -#include "ir/operation/LocalResponseNormalization.h" -#include "ir/operation/DepthToSpace.h" -#include "ir/operation/Pack.h" -#include "ir/operation/ReduceMin.h" -#include "ir/operation/Split.h" -#include "ir/operation/Unpack.h" -#include "ir/operation/Pad.h" -#include "ir/operation/Min.h" -#include "ir/operation/Max.h" -#include "ir/operation/Custom.h" -#include "ir/operation/OneHot.h" diff --git a/runtime/neurun/core/include/ir/Operations.h b/runtime/neurun/core/include/ir/Operations.h deleted file mode 100644 index 9e2aecb43..000000000 --- a/runtime/neurun/core/include/ir/Operations.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATIONS_H__ -#define __NEURUN_IR_OPERATIONS_H__ - -#include "ir/Index.h" -#include "ir/Operation.h" -#include "util/ObjectManager.h" - -namespace neurun -{ -namespace ir -{ - -class Operations : public util::ObjectManager<OperationIndex, Operation> -{ -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_MODEL_OPERATION_MANAGER_H__ diff --git a/runtime/neurun/core/include/ir/Operations.lst b/runtime/neurun/core/include/ir/Operations.lst deleted file mode 100644 index 8c02857d9..000000000 --- a/runtime/neurun/core/include/ir/Operations.lst +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef OP -#error Define OP before including this file -#endif - -// Internal Name -OP(Add) -OP(Sub) -OP(BatchToSpaceND) -OP(Cast) -OP(Conv2D) -OP(DepthwiseConv2D) -OP(AvgPool2D) -OP(MaxPool2D) -OP(Concat) -OP(FullyConnected) -OP(ReduceSum) -OP(Reshape) -OP(Mul) -OP(Softmax) -OP(Squeeze) -OP(Slice) -OP(StridedSlice) -OP(Tanh) -OP(Logistic) -OP(Div) -OP(Transpose) -OP(Exp) -OP(ReduceMax) -OP(Comparison) -OP(LogicalAnd) -OP(LogicalOr) -OP(LogicalNot) -OP(LSTM) -OP(RSQRT) -OP(ReLU) -OP(ResizeBilinear) -OP(ReLU1) -OP(ReLU6) -OP(RNN) -OP(Floor) -OP(SpaceToBatchND) -OP(SpaceToDepth) -OP(L2Pool2D) -OP(EmbeddingLookup) -OP(L2Normalization) -OP(HashtableLookup) -OP(InstanceNorm) -OP(PReLU) -OP(TransposeConv) -OP(SQRT) -OP(SquaredDifference) -OP(TopKV2) -OP(Gather) -OP(Neg) -OP(Abs) -OP(ArgMax) -OP(Dequantize) -OP(Mean) -OP(LocalResponseNormalization) -OP(DepthToSpace) -OP(Pack) -OP(ReduceMin) -OP(Split) -OP(Unpack) -OP(Pad) -OP(Custom) -OP(Permute) -OP(Min) -OP(Max) -OP(OneHot) diff --git a/runtime/neurun/core/include/ir/Shape.h b/runtime/neurun/core/include/ir/Shape.h deleted file mode 100644 index a58af38ad..000000000 --- a/runtime/neurun/core/include/ir/Shape.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_SHAPE_H__ -#define __NEURUN_IR_SHAPE_H__ - -#include "ir/Layout.h" -#include "misc/feature/Shape.h" - -#include <cstdint> -#include <vector> - -namespace neurun -{ -namespace ir -{ - -// TODO Remove this dependency. -using FeatureShape = nnfw::misc::feature::Shape; - -struct Shape -{ -public: - Shape() = default; - - explicit Shape(int rank) : _dimensions(rank) {} - - Shape(std::initializer_list<int32_t> dimensions) : _dimensions(dimensions) {} - - int rank() const { return _dimensions.size(); } - - const std::vector<int32_t> &dims() const { return _dimensions; } - - int32_t dim(int i) const { return _dimensions.at(i); } - - int32_t &dim(int i) { return _dimensions.at(i); } - - uint64_t num_elements() const; - -public: - FeatureShape asFeature(Layout layout) const; - - /** - * @brief Add dimension to the beginning - * @param[in] d dimension to add to the beginning - */ - void prepend(int32_t d) { _dimensions.insert(_dimensions.cbegin(), d); } - - /** - * @brief Add dimension to the end - * @param[in] d dimension to add to the end - */ - void append(int32_t d) { _dimensions.emplace_back(d); } - - /** - * @brief Extend rank of Shape object for operand with param. - * @param[in] to_rank The rank value to be extended to - */ - void extendRank(int to_rank); - -private: - std::vector<int32_t> _dimensions; -}; - -inline bool operator==(const Shape &lhs, const Shape &rhs) { return lhs.dims() == rhs.dims(); } -inline bool operator!=(const Shape &lhs, const Shape &rhs) { return lhs.dims() != rhs.dims(); } - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_SHAPE_H__ diff --git a/runtime/neurun/core/include/ir/Subgraphs.h b/runtime/neurun/core/include/ir/Subgraphs.h deleted file mode 100644 index 716f09bcf..000000000 --- a/runtime/neurun/core/include/ir/Subgraphs.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_SUBGRAPHS_H__ -#define __NEURUN_IR_SUBGRAPHS_H__ - -#include "ir/Index.h" -#include "ir/OpSequence.h" -#include "util/ObjectManager.h" - -namespace neurun -{ -namespace ir -{ - -/** - * @brief Class that manages OpSequence objects - */ -class Subgraphs : public util::ObjectManager<SubgraphIndex, OpSequence> -{ -public: - /** - * @brief Create an instance of OpSequence with given op and push it to objects - * - * @param[in] op_idx Operation index that is emplaced - * @param[in] op Operation that is emplaced - * @param[in] layout OpSequence's layout - * @return SubgraphIndex - */ - SubgraphIndex emplace(const OperationIndex &op_index, const Operation &op, Layout layout); - - /** - * @brief Push an instance of OpSequence to objects - * - * @param[in] subg An instance of OpSequence - * @return SubgraphIndex - */ - SubgraphIndex emplace(std::unique_ptr<OpSequence> &&subg); - - /** - * @brief Check if an operation does exist in any subgraphs - * - * @param operation_index Operation index to find - * @return true If such operation exists in any subgraphs otherwise false - */ - bool containsOperation(const OperationIndex &operation_index) const; - /** - * @brief Find an operation from all subgraphs - * - * @param operation_index Operation index to find - * @return SubgraphIndex Index of OpSequence that contains given operation index - */ - SubgraphIndex getOperation(const OperationIndex &operation_index) const; - /** - * @brief Dump subgraphs - * - * @param msg Message that will be displayed - */ - void dump(const std::string &msg) const; - /** - * @brief Remove an operation from OpSequence - * - * @param operation_index Operation index to be removed - */ - void removeFromSubgraph(const OperationIndex &operation_index); - -private: - SubgraphIndex findOperation(const OperationIndex &operation_index) const; -}; - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_SUBGRAPHS_H__ diff --git a/runtime/neurun/core/include/ir/TypeInfo.h b/runtime/neurun/core/include/ir/TypeInfo.h deleted file mode 100644 index 5b35046bb..000000000 --- a/runtime/neurun/core/include/ir/TypeInfo.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_TYPEINFO_H__ -#define __NEURUN_IR_TYPEINFO_H__ - -#include <cstdint> - -#include "ir/DataType.h" - -namespace neurun -{ -namespace ir -{ - -class TypeInfo -{ -public: - TypeInfo() = delete; - - explicit TypeInfo(DataType type, float scale = 0, int32_t offset = 0) - : _type(type), _scale(scale), _offset(offset) - { - } - -public: - DataType type() const { return _type; } - float scale() const { return _scale; } - int32_t offset() const { return _offset; } - -public: - void type(const DataType type) { _type = type; } - -private: - DataType _type; - float _scale; - int32_t _offset; -}; - -bool operator==(const TypeInfo &lhs, const TypeInfo &rhs); -bool operator!=(const TypeInfo &lhs, const TypeInfo &rhs); - -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_TYPEINFO_H__ diff --git a/runtime/neurun/core/include/ir/operand/LowerInfo.h b/runtime/neurun/core/include/ir/operand/LowerInfo.h deleted file mode 100644 index e0fb2c5c8..000000000 --- a/runtime/neurun/core/include/ir/operand/LowerInfo.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERAND_LOWER_INFO_H__ -#define __NEURUN_IR_OPERAND_LOWER_INFO_H__ - -#include <functional> -#include <stdint.h> - -#include "ir/operand/PermuteFactor.h" -#include "util/Set.h" - -namespace neurun -{ -namespace backend -{ -class Backend; -} // namespace backend -} // namespace neurun - -namespace neurun -{ -namespace ir -{ -namespace operand -{ -using PermuteFactorSet = util::Set<PermuteFactor>; - -class LowerInfo -{ -public: - class Shape4D - { - public: - Shape4D(uint32_t n, uint32_t h, uint32_t w, uint32_t c) : _n{n}, _h{h}, _w{w}, _c{c} - { - // DO NOTHING - } - - public: - uint32_t n(void) const { return _n; } - uint32_t h(void) const { return _h; } - uint32_t w(void) const { return _w; } - uint32_t c(void) const { return _c; } - - private: - uint32_t _n; - uint32_t _h; - uint32_t _w; - uint32_t _c; - }; - -public: - LowerInfo(const Shape4D &shape) : _shape{shape} - { - // DO NOTHING - } - -public: - const Shape4D &shape(void) const { return _shape; } - const PermuteFactorSet &def_factors(void) const { return _def_factors; } - const PermuteFactorSet &use_factors(void) const { return _use_factors; } - -public: - void addDefPermuteFactor(const PermuteFactor &factor) { _def_factors.add(factor); } - void addUsePermuteFactor(const PermuteFactor &factor) { _use_factors.add(factor); } - void removeDefPermuteFactor(const PermuteFactor &factor) { _def_factors.remove(factor); } - void removeUsePermuteFactor(const PermuteFactor &factor) { _use_factors.remove(factor); } - -private: - Shape4D _shape; - PermuteFactorSet _def_factors; - PermuteFactorSet _use_factors; -}; - -} // namespace operand -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERAND_LOWER_INFO_H__ diff --git a/runtime/neurun/core/include/ir/operand/ParentInfo.h b/runtime/neurun/core/include/ir/operand/ParentInfo.h deleted file mode 100644 index 92dac2b63..000000000 --- a/runtime/neurun/core/include/ir/operand/ParentInfo.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file ParentInfo.h - * @brief This file contains ParentInfo class and internal Coordinate4D class - * to represent subsumption between operand - */ - -#ifndef __NEURUN_IR_OPERAND_PARENT_INFO_H__ -#define __NEURUN_IR_OPERAND_PARENT_INFO_H__ - -#include <stdint.h> - -#include "ir/Index.h" -#include "util/Coordinates.h" - -namespace neurun -{ -namespace ir -{ -namespace operand -{ - -/** - * @brief Class to represent parent operand in child operand - */ -class ParentInfo -{ -public: - /** - * @brief Construct a new ParentInfo object - * @param[in] parent Index of parent operand - * @param[in] coordinate Offset of child operand in parent operand - * @return - */ - ParentInfo(const OperandIndex parent, const util::Coordinates &coordinate) - : _parent{parent}, _coordinate{coordinate} - { - // DO NOTHING - } - -public: - /** - * @brief Return parent index - * @return Parent index - */ - OperandIndex parent(void) const { return _parent; } - /** - * @brief Retern offset in parent - * @return Offset - */ - util::Coordinates offset(void) const { return _coordinate; } - -private: - OperandIndex _parent; - util::Coordinates _coordinate; -}; - -} // namespace operand -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERAND_PARENT_INFO_H__ diff --git a/runtime/neurun/core/include/ir/operand/PermuteFactor.h b/runtime/neurun/core/include/ir/operand/PermuteFactor.h deleted file mode 100644 index 60d926b2d..000000000 --- a/runtime/neurun/core/include/ir/operand/PermuteFactor.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file PermuteFactor.h - * @brief This file contains neurun::ir::operand::PermuteFactor class - * @ingroup COM_AI_RUNTIME - */ - -#ifndef __NEURUN_IR_OPERAND_PERMUTE_FACTOR_H__ -#define __NEURUN_IR_OPERAND_PERMUTE_FACTOR_H__ - -#include <functional> - -#include "ir/Layout.h" - -namespace neurun -{ -namespace backend -{ -class Backend; -} // namespace backend -} // namespace neurun - -namespace neurun -{ -namespace ir -{ -namespace operand -{ - -/** - * @brief Class that has factors of permutation - */ -class PermuteFactor -{ -public: - /** - * @brief Construct PermuteFactor object. - * @param backend The backend factor - * @param backend The layout factor - */ - PermuteFactor(const backend::Backend *backend, Layout layout) : _backend{backend}, _layout{layout} - { - // DO NOTHING - } - /** - * @brief Construct PermuteFactor object by copy semantics. - */ - PermuteFactor(const PermuteFactor &f) : _backend{f._backend}, _layout{f._layout} - { - // DO NOTHING - } - /** - * @brief Construct PermuteFactor object by move semantics. - */ - PermuteFactor(PermuteFactor &&) = default; - -public: - /** - * @brief Get backend - * - * @return Backend factor - */ - const backend::Backend *backend() const { return _backend; } - /** - * @brief Get layout - * - * @return Layout factor - */ - Layout layout() const { return _layout; } - -public: - /** - * @brief operator overloading function for `==` - * - * @return Whether two PermuteFactor are the same - */ - bool operator==(const PermuteFactor &other) const - { - return _backend == other.backend() && _layout == other.layout(); - } - /** - * @brief operator overloading function for `!=` - * - * @return Whether two PermuteFactor are differenct - */ - bool operator!=(const PermuteFactor &other) const { return !(*this == other); } - -private: - const backend::Backend *_backend{nullptr}; - Layout _layout{Layout::UNKNOWN}; -}; - -} // namespace operand -} // namespace ir -} // namespace neurun - -namespace std -{ - -/** - * @brief Structure that provides hash value of PermuteFactor - */ -template <> struct hash<neurun::ir::operand::PermuteFactor> -{ - size_t operator()(const neurun::ir::operand::PermuteFactor &factor) const noexcept - { - hash<const neurun::backend::Backend *> b_hash{}; - hash<neurun::ir::Layout> l_hash{}; - return b_hash(factor.backend()) ^ (l_hash(factor.layout()) << 1); - } -}; - -} // namespace std - -#endif // __NEURUN_IR_OPERAND_PERMUTE_FACTOR_H__ diff --git a/runtime/neurun/core/include/ir/operation/Abs.h b/runtime/neurun/core/include/ir/operation/Abs.h deleted file mode 100644 index 97293823b..000000000 --- a/runtime/neurun/core/include/ir/operation/Abs.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_ABS_H__ -#define __NEURUN_IR_OPERATION_ABS_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Abs : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Abs(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Abs; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_ABS_H__ diff --git a/runtime/neurun/core/include/ir/operation/Add.h b/runtime/neurun/core/include/ir/operation/Add.h deleted file mode 100644 index fc4d6a7e7..000000000 --- a/runtime/neurun/core/include/ir/operation/Add.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_ADD_H__ -#define __NEURUN_IR_OPERATION_ADD_H__ - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Add : public Operation -{ -public: - enum Input - { - LHS = 0, - RHS - }; - - struct Param - { - Activation activation; - }; - -public: - Add(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Add; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_ADD_H__ diff --git a/runtime/neurun/core/include/ir/operation/ArgMax.h b/runtime/neurun/core/include/ir/operation/ArgMax.h deleted file mode 100644 index 23f52710f..000000000 --- a/runtime/neurun/core/include/ir/operation/ArgMax.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_ARG_MAX_H__ -#define __NEURUN_IR_OPERATION_ARG_MAX_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ArgMax : public Operation -{ -public: - enum Input - { - INPUT - }; - - struct Param - { - int axis; - int rank; - }; - -public: - ArgMax(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ArgMax; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_ARG_MAX_H__ diff --git a/runtime/neurun/core/include/ir/operation/AvgPool2D.h b/runtime/neurun/core/include/ir/operation/AvgPool2D.h deleted file mode 100644 index a03628184..000000000 --- a/runtime/neurun/core/include/ir/operation/AvgPool2D.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_AVGPOOL2D_H__ -#define __NEURUN_IR_OPERATION_AVGPOOL2D_H__ - -#include <memory> - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class AvgPool2D : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - uint32_t kh; - uint32_t kw; - - Stride stride; - Padding padding; - Activation activation; - }; - -public: - AvgPool2D(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::AvgPool2D; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_AVGPOOL2D_H__ diff --git a/runtime/neurun/core/include/ir/operation/BatchToSpaceND.h b/runtime/neurun/core/include/ir/operation/BatchToSpaceND.h deleted file mode 100644 index b90d2871d..000000000 --- a/runtime/neurun/core/include/ir/operation/BatchToSpaceND.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_BATCH_TO_SPACE_ND_H__ -#define __NEURUN_IR_OPERATION_BATCH_TO_SPACE_ND_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class BatchToSpaceND : public Operation -{ -public: - enum Input - { - INPUT = 0, - BLOCK_SIZE = 1 - }; - -public: - BatchToSpaceND(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::BatchToSpaceND; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_BATCH_TO_SPACE_ND_H__ diff --git a/runtime/neurun/core/include/ir/operation/Cast.h b/runtime/neurun/core/include/ir/operation/Cast.h deleted file mode 100644 index a71087dd0..000000000 --- a/runtime/neurun/core/include/ir/operation/Cast.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_CAST_H__ -#define __NEURUN_IR_OPERATION_CAST_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Cast : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Cast(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Cast; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_CAST_H__ diff --git a/runtime/neurun/core/include/ir/operation/Comparison.h b/runtime/neurun/core/include/ir/operation/Comparison.h deleted file mode 100644 index 23c775c42..000000000 --- a/runtime/neurun/core/include/ir/operation/Comparison.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_COMPARISON_H__ -#define __NEURUN_IR_OPERATION_COMPARISON_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Comparison : public Operation -{ -public: - enum Input - { - INPUT0 = 0, - INPUT1 - }; - - enum class ComparisonType - { - Equal, - NotEqual, - Greater, - GreaterEqual, - Less, - LessEqual - }; - - struct Param - { - ComparisonType comparison_type; - }; - -public: - Comparison(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Comparison; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_COMPARISON_H__ diff --git a/runtime/neurun/core/include/ir/operation/Concat.h b/runtime/neurun/core/include/ir/operation/Concat.h deleted file mode 100644 index 8628ed398..000000000 --- a/runtime/neurun/core/include/ir/operation/Concat.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_CONCAT_H__ -#define __NEURUN_IR_OPERATION_CONCAT_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Concat : public Operation -{ -public: - struct Param - { - int32_t axis; - int32_t rank; - }; - -public: - Concat(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Concat; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_CONCAT_H__ diff --git a/runtime/neurun/core/include/ir/operation/Conv2D.h b/runtime/neurun/core/include/ir/operation/Conv2D.h deleted file mode 100644 index 1215666e9..000000000 --- a/runtime/neurun/core/include/ir/operation/Conv2D.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_CONV2D_H__ -#define __NEURUN_IR_OPERATION_CONV2D_H__ - -#include <memory> - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Conv2D : public Operation -{ -public: - enum Input - { - INPUT = 0, - KERNEL, - BIAS - }; - - struct Param - { - Stride stride; - Padding padding; - Activation activation; - }; - -public: - Conv2D(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Conv2D; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_CONV2D_H__ diff --git a/runtime/neurun/core/include/ir/operation/Custom.h b/runtime/neurun/core/include/ir/operation/Custom.h deleted file mode 100644 index 03501e8ef..000000000 --- a/runtime/neurun/core/include/ir/operation/Custom.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __NEURUN_IR_OPERATION_CUSTOM_H__ -#define __NEURUN_IR_OPERATION_CUSTOM_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Custom : public Operation -{ -public: - struct Userdata - { - char *data; - size_t size; - }; - - Custom(OperandConstraint input_constr, const OperandIndexSequence &inputs, - const OperandIndexSequence &outputs, std::string id, const Userdata &userdata); - - void accept(OperationVisitor &v) const override; - -public: - /** - * @return unique operation identifier - */ - const std::string &id() const; - - std::string name() const override; - OpCode opcode() const final { return OpCode::Custom; } - - /** - * @return user-provided data - */ - const Userdata &userdata() const; - - ~Custom() override; - -private: - std::string _id; - Userdata _userdata; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun -#endif // __NEURUN_IR_OPERATION_CUSTOM_H__ diff --git a/runtime/neurun/core/include/ir/operation/DepthToSpace.h b/runtime/neurun/core/include/ir/operation/DepthToSpace.h deleted file mode 100644 index 6e7aaf249..000000000 --- a/runtime/neurun/core/include/ir/operation/DepthToSpace.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_DEPTH_TO_SPACE_H__ -#define __NEURUN_IR_OPERATION_DEPTH_TO_SPACE_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class DepthToSpace : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - std::int32_t block_size; - }; - -public: - DepthToSpace(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::DepthToSpace; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_DEPTH_TO_SPACE_H__ diff --git a/runtime/neurun/core/include/ir/operation/DepthwiseConv2D.h b/runtime/neurun/core/include/ir/operation/DepthwiseConv2D.h deleted file mode 100644 index 1f0926fa8..000000000 --- a/runtime/neurun/core/include/ir/operation/DepthwiseConv2D.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_DEPTHWISECONV2D_H__ -#define __NEURUN_IR_OPERATION_DEPTHWISECONV2D_H__ - -#include <memory> - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class DepthwiseConv2D : public Operation -{ -public: - enum Input - { - INPUT = 0, - KERNEL, - BIAS - }; - - struct Param - { - Stride stride; - Padding padding; - uint32_t multiplier; - Activation activation; - }; - -public: - DepthwiseConv2D(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::DepthwiseConv2D; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_DEPTHWISECONV2D_H__ diff --git a/runtime/neurun/core/include/ir/operation/Dequantize.h b/runtime/neurun/core/include/ir/operation/Dequantize.h deleted file mode 100644 index dfca278cd..000000000 --- a/runtime/neurun/core/include/ir/operation/Dequantize.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_DEQUANTIZE_H__ -#define __NEURUN_IR_OPERATION_DEQUANTIZE_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Dequantize : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Dequantize(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Dequantize; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_DEQUANTIZE_H__ diff --git a/runtime/neurun/core/include/ir/operation/Div.h b/runtime/neurun/core/include/ir/operation/Div.h deleted file mode 100644 index d3e744472..000000000 --- a/runtime/neurun/core/include/ir/operation/Div.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_DIV_H__ -#define __NEURUN_IR_OPERATION_DIV_H__ - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Div : public Operation -{ -public: - enum Input - { - LHS = 0, - RHS - }; - - struct Param - { - Activation activation; - }; - -public: - Div(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Div; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_DIV_H__ diff --git a/runtime/neurun/core/include/ir/operation/EmbeddingLookup.h b/runtime/neurun/core/include/ir/operation/EmbeddingLookup.h deleted file mode 100644 index 968b7b35a..000000000 --- a/runtime/neurun/core/include/ir/operation/EmbeddingLookup.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_EMBEDDING_LOOKUP_H__ -#define __NEURUN_IR_OPERATION_EMBEDDING_LOOKUP_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class EmbeddingLookup : public Operation -{ -public: - enum Input - { - LOOKUPS = 0, - VALUES = 1 - }; - -public: - EmbeddingLookup(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::EmbeddingLookup; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_EMBEDDING_LOOKUP_H__ diff --git a/runtime/neurun/core/include/ir/operation/Exp.h b/runtime/neurun/core/include/ir/operation/Exp.h deleted file mode 100644 index 8e04f3f7f..000000000 --- a/runtime/neurun/core/include/ir/operation/Exp.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_EXP_H__ -#define __NEURUN_IR_OPERATION_EXP_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Exp : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Exp(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Exp; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_EXP_H__ diff --git a/runtime/neurun/core/include/ir/operation/Floor.h b/runtime/neurun/core/include/ir/operation/Floor.h deleted file mode 100644 index ca4cf9881..000000000 --- a/runtime/neurun/core/include/ir/operation/Floor.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_FLOOR_H__ -#define __NEURUN_IR_OPERATION_FLOOR_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Floor : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Floor(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Floor; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_FLOOR_H__ diff --git a/runtime/neurun/core/include/ir/operation/FullyConnected.h b/runtime/neurun/core/include/ir/operation/FullyConnected.h deleted file mode 100644 index 1ffa1318d..000000000 --- a/runtime/neurun/core/include/ir/operation/FullyConnected.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_FULLYCONNECTED_H__ -#define __NEURUN_IR_OPERATION_FULLYCONNECTED_H__ - -#include <memory> - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class FullyConnected : public Operation -{ -public: - enum Input - { - INPUT = 0, - WEIGHT, - BIAS - }; - - struct Param - { - Activation activation; - }; - -public: - FullyConnected(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::FullyConnected; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_FULLYCONNECTED_H__ diff --git a/runtime/neurun/core/include/ir/operation/Gather.h b/runtime/neurun/core/include/ir/operation/Gather.h deleted file mode 100644 index 13540d413..000000000 --- a/runtime/neurun/core/include/ir/operation/Gather.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_GATHER_H__ -#define __NEURUN_IR_OPERATION_GATHER_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Gather : public Operation -{ -public: - enum Input - { - INPUT = 0, - INDICES, - }; - - struct Param - { - int32_t axis; - int32_t rank; - }; - -public: - Gather(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Gather; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_GATHER_H__ diff --git a/runtime/neurun/core/include/ir/operation/HashtableLookup.h b/runtime/neurun/core/include/ir/operation/HashtableLookup.h deleted file mode 100644 index fb6c97607..000000000 --- a/runtime/neurun/core/include/ir/operation/HashtableLookup.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_HASHTABLE_LOOKUP_H__ -#define __NEURUN_IR_OPERATION_HASHTABLE_LOOKUP_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class HashtableLookup : public Operation -{ -public: - enum Input - { - LOOKUPS = 0, - KEYS = 1, - VALUES = 2 - }; - - enum Output - { - OUTPUT = 0, - HITS = 1 - }; - -public: - HashtableLookup(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::HashtableLookup; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_HASHTABLE_LOOKUP_H__ diff --git a/runtime/neurun/core/include/ir/operation/InstanceNorm.h b/runtime/neurun/core/include/ir/operation/InstanceNorm.h deleted file mode 100644 index cbd03ad1f..000000000 --- a/runtime/neurun/core/include/ir/operation/InstanceNorm.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_INSTANCE_NORM_H__ -#define __NEURUN_IR_OPERATION_INSTANCE_NORM_H__ - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class InstanceNorm : public Operation -{ -public: - enum Input - { - INPUT = 0, - GAMMA, - BETA - }; - - struct Param - { - Activation activation; - float epsilon; - }; - -public: - InstanceNorm(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::InstanceNorm; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_INSTANCE_NORM_H__ diff --git a/runtime/neurun/core/include/ir/operation/L2Normalization.h b/runtime/neurun/core/include/ir/operation/L2Normalization.h deleted file mode 100644 index e2c1f4eee..000000000 --- a/runtime/neurun/core/include/ir/operation/L2Normalization.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_L2_NORMALIZATION_H__ -#define __NEURUN_IR_OPERATION_L2_NORMALIZATION_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class L2Normalization : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - struct Param - { - int32_t rank; - }; - -public: - L2Normalization(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::L2Normalization; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_L2_NORMALIZATION_H__ diff --git a/runtime/neurun/core/include/ir/operation/L2Pool2D.h b/runtime/neurun/core/include/ir/operation/L2Pool2D.h deleted file mode 100644 index 6d4d72ee2..000000000 --- a/runtime/neurun/core/include/ir/operation/L2Pool2D.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_L2_POOL_2D_H__ -#define __NEURUN_IR_OPERATION_L2_POOL_2D_H__ - -#include <memory> - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class L2Pool2D : public Operation -{ -public: - enum Input - { - INPUT = 0, - }; - - struct Param - { - Padding padding; - Stride stride; - uint32_t kw; - uint32_t kh; - Activation activation; - }; - -public: - L2Pool2D(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::L2Pool2D; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_L2_POOL_2D_H__ diff --git a/runtime/neurun/core/include/ir/operation/LSTM.h b/runtime/neurun/core/include/ir/operation/LSTM.h deleted file mode 100644 index 2ea09b1b7..000000000 --- a/runtime/neurun/core/include/ir/operation/LSTM.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __NEURUN_IR_OPERATION_LSTM_H__ -#define __NEURUN_IR_OPERATION_LSTM_H__ - -#include "ir/InternalType.h" -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class LSTM : public Operation -{ -public: - enum Input - { - INPUT = 0, - INPUT_TO_INPUT_WEIGHTS = 1, - INPUT_TO_FORGET_WEIGHTS = 2, - INPUT_TO_CELL_WEIGHTS = 3, - INPUT_TO_OUTPUT_WEIGHTS = 4, - RECURRENT_TO_INPUT_WEIGHTS = 5, - RECURRENT_TO_FORGET_WEIGHTS = 6, - RECURRENT_TO_CELL_WEIGHTS = 7, - RECURRENT_TO_OUTPUT_WEIGHTS = 8, - CELL_TO_INPUT_WEIGHTS = 9, - CELL_TO_FORGET_WEIGHTS = 10, - CELL_TO_OUTPUT_WEIGHTS = 11, - INPUT_GATE_BIAS = 12, - FORGET_GATE_BIAS = 13, - CELL_BIAS = 14, - OUTPUT_GATE_BIAS = 15, - PROJECTION_WEIGHTS = 16, - PROJECTION_BIAS = 17, - OUTPUT_STATE_IN = 18, - CELL_STATE_IN = 19, - }; - - enum Output - { - SCRATCH_BUFFER = 0, - OUTPUT_STATE_OUT = 1, - CELL_STATE_OUT = 2, - OUTPUT = 3 - }; - - struct Param - { - Activation activation; - float cell_threshold; - float projection_threshold; - }; - -public: - LSTM(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::LSTM; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_LSTM_H__ diff --git a/runtime/neurun/core/include/ir/operation/LocalResponseNormalization.h b/runtime/neurun/core/include/ir/operation/LocalResponseNormalization.h deleted file mode 100644 index 3fbf2e4ae..000000000 --- a/runtime/neurun/core/include/ir/operation/LocalResponseNormalization.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_LOCAL_RESPONSE_NORMALIZATION_H__ -#define __NEURUN_IR_OPERATION_LOCAL_RESPONSE_NORMALIZATION_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class LocalResponseNormalization : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - int radius; - float bias; - float alpha; - float beta; - }; - -public: - LocalResponseNormalization(const OperandIndexSequence &inputs, - const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::LocalResponseNormalization; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_LOCAL_RESPONSE_NORMALIZATION_H__ diff --git a/runtime/neurun/core/include/ir/operation/LogicalAnd.h b/runtime/neurun/core/include/ir/operation/LogicalAnd.h deleted file mode 100644 index f7b03d62d..000000000 --- a/runtime/neurun/core/include/ir/operation/LogicalAnd.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_LOGICAL_AND_H__ -#define __NEURUN_IR_OPERATION_LOGICAL_AND_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class LogicalAnd : public Operation -{ -public: - enum Input - { - INPUT0 = 0, - INPUT1 = 1, - }; - -public: - LogicalAnd(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::LogicalAnd; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_LOGICAL_AND_H__ diff --git a/runtime/neurun/core/include/ir/operation/LogicalNot.h b/runtime/neurun/core/include/ir/operation/LogicalNot.h deleted file mode 100644 index e689d57b2..000000000 --- a/runtime/neurun/core/include/ir/operation/LogicalNot.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_LOGICAL_NOT_H__ -#define __NEURUN_IR_OPERATION_LOGICAL_NOT_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class LogicalNot : public Operation -{ -public: - enum Input - { - INPUT = 0, - }; - -public: - LogicalNot(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::LogicalNot; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_LOGICAL_NOT_H__ diff --git a/runtime/neurun/core/include/ir/operation/LogicalOr.h b/runtime/neurun/core/include/ir/operation/LogicalOr.h deleted file mode 100644 index fda6b20d7..000000000 --- a/runtime/neurun/core/include/ir/operation/LogicalOr.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_LOGICAL_OR_H__ -#define __NEURUN_IR_OPERATION_LOGICAL_OR_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class LogicalOr : public Operation -{ -public: - enum Input - { - INPUT0 = 0, - INPUT1 = 1, - }; - -public: - LogicalOr(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::LogicalOr; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_LOGICAL_OR_H__ diff --git a/runtime/neurun/core/include/ir/operation/Logistic.h b/runtime/neurun/core/include/ir/operation/Logistic.h deleted file mode 100644 index b23e7ef3f..000000000 --- a/runtime/neurun/core/include/ir/operation/Logistic.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_LOGISTIC_H__ -#define __NEURUN_IR_OPERATION_LOGISTIC_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Logistic : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Logistic(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Logistic; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_LOGISTIC_H__ diff --git a/runtime/neurun/core/include/ir/operation/LowerInfo.h b/runtime/neurun/core/include/ir/operation/LowerInfo.h deleted file mode 100644 index 856976a0c..000000000 --- a/runtime/neurun/core/include/ir/operation/LowerInfo.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_LOWER_INFO_H__ -#define __NEURUN_IR_OPERATION_LOWER_INFO_H__ - -#include <string> - -#include <ir/operand/PermuteFactor.h> - -namespace neurun -{ -namespace backend -{ -class Backend; -} // namespace backend -} // namespace neurun - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class LowerInfo -{ -public: - LowerInfo(const backend::Backend *backend, Layout layout); - const backend::Backend *backend() const { return _permute_factor.backend(); } - Layout layout() const { return _permute_factor.layout(); } - -private: - operand::PermuteFactor _permute_factor; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_LOWER_INFO_H__ diff --git a/runtime/neurun/core/include/ir/operation/Max.h b/runtime/neurun/core/include/ir/operation/Max.h deleted file mode 100644 index 1675f9f72..000000000 --- a/runtime/neurun/core/include/ir/operation/Max.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_MAX_H__ -#define __NEURUN_IR_OPERATION_MAX_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Max : public Operation -{ -public: - enum Input - { - LHS = 0, - RHS - }; - -public: - Max(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Max; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_MAX_H__ diff --git a/runtime/neurun/core/include/ir/operation/MaxPool2D.h b/runtime/neurun/core/include/ir/operation/MaxPool2D.h deleted file mode 100644 index c0f0939aa..000000000 --- a/runtime/neurun/core/include/ir/operation/MaxPool2D.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_MAXPOOL2D_H__ -#define __NEURUN_IR_OPERATION_MAXPOOL2D_H__ - -#include <memory> - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class MaxPool2D : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - uint32_t kh; - uint32_t kw; - Stride stride; - Padding padding; - Activation activation; - }; - -public: - MaxPool2D(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::MaxPool2D; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_MAXPOOL2D_H__ diff --git a/runtime/neurun/core/include/ir/operation/Mean.h b/runtime/neurun/core/include/ir/operation/Mean.h deleted file mode 100644 index cce8de377..000000000 --- a/runtime/neurun/core/include/ir/operation/Mean.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_MEAN_H__ -#define __NEURUN_IR_OPERATION_MEAN_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Mean : public Operation -{ -public: - enum Input - { - INPUT - }; - - struct Param - { - std::vector<int> axes; - bool keep_dims; - int32_t rank; - }; - -public: - Mean(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Mean; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_MEAN_H__ diff --git a/runtime/neurun/core/include/ir/operation/Min.h b/runtime/neurun/core/include/ir/operation/Min.h deleted file mode 100644 index fac901f21..000000000 --- a/runtime/neurun/core/include/ir/operation/Min.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_MIN_H__ -#define __NEURUN_IR_OPERATION_MIN_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Min : public Operation -{ -public: - enum Input - { - LHS = 0, - RHS - }; - -public: - Min(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Min; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_MIN_H__ diff --git a/runtime/neurun/core/include/ir/operation/Mul.h b/runtime/neurun/core/include/ir/operation/Mul.h deleted file mode 100644 index f6cfe2afb..000000000 --- a/runtime/neurun/core/include/ir/operation/Mul.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_MUL_H__ -#define __NEURUN_IR_OPERATION_MUL_H__ - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Mul : public Operation -{ -public: - enum Input - { - LHS = 0, - RHS - }; - - struct Param - { - Activation activation; - }; - -public: - Mul(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Mul; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_MUL_H__ diff --git a/runtime/neurun/core/include/ir/operation/Neg.h b/runtime/neurun/core/include/ir/operation/Neg.h deleted file mode 100644 index ec364f8ad..000000000 --- a/runtime/neurun/core/include/ir/operation/Neg.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_NEG_H__ -#define __NEURUN_IR_OPERATION_NEG_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Neg : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Neg(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Neg; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_NEG_H__ diff --git a/runtime/neurun/core/include/ir/operation/OneHot.h b/runtime/neurun/core/include/ir/operation/OneHot.h deleted file mode 100644 index 5fbc5d45f..000000000 --- a/runtime/neurun/core/include/ir/operation/OneHot.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_ONEHOT_H__ -#define __NEURUN_IR_OPERATION_ONEHOT_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class OneHot : public Operation -{ -public: - enum Input - { - INDICES = 0, - DEPTH = 1, - ON_VALUE = 2, - OFF_VALUE = 3, - }; - - struct Param - { - int axis; - }; - -public: - OneHot(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::OneHot; } - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_ONEHOT_H__ diff --git a/runtime/neurun/core/include/ir/operation/PReLU.h b/runtime/neurun/core/include/ir/operation/PReLU.h deleted file mode 100644 index 8c00c46fd..000000000 --- a/runtime/neurun/core/include/ir/operation/PReLU.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_PRELU_H__ -#define __NEURUN_IR_OPERATION_PRELU_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class PReLU : public Operation -{ -public: - enum Input - { - INPUT = 0, - ALPHA = 1 - }; - -public: - PReLU(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::PReLU; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_PRELU_H__ diff --git a/runtime/neurun/core/include/ir/operation/Pack.h b/runtime/neurun/core/include/ir/operation/Pack.h deleted file mode 100644 index ccf73fe5c..000000000 --- a/runtime/neurun/core/include/ir/operation/Pack.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __NEURUN_IR_OPERATION_PACK_H__ -#define __NEURUN_IR_OPERATION_PACK_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ -class Pack : public Operation -{ -public: - struct Param - { - int32_t num; - int32_t axis; - int32_t rank; - }; - -public: - Pack(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Pack; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; -} // namespace operation -} // namespace ir -} // namespace neurun -#endif // __NEURUN_IR_OPERATION_PACK_H__ diff --git a/runtime/neurun/core/include/ir/operation/Pad.h b/runtime/neurun/core/include/ir/operation/Pad.h deleted file mode 100644 index 8e8304fae..000000000 --- a/runtime/neurun/core/include/ir/operation/Pad.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_PAD_H__ -#define __NEURUN_IR_OPERATION_PAD_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Pad : public Operation -{ -public: - enum Input - { - INPUT = 0, - PAD = 1, - // VALUE = 2 Not allow padding value operand yet - }; - -public: - struct Param - { - int32_t rank; - }; - -public: - Pad(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Pad; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_PAD_H__ diff --git a/runtime/neurun/core/include/ir/operation/Permute.h b/runtime/neurun/core/include/ir/operation/Permute.h deleted file mode 100644 index f91f9571b..000000000 --- a/runtime/neurun/core/include/ir/operation/Permute.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_PERMUTE_H__ -#define __NEURUN_IR_OPERATION_PERMUTE_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace backend -{ -class BackendContext; -} // namespace backend -} // namespace neurun - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Permute : public Operation -{ -public: - enum class Type - { - NHWC_TO_NCHW, - NCHW_TO_NHWC, - COPY - }; - - struct Param - { - const backend::BackendContext *input_backend_ctx; - const backend::BackendContext *output_backend_ctx; - }; - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Permute; } - -public: - Permute(const OperandIndex &input, const OperandIndex &output, - const backend::BackendContext *input_backend_ctx, - const backend::BackendContext *output_backend_ctx, Type type, - DataType data_type = DataType::FLOAT32); - -public: - const Param ¶m() const { return _param; } - DataType getDataType() const { return _dataType; } - Type getPermuteType() const { return _type; } - -private: - Param _param; - Type _type; - DataType _dataType; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_PERMUTE_H__ diff --git a/runtime/neurun/core/include/ir/operation/RNN.h b/runtime/neurun/core/include/ir/operation/RNN.h deleted file mode 100644 index d812a6fc3..000000000 --- a/runtime/neurun/core/include/ir/operation/RNN.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __NEURUN_IR_OPERATION_RNN_H__ -#define __NEURUN_IR_OPERATION_RNN_H__ - -#include "ir/InternalType.h" -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class RNN : public Operation -{ -public: - enum Input - { - INPUT = 0, - WEIGHTS = 1, - RECURRENT_WEIGHTS = 2, - BIAS = 3, - HIDDEN_STATE_IN = 4 - }; - - enum Output - { - OUTPUT = 0, - HIDDEN_STATE_OUT = 1 - }; - - struct Param - { - Activation activation; - }; - -public: - RNN(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::RNN; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_RNN_H__ diff --git a/runtime/neurun/core/include/ir/operation/RSQRT.h b/runtime/neurun/core/include/ir/operation/RSQRT.h deleted file mode 100644 index 33648555a..000000000 --- a/runtime/neurun/core/include/ir/operation/RSQRT.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_RSQRT_H__ -#define __NEURUN_IR_OPERATION_RSQRT_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class RSQRT : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - RSQRT(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::RSQRT; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_RSQRT_H__ diff --git a/runtime/neurun/core/include/ir/operation/ReLU.h b/runtime/neurun/core/include/ir/operation/ReLU.h deleted file mode 100644 index b6c7fdf01..000000000 --- a/runtime/neurun/core/include/ir/operation/ReLU.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_RELU_H__ -#define __NEURUN_IR_OPERATION_RELU_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ReLU : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - ReLU(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ReLU; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_RELU_H__ diff --git a/runtime/neurun/core/include/ir/operation/ReLU1.h b/runtime/neurun/core/include/ir/operation/ReLU1.h deleted file mode 100644 index ac45fda05..000000000 --- a/runtime/neurun/core/include/ir/operation/ReLU1.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_ReLU1_H__ -#define __NEURUN_IR_OPERATION_ReLU1_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ReLU1 : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - ReLU1(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ReLU1; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_ReLU1_H__ diff --git a/runtime/neurun/core/include/ir/operation/ReLU6.h b/runtime/neurun/core/include/ir/operation/ReLU6.h deleted file mode 100644 index 4d98dad55..000000000 --- a/runtime/neurun/core/include/ir/operation/ReLU6.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_ReLU6_H__ -#define __NEURUN_IR_OPERATION_ReLU6_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ReLU6 : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - ReLU6(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ReLU6; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_ReLU6_H__ diff --git a/runtime/neurun/core/include/ir/operation/ReduceMax.h b/runtime/neurun/core/include/ir/operation/ReduceMax.h deleted file mode 100644 index da4d7c4cc..000000000 --- a/runtime/neurun/core/include/ir/operation/ReduceMax.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_REDUCEMAX_H__ -#define __NEURUN_IR_OPERATION_REDUCEMAX_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ReduceMax : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - std::vector<int> axes; - bool keep_dims; - int32_t rank; - }; - -public: - ReduceMax(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ReduceMax; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_REDUCEMAX_H__ diff --git a/runtime/neurun/core/include/ir/operation/ReduceMin.h b/runtime/neurun/core/include/ir/operation/ReduceMin.h deleted file mode 100644 index f79fdeaea..000000000 --- a/runtime/neurun/core/include/ir/operation/ReduceMin.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_REDUCEMIN_H__ -#define __NEURUN_IR_OPERATION_REDUCEMIN_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ReduceMin : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - std::vector<int> axes; - bool keep_dims; - int32_t rank; - }; - -public: - ReduceMin(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ReduceMin; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_REDUCEMIN_H__ diff --git a/runtime/neurun/core/include/ir/operation/ReduceSum.h b/runtime/neurun/core/include/ir/operation/ReduceSum.h deleted file mode 100644 index b5ab8ee75..000000000 --- a/runtime/neurun/core/include/ir/operation/ReduceSum.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_REDUCE_SUM_H__ -#define __NEURUN_IR_OPERATION_REDUCE_SUM_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ReduceSum : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - std::vector<int> axes; - bool keep_dims; - int32_t rank; - }; - -public: - ReduceSum(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ReduceSum; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_REDUCE_SUM_H__ diff --git a/runtime/neurun/core/include/ir/operation/Reshape.h b/runtime/neurun/core/include/ir/operation/Reshape.h deleted file mode 100644 index e476d7fe1..000000000 --- a/runtime/neurun/core/include/ir/operation/Reshape.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_RESHAPE_H__ -#define __NEURUN_IR_OPERATION_RESHAPE_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Reshape : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Reshape(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Reshape; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_RESHAPE_H__ diff --git a/runtime/neurun/core/include/ir/operation/ResizeBilinear.h b/runtime/neurun/core/include/ir/operation/ResizeBilinear.h deleted file mode 100644 index d937da00c..000000000 --- a/runtime/neurun/core/include/ir/operation/ResizeBilinear.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_RESIZE_BILINEAR_H__ -#define __NEURUN_IR_OPERATION_RESIZE_BILINEAR_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class ResizeBilinear : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - int32_t height_out; - int32_t width_out; - }; - -public: - ResizeBilinear(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::ResizeBilinear; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_RESIZE_BILINEAR_H__ diff --git a/runtime/neurun/core/include/ir/operation/SQRT.h b/runtime/neurun/core/include/ir/operation/SQRT.h deleted file mode 100644 index 5e21315b4..000000000 --- a/runtime/neurun/core/include/ir/operation/SQRT.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SQRT_H__ -#define __NEURUN_IR_OPERATION_SQRT_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class SQRT : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - SQRT(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::SQRT; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SQRT_H__ diff --git a/runtime/neurun/core/include/ir/operation/Slice.h b/runtime/neurun/core/include/ir/operation/Slice.h deleted file mode 100644 index 4b79f42a6..000000000 --- a/runtime/neurun/core/include/ir/operation/Slice.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SLICE_H__ -#define __NEURUN_IR_OPERATION_SLICE_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Slice : public Operation -{ -public: - enum Input - { - INPUT = 0, - BEGINS = 1, - SIZES = 2, - }; - -public: - struct Param - { - int32_t rank; - }; - -public: - Slice(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Slice; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SLICE_H__ diff --git a/runtime/neurun/core/include/ir/operation/Softmax.h b/runtime/neurun/core/include/ir/operation/Softmax.h deleted file mode 100644 index a3e896fed..000000000 --- a/runtime/neurun/core/include/ir/operation/Softmax.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SOFTMAX_H__ -#define __NEURUN_IR_OPERATION_SOFTMAX_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Softmax : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - float beta; - }; - -public: - Softmax(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Softmax; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SOFTMAX_H__ diff --git a/runtime/neurun/core/include/ir/operation/SpaceToBatchND.h b/runtime/neurun/core/include/ir/operation/SpaceToBatchND.h deleted file mode 100644 index 4ca0978b0..000000000 --- a/runtime/neurun/core/include/ir/operation/SpaceToBatchND.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SPACE_TO_BATCH_ND_H__ -#define __NEURUN_IR_OPERATION_SPACE_TO_BATCH_ND_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class SpaceToBatchND : public Operation -{ -public: - enum Input - { - INPUT = 0, - BLOCK_SIZE = 1, - PADDINGS = 2 - }; - -public: - SpaceToBatchND(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::SpaceToBatchND; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SPACE_TO_BATCH_ND_H__ diff --git a/runtime/neurun/core/include/ir/operation/SpaceToDepth.h b/runtime/neurun/core/include/ir/operation/SpaceToDepth.h deleted file mode 100644 index 9e77bdae0..000000000 --- a/runtime/neurun/core/include/ir/operation/SpaceToDepth.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SPACE_TO_DEPTH_H__ -#define __NEURUN_IR_OPERATION_SPACE_TO_DEPTH_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class SpaceToDepth : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - std::int32_t block_size; - }; - -public: - SpaceToDepth(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::SpaceToDepth; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SPACE_TO_DEPTH_H__ diff --git a/runtime/neurun/core/include/ir/operation/Split.h b/runtime/neurun/core/include/ir/operation/Split.h deleted file mode 100644 index 7a2749e84..000000000 --- a/runtime/neurun/core/include/ir/operation/Split.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __NEURUN_IR_OPERATION_SPLIT_H__ -#define __NEURUN_IR_OPERATION_SPLIT_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ -class Split : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - int axis; - int num_splits; - int rank; - }; - -public: - Split(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Split; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; -} // namespace operation -} // namespace ir -} // namespace neurun -#endif // __NEURUN_IR_OPERATION_SPLIT_H__ diff --git a/runtime/neurun/core/include/ir/operation/SquaredDifference.h b/runtime/neurun/core/include/ir/operation/SquaredDifference.h deleted file mode 100644 index 46df419f5..000000000 --- a/runtime/neurun/core/include/ir/operation/SquaredDifference.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SQUARED_DIFFERENCE_H__ -#define __NEURUN_IR_OPERATION_SQUARED_DIFFERENCE_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class SquaredDifference : public Operation -{ -public: - enum Input - { - LHS = 0, - RHS - }; - -public: - SquaredDifference(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::SquaredDifference; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SQUARED_DIFFERENCE_H__ diff --git a/runtime/neurun/core/include/ir/operation/Squeeze.h b/runtime/neurun/core/include/ir/operation/Squeeze.h deleted file mode 100644 index d27b315b5..000000000 --- a/runtime/neurun/core/include/ir/operation/Squeeze.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SQUEEZE_H__ -#define __NEURUN_IR_OPERATION_SQUEEZE_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Squeeze : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - // Please see tensorflow/lite/c/builtin_op_data.h and squeeze.cc. - // tensorflow lite supports only for ndim <= 8. - int dims[8]; - int ndim; - }; - -public: - Squeeze(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Squeeze; } - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SQUEEZE_H__ diff --git a/runtime/neurun/core/include/ir/operation/StridedSlice.h b/runtime/neurun/core/include/ir/operation/StridedSlice.h deleted file mode 100644 index 868bda72c..000000000 --- a/runtime/neurun/core/include/ir/operation/StridedSlice.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_STRIDED_SLICE_H__ -#define __NEURUN_IR_OPERATION_STRIDED_SLICE_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class StridedSlice : public Operation -{ -public: - enum Input - { - INPUT = 0, - STARTS = 1, - ENDS = 2, - STRIDES = 3 - }; - - struct Param - { - std::int32_t begin_mask; - std::int32_t end_mask; - std::int32_t shrink_axis_mask; - int32_t rank; - }; - -public: - StridedSlice(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::StridedSlice; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_STRIDED_SLICE_H__ diff --git a/runtime/neurun/core/include/ir/operation/Sub.h b/runtime/neurun/core/include/ir/operation/Sub.h deleted file mode 100644 index e5850af8c..000000000 --- a/runtime/neurun/core/include/ir/operation/Sub.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_SUB_H__ -#define __NEURUN_IR_OPERATION_SUB_H__ - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Sub : public Operation -{ -public: - enum Input - { - LHS = 0, - RHS - }; - - struct Param - { - Activation activation; - }; - -public: - Sub(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Sub; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_SUB_H__ diff --git a/runtime/neurun/core/include/ir/operation/Tanh.h b/runtime/neurun/core/include/ir/operation/Tanh.h deleted file mode 100644 index 814ceec5a..000000000 --- a/runtime/neurun/core/include/ir/operation/Tanh.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_TANH_H__ -#define __NEURUN_IR_OPERATION_TANH_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Tanh : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - -public: - Tanh(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Tanh; } -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_TANH_H__ diff --git a/runtime/neurun/core/include/ir/operation/TopKV2.h b/runtime/neurun/core/include/ir/operation/TopKV2.h deleted file mode 100644 index a6971e843..000000000 --- a/runtime/neurun/core/include/ir/operation/TopKV2.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_TOPK_V2_H__ -#define __NEURUN_IR_OPERATION_TOPK_V2_H__ - -#include <memory> - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class TopKV2 : public Operation -{ -public: - enum Input - { - INPUT - }; - - enum Output - { - OUTPUT_VALUES = 0, - OUTPUT_INDICES, - }; - - struct Param - { - std::int32_t k; - }; - -public: - TopKV2(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::TopKV2; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_TOPK_V2_H__ diff --git a/runtime/neurun/core/include/ir/operation/Transpose.h b/runtime/neurun/core/include/ir/operation/Transpose.h deleted file mode 100644 index b1e08a506..000000000 --- a/runtime/neurun/core/include/ir/operation/Transpose.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_TRANSPOSE_H__ -#define __NEURUN_IR_OPERATION_TRANSPOSE_H__ - -#include "ir/Operation.h" - -#include <utility> - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class Transpose : public Operation -{ -public: - enum Input - { - INPUT = 0, // for an n-D tensor, specifying the tensor to be transposed. - }; - - struct Param - { - std::vector<int> perm; - int32_t rank; - }; - -public: - Transpose(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Transpose; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_TRANSPOSE_H__ diff --git a/runtime/neurun/core/include/ir/operation/TransposeConv.h b/runtime/neurun/core/include/ir/operation/TransposeConv.h deleted file mode 100644 index a561db4e4..000000000 --- a/runtime/neurun/core/include/ir/operation/TransposeConv.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_IR_OPERATION_TRANSPOSE_CONV_H__ -#define __NEURUN_IR_OPERATION_TRANSPOSE_CONV_H__ - -#include <memory> - -#include "ir/Operation.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ - -class TransposeConv : public Operation -{ -public: - enum Input - { - OUTPUT_SHAPE = 0, - KERNEL, - INPUT - }; - - struct Param - { - Padding padding; - Stride stride; - }; - -public: - TransposeConv(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::TransposeConv; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; - -} // namespace operation -} // namespace ir -} // namespace neurun - -#endif // __NEURUN_IR_OPERATION_TRANSPOSE_CONV_H__ diff --git a/runtime/neurun/core/include/ir/operation/Unpack.h b/runtime/neurun/core/include/ir/operation/Unpack.h deleted file mode 100644 index fa698d3af..000000000 --- a/runtime/neurun/core/include/ir/operation/Unpack.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef __NEURUN_IR_OPERATION_UNPACK_H__ -#define __NEURUN_IR_OPERATION_UNPACK_H__ - -#include "ir/Operation.h" - -namespace neurun -{ -namespace ir -{ -namespace operation -{ -class Unpack : public Operation -{ -public: - enum Input - { - INPUT = 0 - }; - - struct Param - { - int32_t num; - int32_t axis; - int32_t rank; - }; - -public: - Unpack(const OperandIndexSequence &inputs, const OperandIndexSequence &outputs, - const Param ¶m); - -public: - void accept(OperationVisitor &v) const override; - OpCode opcode() const final { return OpCode::Unpack; } - -public: - const Param ¶m() const { return _param; } - -private: - Param _param; -}; -} // namespace operation -} // namespace ir -} // namespace neurun -#endif // __NEURUN_IR_OPERATION_UNPACK_H__ diff --git a/runtime/neurun/core/include/util/Config.lst b/runtime/neurun/core/include/util/Config.lst deleted file mode 100644 index 046a0c4a8..000000000 --- a/runtime/neurun/core/include/util/Config.lst +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef CONFIG -#error Define CONFIG before including this file -#endif - -// Name | Type | Default -CONFIG(GRAPH_DOT_DUMP , int , "0") -CONFIG(BACKENDS , std::string , "acl_cl;acl_neon;cpu;srcn") -CONFIG(OP_BACKEND_ALLOPS , std::string , "") -CONFIG(OP_BACKEND_MAP , std::string , "") -CONFIG(DISABLE_COMPILE , bool , "0") -CONFIG(NEURUN_LOG_ENABLE , bool , "0") -CONFIG(CPU_MEMORY_PLANNER , std::string , "WIC") -CONFIG(EXECUTOR , std::string , "Linear") -CONFIG(ACL_LAYOUT , std::string , "none") -CONFIG(NCNN_LAYOUT , std::string , "NCHW") -CONFIG(PROFILING_MODE , bool , "0") -CONFIG(USE_SCHEDULER , bool , "0") -CONFIG(SUBG_MAX_NODE , int , "0") -CONFIG(TRACE_FILEPATH , std::string , "") - -// Auto-generate all operations - -#define OP(InternalName) \ - CONFIG(OP_BACKEND_ ## InternalName, std::string, "") -#include "ir/Operations.lst" -#undef OP - diff --git a/runtime/neurun/core/include/util/ConfigSource.h b/runtime/neurun/core/include/util/ConfigSource.h deleted file mode 100644 index b1fa9a87d..000000000 --- a/runtime/neurun/core/include/util/ConfigSource.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_CONFIG_SOURCE_H__ -#define __NEURUN_UTIL_CONFIG_SOURCE_H__ - -#include <memory> - -#include "IConfigSource.h" - -namespace neurun -{ -namespace util -{ - -void config_source(std::unique_ptr<IConfigSource> &&source); - -bool getConfigBool(const std::string &key); -int getConfigInt(const std::string &key); -std::string getConfigString(const std::string &key); - -} // namespace util -} // namespace neurun - -namespace neurun -{ -namespace util -{ -namespace config -{ - -#define CONFIG(Name, Type, Default) extern const char *Name; - -#include "Config.lst" - -#undef CONFIG - -} // namespace config -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_CONFIG_SOURCE_H__ diff --git a/runtime/neurun/core/include/util/Coordinates.h b/runtime/neurun/core/include/util/Coordinates.h deleted file mode 100644 index 67947138f..000000000 --- a/runtime/neurun/core/include/util/Coordinates.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_COORDINATES_H__ -#define __NEURUN_UTIL_COORDINATES_H__ - -#include <cassert> -#include <stdint.h> -#include <vector> - -namespace neurun -{ -namespace util -{ - -/** - * @brief Class to represent position(offset) of tensor.\n - * Assume that the front is higher dimensional. - * i.g. N: 0, C: 1, H: 2, W: 3 for NCHW layout - */ -class Coordinates final -{ -public: - static constexpr size_t num_max_dimensions = 4; - -public: - /** - * @brief Construct a new Coordinates object - * @param[in] init The initialzer_list with coordinates - * @return - */ - Coordinates(std::initializer_list<int32_t> init) : _coordinates{init} - { - assert(init.size() <= num_max_dimensions); - } - -public: - /** - * @brief Set the coordinate of one of the coordinates. - * - * @param[in] dimension Dimension for which the coordinate is set. - * @param[in] Coordinate Coordinate to be set for the dimension. - */ - void set(size_t dimension, int32_t coordinate) - { - assert(dimension < num_max_dimensions); - if (dimension >= _coordinates.size()) - { - _coordinates.resize(dimension + 1, 0); - } - _coordinates[dimension] = coordinate; - } - -public: - /** - * @brief Return size of coordinates - * - * @return size of coordinates - */ - size_t size() const { return _coordinates.size(); } - -public: - int32_t operator[](size_t dimension) const - { - assert(dimension < _coordinates.size()); - return _coordinates[dimension]; - } - -public: - /** - * @brief begin() of const_iterator for this class - * - * @return The first iterator of the coordinates - */ - std::vector<int32_t>::const_iterator begin() const { return _coordinates.begin(); } - /** - * @brief end() of const_iterator for this class - * - * @return The last iterator of the coordinates - */ - std::vector<int32_t>::const_iterator end() const { return _coordinates.end(); } - -private: - std::vector<int32_t> _coordinates; -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_COORDINATES_H__ diff --git a/runtime/neurun/core/include/util/EnvConfigSource.h b/runtime/neurun/core/include/util/EnvConfigSource.h deleted file mode 100644 index 77be15c4e..000000000 --- a/runtime/neurun/core/include/util/EnvConfigSource.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_ENV_CONFIG_SOURCE_H__ -#define __NEURUN_UTIL_ENV_CONFIG_SOURCE_H__ - -#include <unordered_map> - -#include "util/GeneralConfigSource.h" - -namespace neurun -{ -namespace util -{ - -class EnvConfigSource final : public GeneralConfigSource -{ -public: - std::string get(const std::string &key) const override; - -private: - std::unordered_map<std::string, std::string> _default_attributes; -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_ENV_CONFIG_SOURCE_H__ diff --git a/runtime/neurun/core/include/util/EventCollectorGlobal.h b/runtime/neurun/core/include/util/EventCollectorGlobal.h deleted file mode 100644 index 15e40844e..000000000 --- a/runtime/neurun/core/include/util/EventCollectorGlobal.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_EVENT_COLLECTOR_GLOBAL_H__ -#define __NEURUN_UTIL_EVENT_COLLECTOR_GLOBAL_H__ - -#include "misc/EventRecorder.h" -#include "misc/EventCollector.h" - -namespace neurun -{ -namespace util -{ - -/** - * @brief Singleton class for event collection from anywhere in code - * - */ -class EventCollectorGlobal -{ -public: - /** - * @brief Get the singleton object of this class - * - * @return EventCollectorGlobal& Singleton object - */ - static EventCollectorGlobal &get(); - -public: - /** - * @brief Getter for event collector object - * - * @return EventCollector& Collector object - */ - EventCollector &collector() { return _collector; } - -private: - EventCollectorGlobal(); - ~EventCollectorGlobal(); - -private: - EventRecorder _recorder; - EventCollector _collector; -}; - -/** - * @brief Helper class for emitting duration event which is handled automatically with ctor/dtor - * - */ -class EventDurationBlock -{ -public: - /** - * @brief Raise a duration event with type of BEGIN - * - * @param tag A label for the duration event - */ - EventDurationBlock(const std::string &tag); - /** - * @brief Raise a duration event with type of END - * - */ - ~EventDurationBlock(); - -private: - std::string _tag; -}; - -/** - * @brief Helper class for emitting duration event which is handled manually - * - * Usage: - * { - * ... - * EventDurationManual duration("some tag"); - * duration.begin(); - * ... - * ... // Code for duration - * ... - * duration.end(); - * } - * - */ -class EventDurationManual -{ -public: - /** - * @brief Construct a new Event Duration Manual object - * - * @param tag A label for the duration object - */ - EventDurationManual(const std::string &tag); - /** - * @brief Destroy the Event Duration Manual object - * - */ - ~EventDurationManual(); - - /** - * @brief Raise a duration event with type of BEGIN - * - */ - void begin(); - /** - * @brief Raise a duration event with type of END - * - */ - void end(); - -private: - std::string _tag; - bool _pair; -}; - -} // namespace util -} // namespace neurun - -/** - * Helper Macro Definitions - * - * HOW TO USE - * - * void f(args) - * { - * EVENT_DURATION_FUNCTION(); - * ... - * if(cond) - * { - * EVENT_DURATION_REGION("if branch"); - * ... - * } - * ... - * } - */ - -#define EVENT_DURATION_FUNCTION() \ - ::neurun::util::EventDurationBlock __event_duration__##__LINE__ { __FUNCTION__ } - -#define EVENT_DURATION_REGION(tag) \ - ::neurun::util::EventDurationBlock __event_duration__##__LINE__ { tag } - -#endif // __NEURUN_UTIL_EVENT_COLLECTOR_GLOBAL_H__ diff --git a/runtime/neurun/core/include/util/GeneralConfigSource.h b/runtime/neurun/core/include/util/GeneralConfigSource.h deleted file mode 100644 index 04e3332b3..000000000 --- a/runtime/neurun/core/include/util/GeneralConfigSource.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_GLOBAL_CONFIG_SOURCE_H__ -#define __NEURUN_UTIL_GLOBAL_CONFIG_SOURCE_H__ - -#include <unordered_map> - -#include "util/IConfigSource.h" - -namespace neurun -{ -namespace util -{ - -class GeneralConfigSource : public IConfigSource -{ -public: - GeneralConfigSource() = default; - - std::string get(const std::string &key) const override; - void set(const std::string &key, const std::string &val); - -private: - std::unordered_map<std::string, std::string> _map; -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_GLOBAL_CONFIG_SOURCE_H__ diff --git a/runtime/neurun/core/include/util/IConfigSource.h b/runtime/neurun/core/include/util/IConfigSource.h deleted file mode 100644 index a52d87097..000000000 --- a/runtime/neurun/core/include/util/IConfigSource.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_I_CONFIG_SOURCE_H__ -#define __NEURUN_UTIL_I_CONFIG_SOURCE_H__ - -#include <string> - -namespace neurun -{ -namespace util -{ - -struct IConfigSource -{ - /** - * @brief Destroy the IConfigSource object - */ - virtual ~IConfigSource() = default; - - /** - * @brief get the value for the matching key - * - * @param key string key to search - * @return string value associated with the key - */ - virtual std::string get(const std::string &key) const = 0; -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_I_CONFIG_SOURCE_H__ diff --git a/runtime/neurun/core/include/util/ITimer.h b/runtime/neurun/core/include/util/ITimer.h deleted file mode 100644 index 79ecdd0ca..000000000 --- a/runtime/neurun/core/include/util/ITimer.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_ITIMER_H__ -#define __NEURUN_UTIL_ITIMER_H__ - -#include <chrono> - -namespace neurun -{ -namespace util -{ - -class ITimer -{ -public: - virtual void handleBegin() = 0; - virtual void handleEnd() = 0; - int getTime() { return _timer_res; }; - - virtual ~ITimer() = default; - -protected: - int _timer_res{0}; -}; - -class CPUTimer : public ITimer -{ -public: - void handleBegin() override { _start_time = std::chrono::steady_clock::now(); }; - - void handleEnd() override - { - const auto end_time = std::chrono::steady_clock::now(); - _timer_res = - std::chrono::duration_cast<std::chrono::microseconds>(end_time - _start_time).count(); - }; - -private: - std::chrono::steady_clock::time_point _start_time; // in microseconds -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_ITIMER_H__ diff --git a/runtime/neurun/core/include/util/Index.h b/runtime/neurun/core/include/util/Index.h deleted file mode 100644 index bd8eeb38c..000000000 --- a/runtime/neurun/core/include/util/Index.h +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_INDEX_H__ -#define __NEURUN_UTIL_INDEX_H__ - -#include <functional> -#include <limits> -#include <stdint.h> - -namespace neurun -{ -namespace util -{ - -/** - * @brief A wrapper class for unsigned integral Index - * NOTE : Max value of the underlying type is used as the invalid value - * - * @tparam T Underlying type. Must be unsigned integral type otherwise its behavior is undefined. - * @tparam DummyTag Dummy type to distinguish types with a same underlying type. Using an opaque - * type is recommended. - */ -template <typename T, typename DummyTag> class Index -{ -private: - static const T UNDEFINED = std::numeric_limits<T>::max(); - -public: - /** - * @brief Construct a new Index object - */ - explicit Index(void) : _index{UNDEFINED} {} - /** - * @brief Construct a new Index object with a value in the underlying type - * - * @param o Value in the underlying type - */ - explicit Index(const T o) : _index{o} {} - /** - * @brief Copy Constructor - * - * @param o Object to be copied - */ - Index(const Index &o) = default; - - /** - * @brief Assign a value in the underlying time - * - * @param o Value in the underlying type - * @return Index& Reference of this pointer - */ - Index &operator=(const T o) - { - _index = o; - return *this; - } - - /** - * @brief Copy assignment operator - * - * @param o Object to be copied - * @return Index& Reference of this pointer - */ - Index &operator=(const Index &o) = default; - - /** - * @brief Equality operator - * - * @param o The other value in the underlying type to compare - * @return true if underlying value is the same, false otherwise - */ - bool operator==(T o) const { return _index == o; } - /** - * @brief Equality operator - * - * @param o The other object to compare - * @return true if underlying value is the same, false otherwise - */ - bool operator==(const Index &o) const { return _index == o._index; } - /** - * @brief Inquality operator - * - * @param o The other value in the underlying type to compare - * @return true if underlying value is different, false otherwise - */ - bool operator!=(T o) const { return !(*this == o); } - /** - * @brief Inquality operator - * - * @param o The other object to compare - * @return true if underlying value is different, false otherwise - */ - bool operator!=(const Index &o) const { return !(*this == o); } - - /** - * @brief Post increment operator - * - * @return Index Index before increment - */ - Index operator++(int) - { - Index temp = *this; - _index++; - return temp; - } - - /** - * @brief Check whether the value is valid or not - * - * @return true if valid, false otherwise - */ - bool valid() const { return _index != UNDEFINED; } - /** - * @brief Return underlying value - * - * @return T Underlying value - */ - T value() const { return _index; } - -private: - T _index; -}; - -} // namespace util -} // namespace neurun - -namespace std -{ - -template <typename T, typename Tag> struct hash<::neurun::util::Index<T, Tag>> -{ - size_t operator()(const ::neurun::util::Index<T, Tag> &index) const noexcept - { - return hash<T>()(index.value()); - } -}; - -} // namespace std - -#endif // __NEURUN_UTIL_INDEX_H__ diff --git a/runtime/neurun/core/include/util/ObjectManager.h b/runtime/neurun/core/include/util/ObjectManager.h deleted file mode 100644 index fd2c3f295..000000000 --- a/runtime/neurun/core/include/util/ObjectManager.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_OBJECT_MANAGER_H__ -#define __NEURUN_UTIL_OBJECT_MANAGER_H__ - -#include <unordered_map> -#include <memory> - -namespace neurun -{ -namespace util -{ - -/** - * @brief Class that owns objects and maps them with indices as a handle for them - * - */ -template <typename Index, typename Object> class ObjectManager -{ -public: - ObjectManager() : _index_count{0u} {} - -public: - /** - * @brief Create an object with args and put it in the container with a new Index for that - * - * @param[in] args Arguments for creating Operand object - * @return Created index that is associated to the object - */ - template <class... Args> Index emplace(Args &&... args) - { - auto index = generateIndex(); - _objects.emplace(index, nnfw::cpp14::make_unique<Object>(std::forward<Args>(args)...)); - return index; - } - - /** - * @brief Put object in the container with a new Index for that - * - * @param[in] object Object to be pushed - * @return Created index that is associated to the object - */ - Index push(std::unique_ptr<Object> &&object) - { - auto index = generateIndex(); - _objects.emplace(index, std::move(object)); - return index; - } - - /** - * @brief Remove the object that is associated with the given index - * - * @param[in] index Index of the object to be removed - * @return N/A - */ - void remove(const Index &index) { _objects.erase(index); }; - - /** - * @brief Get the object that is associated with the given index - * - * @param[in] index Index of the object to be returned - * @return Object - */ - const Object &at(const Index &index) const { return *(_objects.at(index)); } - /** - * @brief Get the object that is associated with the given index - * - * @param[in] index Index of the object to be returned - * @return Object - */ - Object &at(const Index &index) { return *(_objects.at(index)); } - /** - * @brief Get the object that is associated with the given index - * - * @param[in] index Index of the object to be returned - * @return true if such entry exists otherwise false - */ - bool exist(const Index &index) const - { - auto it = _objects.find(index); - return it != _objects.end(); - } - /** - * @brief Iterate over the container with given function - * - * @param[in] fn Function to be run for every container entry - * @return N/A - */ - void iterate(const std::function<void(const Index &, const Object &)> &fn) const - { - for (const auto &e : _objects) - { - fn(e.first, *e.second); - } - } - /** - * @brief Iterate over the container with given function - * - * @param[in] fn Function to be run for every container entry - * @return N/A - */ - void iterate(const std::function<void(const Index &, Object &)> &fn) - { - // TODO Remove this workaround - // This implementation is a workaround in case of adding operands while iteration - std::list<Index> l; - - for (auto &e : _objects) - { - l.push_back(e.first); - } - - for (auto index : l) - { - fn(index, *_objects[index]); - } - } - -private: - Index generateIndex() { return Index{_index_count++}; } - -private: - std::unordered_map<Index, std::unique_ptr<Object>> _objects; - uint32_t _index_count; -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_OBJECT_MANAGER_H__ diff --git a/runtime/neurun/core/include/util/Padding.h b/runtime/neurun/core/include/util/Padding.h deleted file mode 100644 index 3c707b873..000000000 --- a/runtime/neurun/core/include/util/Padding.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_PADDING_H__ -#define __NEURUN_UTIL_PADDING_H__ - -#include <stdint.h> - -#include "ir/Shape.h" -#include "ir/InternalType.h" - -namespace neurun -{ -namespace util -{ - -ir::ExplicitPadding validPadding(void); -ir::ExplicitPadding samePadding(const ir::FeatureShape &ifm_shape, - const ir::FeatureShape &ofm_shape, const ir::Stride &stride, - uint32_t kw, uint32_t kh); -ir::ExplicitPadding calculatePadding(const ir::Padding &padding, const ir::FeatureShape &ifm_shape, - const ir::FeatureShape &ofm_shape, const ir::Stride &stride, - uint32_t kw, uint32_t kh); - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_PADDING_H__ diff --git a/runtime/neurun/core/include/util/Set.h b/runtime/neurun/core/include/util/Set.h deleted file mode 100644 index 13213511d..000000000 --- a/runtime/neurun/core/include/util/Set.h +++ /dev/null @@ -1,166 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file Set.h - * @brief This file contains neurun::util::Set class - * @ingroup COM_AI_RUNTIME - */ - -#ifndef __NEURUN_UTIL_SET_H__ -#define __NEURUN_UTIL_SET_H__ - -#include <cassert> -#include <unordered_set> - -namespace neurun -{ -namespace util -{ - -/** - * @brief Class for set of custom element - & @tparam Element Key type of Set - */ -template <typename Element> class Set -{ -public: - /** - * @brief Construct default Set object. - */ - Set() = default; - /** - * @brief Construct Set object by copy semantics. - */ - Set(const Set<Element> &) = default; - /** - * @brief Construct move Set object by move semantics. - */ - Set(Set<Element> &&) = default; - -public: - /** - * @brief Add a given element to the set - * - * @param e Element added - */ - void add(const Element &e) { _set.insert(e); } - /** - * @brief remove a given element from the set - * - * @param e Element removed - */ - void remove(const Element &e) { _set.erase(e); } - /** - * @brief Get size of the set - * - * @return The size of the set - */ - uint32_t size() const { return static_cast<uint32_t>(_set.size()); } - /** - * @brief Get whether the set is empty - * - * @return Whether the set is empty - */ - bool empty() const { return _set.empty(); } - /** - * @brief Get whether a given element exists in the set - * - * @param e A given element - * - * @return Whether a given element exists in the set - */ - bool contains(const Element &e) const { return _set.find(e) != _set.end(); } - /** - * @brief Get first element of the set - * - * @return first element of the set - */ - const Element &getOnlyElement() const - { - assert(_set.size() == 1u); - return *_set.begin(); - } - -public: - /** - * @brief operator overloading function for `|` - * - * @return A set with two sets combined - */ - Set<Element> operator|(const Set<Element> &other) const // Union - { - auto ret = *this; - for (auto e : other) - { - ret.add(e); - } - return ret; - } - /** - * @brief operator overloading function for `&` - * - * @return A set of elements that overlap in two sets - */ - Set<Element> operator&(const Set<Element> &other) const // Intersect - { - Set<Element> ret; - for (auto e : other) - { - if (contains(e)) - { - ret.add(e); - } - } - return ret; - } - /** - * @brief operator overloading function for `-` - * - * @return A set of subtracted from another set - */ - Set<Element> operator-(const Set<Element> &other) const // Minus - { - auto ret = *this; - for (auto e : other) - { - ret.remove(e); - } - return ret; - } - -public: - /** - * @brief begin() of const_iterator for this class - * - * @return The first iterator of the set - */ - typename std::unordered_set<Element>::const_iterator begin() const { return _set.begin(); } - /** - * @brief end() of const_iterator for this class - * - * @return The last iterator of the set - */ - typename std::unordered_set<Element>::const_iterator end() const { return _set.end(); } - -private: - std::unordered_set<Element> _set; -}; - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_SET_H__ diff --git a/runtime/neurun/core/include/util/ShapeInference.h b/runtime/neurun/core/include/util/ShapeInference.h deleted file mode 100644 index 097d61643..000000000 --- a/runtime/neurun/core/include/util/ShapeInference.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_GRAPH_SHAPE_INFERENCE_H__ -#define __NEURUN_GRAPH_SHAPE_INFERENCE_H__ - -#include "ir/operation/AvgPool2D.h" -#include "ir/operation/Concat.h" -#include "ir/operation/MaxPool2D.h" -#include "ir/operation/Conv2D.h" -#include "ir/operation/DepthwiseConv2D.h" -#include "ir/Operands.h" -#include "ir/Index.h" -#include "ir/Layout.h" - -namespace neurun -{ -namespace shape_inference -{ - -using Shapes = std::vector<ir::Shape>; - -Shapes inferEltwiseShape(const ir::Shape &lhs_shape, const ir::Shape &rhs_shape); - -Shapes inferAvgPoolShape(const ir::Shape &in_shape, const ir::operation::AvgPool2D::Param ¶m, - ir::Layout layout = ir::Layout::NHWC); - -Shapes inferConcatShape(const Shapes &in_shapes, const ir::operation::Concat::Param ¶m); - -Shapes inferMaxPoolShape(const ir::Shape &in_shape, const ir::operation::MaxPool2D::Param ¶m, - ir::Layout layout = ir::Layout::NHWC); - -Shapes inferConv2DShape(const ir::Shape &in_shape, const ir::Shape &ker_shape, - const ir::operation::Conv2D::Param ¶m, - ir::Layout layout = ir::Layout::NHWC); - -Shapes inferDepthwiseConv2DShape(const ir::Shape &in_shape, const ir::Shape &ker_shape, - const ir::operation::DepthwiseConv2D::Param ¶m, - ir::Layout layout = ir::Layout::NHWC); - -Shapes inferFullyConnectedShape(const ir::Shape &in_shape, const ir::Shape &ker_shape); - -} // namespace shape_inference -} // namespace neurun - -#endif // __NEURUN_GRAPH_SHAPE_INFERENCE_H__ diff --git a/runtime/neurun/core/include/util/Utils.h b/runtime/neurun/core/include/util/Utils.h deleted file mode 100644 index e7468dabd..000000000 --- a/runtime/neurun/core/include/util/Utils.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file Utils.h - * @brief This file contains utility functions - * @ingroup COM_AI_RUNTIME - */ - -#ifndef __NEURUN_UTIL_UTILS_H__ -#define __NEURUN_UTIL_UTILS_H__ - -#include "ir/InternalType.h" -#include "ir/Layout.h" -#include "ir/Operand.h" -#include "util/Coordinates.h" - -#define UNUSED_RELEASE(a) (void)(a) - -namespace neurun -{ -namespace util -{ - -/** - * @brief Converts a internal padding type to const char* - * @param[in] type Padding type to be converted - * @return A string holding the converted value - */ -const char *to_string(ir::PaddingType type); - -Coordinates convertCoordinates(const Coordinates &from_coordinates, ir::Layout from_layout, - ir::Layout to_layout); - -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_UTILS_H__ diff --git a/runtime/neurun/core/include/util/feature/Coordinate4D.h b/runtime/neurun/core/include/util/feature/Coordinate4D.h deleted file mode 100644 index b020ed239..000000000 --- a/runtime/neurun/core/include/util/feature/Coordinate4D.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_FEATURE_COORDINATE_4D_H__ -#define __NEURUN_UTIL_FEATURE_COORDINATE_4D_H__ - -#include <stdint.h> - -namespace neurun -{ -namespace util -{ -namespace feature -{ - -/** - * @brief Class to represent position(offset) of subtensor.\n - * Assume that parent and child are already lowered (can get Shape4D). - */ -class Coordinate4D -{ -public: - /** - * @brief Construct a new Coordinate4D object - */ - Coordinate4D(void) : _n{0}, _h{0}, _w{0}, _c{0} - { - // DO NOTHING - } - /** - * @brief Construct a new Coordinate4D object - * @param[in] n Batch offset - * @param[in] h Height offset - * @param[in] w Width offset - * @param[in] c Channel offset - * @return - */ - Coordinate4D(int32_t n, int32_t h, int32_t w, int32_t c) : _n{n}, _h{h}, _w{w}, _c{c} - { - // DO NOTHING - } - -public: - /** - * @brief Set batch offset - * @param[in] n Batch offset - */ - void n(int32_t n) { _n = n; } - /** - * @brief Set height offset - * @param[in] h Height offset - */ - void h(int32_t h) { _h = h; } - /** - * @brief Set width offset - * @param[in] w Width offset - */ - void w(int32_t w) { _w = w; } - /** - * @brief Set channel offset - * @param[in] c Channel offset - */ - void c(int32_t c) { _c = c; } - -public: - /** - * @brief Return batch offset - * @return Batch offset - */ - int32_t n(void) const { return _n; } - /** - * @brief Return height offset - * @return Height offset - */ - int32_t h(void) const { return _h; } - /** - * @brief Return width offset - * @return Width offset - */ - int32_t w(void) const { return _w; } - /** - * @brief Return channel offset - * @return Channel offset - */ - int32_t c(void) const { return _c; } - -private: - int32_t _n; - int32_t _h; - int32_t _w; - int32_t _c; -}; - -} // namespace feature -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_FEATURE_COORDINATE_4D_H__ diff --git a/runtime/neurun/core/include/util/feature/nchw/Reader.h b/runtime/neurun/core/include/util/feature/nchw/Reader.h deleted file mode 100644 index 0305bdf69..000000000 --- a/runtime/neurun/core/include/util/feature/nchw/Reader.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_FEATURE_NCHW_READER_H__ -#define __NEURUN_UTIL_FEATURE_NCHW_READER_H__ - -#include <cassert> - -#include "backend/operand/ITensor.h" -#include "misc/feature/Reader.h" -#include "misc/feature/Shape.h" -#include "util/Coordinates.h" -#include "util/Utils.h" - -namespace neurun -{ -namespace util -{ -namespace feature -{ -namespace nchw -{ - -template <typename T> class Reader final : public nnfw::misc::feature::Reader<T> -{ -public: - // Construct for buffer of model inputs - Reader(const ::nnfw::misc::feature::Shape &shape, const T *ptr, size_t len) - : _shape{shape}, _ptr{reinterpret_cast<const uint8_t *>(ptr)}, _len{len} - { - assert(shape.N * shape.C * shape.H * shape.W * sizeof(T) == len); - - // No padding - _strides.W = sizeof(T); - _strides.H = shape.W * sizeof(T); - _strides.C = shape.W * shape.H * sizeof(T); - _strides.N = shape.W * shape.H * shape.C * sizeof(T); - } - - // Construct for backend tensor - Reader(backend::operand::ITensor *tensor) - : _ptr{tensor->buffer() + tensor->calcOffset({0, 0, 0, 0})}, _len{tensor->total_size()} - { - assert(tensor->layout() == ir::Layout::NCHW); - - const auto start_offset = tensor->calcOffset({0, 0, 0, 0}); - _strides.W = tensor->dimension(3) == 1 ? 0 : tensor->calcOffset({0, 0, 0, 1}) - start_offset; - _strides.H = tensor->dimension(2) == 1 ? 0 : tensor->calcOffset({0, 0, 1, 0}) - start_offset; - _strides.C = tensor->dimension(1) == 1 ? 0 : tensor->calcOffset({0, 1, 0, 0}) - start_offset; - _strides.N = tensor->dimension(0) == 1 ? 0 : tensor->calcOffset({1, 0, 0, 0}) - start_offset; - - _shape.W = tensor->dimension(3); - _shape.H = tensor->dimension(2); - _shape.C = tensor->dimension(1); - _shape.N = tensor->dimension(0); - } - -public: - T at(uint32_t ch, uint32_t row, uint32_t col) const override - { - const auto offset = feature_index_to_byte_offset(0, ch, row, col); - - const T *ptr = reinterpret_cast<const T *>(_ptr + offset); - - return *ptr; - } - T at(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) const override - { - const auto offset = feature_index_to_byte_offset(batch, ch, row, col); - - const T *ptr = reinterpret_cast<const T *>(_ptr + offset); - - return *ptr; - } - -private: - size_t feature_index_to_byte_offset(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) const - { - assert(1u * _shape.N > batch); // shape.N > batch - assert(1u * _shape.C > ch); // shape.C > ch - assert(1u * _shape.H > row); // shape.H > row - assert(1u * _shape.W > col); // shape.W > col - - uint32_t res = 0; - res += batch * _strides.N; - res += ch * _strides.C; - res += row * _strides.H; - res += col * _strides.W; - - return res; - } - -private: - // TODO Remove _shape - nnfw::misc::feature::Shape _shape; - using Strides = nnfw::misc::feature::Shape; - Strides _strides; - const uint8_t *_ptr; - size_t _len; -}; - -} // namespace nchw -} // namespace feature -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_FEATURE_NCHW_READER_H__ diff --git a/runtime/neurun/core/include/util/feature/nchw/View.h b/runtime/neurun/core/include/util/feature/nchw/View.h deleted file mode 100644 index d747937ee..000000000 --- a/runtime/neurun/core/include/util/feature/nchw/View.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_FEATURE_NCHW_VIEW_H__ -#define __NEURUN_UTIL_FEATURE_NCHW_VIEW_H__ - -#include "misc/feature/Reader.h" -#include "misc/feature/Shape.h" - -#include "backend/operand/ITensor.h" -#include "util/Coordinates.h" -#include "util/Utils.h" - -#include <cassert> - -namespace neurun -{ -namespace util -{ -namespace feature -{ -namespace nchw -{ - -template <typename T> class View final : public nnfw::misc::feature::Reader<T> -{ -public: - // Construct for buffer of model inputs - View(const ::nnfw::misc::feature::Shape &shape, T *ptr, size_t len) - : _shape{shape}, _ptr{reinterpret_cast<uint8_t *>(ptr)}, _len{len} - { - assert(shape.N * shape.C * shape.H * shape.W * sizeof(T) == len); - - _strides.W = sizeof(T); - _strides.H = shape.W * sizeof(T); - _strides.C = shape.W * shape.H * sizeof(T); - _strides.N = shape.W * shape.H * shape.C * sizeof(T); - } - - // Construct for backend tensor - View(::neurun::backend::operand::ITensor *tensor) - : _ptr{tensor->buffer() + tensor->calcOffset({0, 0, 0, 0})}, _len{tensor->total_size()} - { - assert(tensor->layout() == ir::Layout::NCHW); - - const auto start_offset = tensor->calcOffset({0, 0, 0, 0}); - _strides.W = tensor->dimension(3) == 1 ? 0 : tensor->calcOffset({0, 0, 0, 1}) - start_offset; - _strides.H = tensor->dimension(2) == 1 ? 0 : tensor->calcOffset({0, 0, 1, 0}) - start_offset; - _strides.C = tensor->dimension(1) == 1 ? 0 : tensor->calcOffset({0, 1, 0, 0}) - start_offset; - _strides.N = tensor->dimension(0) == 1 ? 0 : tensor->calcOffset({1, 0, 0, 0}) - start_offset; - - _shape.W = tensor->dimension(3); - _shape.H = tensor->dimension(2); - _shape.C = tensor->dimension(1); - _shape.N = tensor->dimension(0); - } - -public: - T at(uint32_t ch, uint32_t row, uint32_t col) const override - { - const auto offset = feature_index_to_byte_offset(0, ch, row, col); - - T *ptr = reinterpret_cast<T *>(_ptr + offset); - - return *ptr; - } - T at(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) const override - { - const auto offset = feature_index_to_byte_offset(batch, ch, row, col); - - T *ptr = reinterpret_cast<T *>(_ptr + offset); - - return *ptr; - } - -public: - T &at(uint32_t ch, uint32_t row, uint32_t col) - { - const auto offset = feature_index_to_byte_offset(0, ch, row, col); - - T *ptr = reinterpret_cast<T *>(_ptr + offset); - - return *ptr; - } - T &at(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) - { - const auto offset = feature_index_to_byte_offset(batch, ch, row, col); - - T *ptr = reinterpret_cast<T *>(_ptr + offset); - - return *ptr; - } - -private: - size_t feature_index_to_byte_offset(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) const - { - assert(1u * _shape.N > batch); // shape.N > batch - assert(1u * _shape.C > ch); // shape.C > ch - assert(1u * _shape.H > row); // shape.H > row - assert(1u * _shape.W > col); // shape.W > col - - uint32_t res = 0; - res += batch * _strides.N; - res += ch * _strides.C; - res += row * _strides.H; - res += col * _strides.W; - - return res; - } - -private: - // TODO Remove _shape - nnfw::misc::feature::Shape _shape; - using Strides = nnfw::misc::feature::Shape; - Strides _strides; - uint8_t *_ptr; - size_t _len; -}; - -} // namespace nchw -} // namespace feature -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_FEATURE_NCHW_VIEW_H__ diff --git a/runtime/neurun/core/include/util/feature/nhwc/Reader.h b/runtime/neurun/core/include/util/feature/nhwc/Reader.h deleted file mode 100644 index 0df7be4be..000000000 --- a/runtime/neurun/core/include/util/feature/nhwc/Reader.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_FEATURE_NHWC_READER_H__ -#define __NEURUN_UTIL_FEATURE_NHWC_READER_H__ - -#include <cassert> - -#include "backend/operand/ITensor.h" -#include "misc/feature/Reader.h" -#include "misc/feature/Shape.h" -#include "util/Coordinates.h" -#include "util/Utils.h" - -namespace neurun -{ -namespace util -{ -namespace feature -{ -namespace nhwc -{ - -template <typename T> class Reader final : public nnfw::misc::feature::Reader<T> -{ -public: - // Construct for buffer of model inputs - Reader(const ::nnfw::misc::feature::Shape &shape, const T *ptr, size_t len) - : _shape{shape}, _ptr{reinterpret_cast<const uint8_t *>(ptr)}, _len{len} - { - UNUSED_RELEASE(len); // Workaround for unused variable in release mode - assert(shape.N * shape.C * shape.H * shape.W * sizeof(T) == len); - - // No padding - _strides.C = sizeof(T); - _strides.W = shape.C * sizeof(T); - _strides.H = shape.C * shape.W * sizeof(T); - _strides.N = shape.C * shape.W * shape.H * sizeof(T); - } - - // Construct for backend tensor - Reader(const backend::operand::ITensor *tensor) - : _ptr{tensor->buffer() + tensor->calcOffset({0, 0, 0, 0})}, _len{tensor->total_size()} - { - assert(tensor->layout() == ir::Layout::NHWC); - - const auto start_offset = tensor->calcOffset({0, 0, 0, 0}); - _strides.C = tensor->dimension(3) == 1 ? 0 : tensor->calcOffset({0, 0, 0, 1}) - start_offset; - _strides.W = tensor->dimension(2) == 1 ? 0 : tensor->calcOffset({0, 0, 1, 0}) - start_offset; - _strides.H = tensor->dimension(1) == 1 ? 0 : tensor->calcOffset({0, 1, 0, 0}) - start_offset; - _strides.N = tensor->dimension(0) == 1 ? 0 : tensor->calcOffset({1, 0, 0, 0}) - start_offset; - - _shape.C = tensor->dimension(3); - _shape.W = tensor->dimension(2); - _shape.H = tensor->dimension(1); - _shape.N = tensor->dimension(0); - } - -public: - T at(uint32_t row, uint32_t col, uint32_t ch) const override - { - const auto offset = feature_index_to_byte_offset(0, row, col, ch); - - const T *ptr = reinterpret_cast<const T *>(_ptr + offset); - - return *ptr; - } - T at(uint32_t batch, uint32_t row, uint32_t col, uint32_t ch) const override - { - const auto offset = feature_index_to_byte_offset(batch, row, col, ch); - - const T *ptr = reinterpret_cast<const T *>(_ptr + offset); - - return *ptr; - } - -private: - size_t feature_index_to_byte_offset(uint32_t batch, uint32_t row, uint32_t col, uint32_t ch) const - { - assert(1u * _shape.N > batch); // shape.N > batch - assert(1u * _shape.H > row); // shape.H > row - assert(1u * _shape.W > col); // shape.W > col - assert(1u * _shape.C > ch); // shape.C > ch - - uint32_t res = 0; - res += batch * _strides.N; - res += row * _strides.H; - res += col * _strides.W; - res += ch * _strides.C; - - return res; - } - -private: - // TODO Remove _shape - nnfw::misc::feature::Shape _shape; - using Strides = nnfw::misc::feature::Shape; - Strides _strides; - const uint8_t *_ptr; - size_t _len; -}; - -} // namespace nhwc -} // namespace feature -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_FEATURE_NHWC_READER_H__ diff --git a/runtime/neurun/core/include/util/feature/nhwc/View.h b/runtime/neurun/core/include/util/feature/nhwc/View.h deleted file mode 100644 index b9d98e9fa..000000000 --- a/runtime/neurun/core/include/util/feature/nhwc/View.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_FEATURE_NHWC_VIEW_H__ -#define __NEURUN_UTIL_FEATURE_NHWC_VIEW_H__ - -#include <cassert> -#include <cstddef> - -#include "backend/operand/ITensor.h" -#include "misc/feature/Reader.h" -#include "misc/feature/Shape.h" -#include "util/Coordinates.h" -#include "util/Utils.h" - -namespace neurun -{ -namespace util -{ -namespace feature -{ -namespace nhwc -{ - -template <typename T> class View final : public nnfw::misc::feature::Reader<T> -{ -public: - // Construct for buffer of model inputs - View(const ::nnfw::misc::feature::Shape &shape, T *ptr, size_t len) - : _shape{shape}, _ptr{reinterpret_cast<uint8_t *>(ptr)}, _len{len} - { - UNUSED_RELEASE(len); // Workaround for unused variable in release mode - assert(shape.N * shape.H * shape.W * shape.C * sizeof(T) == len); - - // No padding - _strides.C = sizeof(T); - _strides.W = shape.C * sizeof(T); - _strides.H = shape.C * shape.W * sizeof(T); - _strides.N = shape.C * shape.W * shape.H * sizeof(T); - } - - // Construct for backend tensor - View(backend::operand::ITensor *tensor) - : _ptr{tensor->buffer() + tensor->calcOffset({0, 0, 0, 0})}, _len{tensor->total_size()} - { - assert(tensor->layout() == ir::Layout::NHWC); - - const auto start_offset = tensor->calcOffset({0, 0, 0, 0}); - _strides.C = tensor->dimension(3) == 1 ? 0 : tensor->calcOffset({0, 0, 0, 1}) - start_offset; - _strides.W = tensor->dimension(2) == 1 ? 0 : tensor->calcOffset({0, 0, 1, 0}) - start_offset; - _strides.H = tensor->dimension(1) == 1 ? 0 : tensor->calcOffset({0, 1, 0, 0}) - start_offset; - _strides.N = tensor->dimension(0) == 1 ? 0 : tensor->calcOffset({1, 0, 0, 0}) - start_offset; - - _shape.C = tensor->dimension(3); - _shape.W = tensor->dimension(2); - _shape.H = tensor->dimension(1); - _shape.N = tensor->dimension(0); - } - -public: - T at(uint32_t row, uint32_t col, uint32_t ch) const override - { - const auto offset = feature_index_to_byte_offset(0, row, col, ch); - - const T *ptr = reinterpret_cast<const T *>(_ptr + offset); - - return *ptr; - } - T at(uint32_t batch, uint32_t row, uint32_t col, uint32_t ch) const override - { - const auto offset = feature_index_to_byte_offset(batch, row, col, ch); - - const T *ptr = reinterpret_cast<const T *>(_ptr + offset); - - return *ptr; - } - - T &at(uint32_t row, uint32_t col, uint32_t ch) - { - const auto offset = feature_index_to_byte_offset(0, row, col, ch); - - T *ptr = reinterpret_cast<T *>(_ptr + offset); - - return *ptr; - } - - T &at(uint32_t batch, uint32_t row, uint32_t col, uint32_t ch) - { - const auto offset = feature_index_to_byte_offset(batch, row, col, ch); - - T *ptr = reinterpret_cast<T *>(_ptr + offset); - - return *ptr; - } - -private: - size_t feature_index_to_byte_offset(uint32_t batch, uint32_t row, uint32_t col, uint32_t ch) const - { - assert(1u * _shape.N > batch); // shape.N > batch - assert(1u * _shape.H > row); // shape.H > row - assert(1u * _shape.W > col); // shape.W > col - assert(1u * _shape.C > ch); // shape.C > ch - - uint32_t res = 0; - res += batch * _strides.N; - res += row * _strides.H; - res += col * _strides.W; - res += ch * _strides.C; - - return res; - } - -private: - // TODO Remove _shape - nnfw::misc::feature::Shape _shape; - using Strides = nnfw::misc::feature::Shape; - Strides _strides; - uint8_t *_ptr; - size_t _len; -}; - -} // namespace nhwc -} // namespace feature -} // namespace util -} // namespace neurun - -#endif // __NEURUN_UTIL_FEATURE_NHWC_VIEW_H__ diff --git a/runtime/neurun/core/include/util/logging.h b/runtime/neurun/core/include/util/logging.h deleted file mode 100644 index 8ecd0ac12..000000000 --- a/runtime/neurun/core/include/util/logging.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __NEURUN_UTIL_LOGGING_H__ -#define __NEURUN_UTIL_LOGGING_H__ - -#include <iostream> - -#include "util/ConfigSource.h" - -namespace neurun -{ -namespace util -{ -namespace logging -{ - -class Context -{ -public: - Context() noexcept : _enabled{false} - { - const auto env = util::getConfigBool(util::config::NEURUN_LOG_ENABLE); - - if (env) - { - _enabled = true; - } - } - - static Context &get() noexcept; - -public: - bool enabled(void) const { return _enabled; } - -private: - bool _enabled; -}; - -static Context &ctx = Context::get(); - -} // namespace logging -} // namespace util -} // namespace neurun - -#define VERBOSE(name) \ - if (::neurun::util::logging::ctx.enabled()) \ - std::cout << "[" << #name << "] " - -#endif // __NEURUN_UTIL_LOGGING_H__ |