diff options
Diffstat (limited to 'runtimes/neurun/src/internal')
-rw-r--r-- | runtimes/neurun/src/internal/Convert.cc | 59 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/Convert.h | 40 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/Padding.cc | 72 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/Padding.h | 48 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/nnapi/feature/Reader.h | 75 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/nnapi/feature/Utils.h | 60 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/nnapi/feature/View.h | 92 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/nnapi/kernel/Reader.h | 70 | ||||
-rw-r--r-- | runtimes/neurun/src/internal/nnapi/kernel/View.h | 88 |
9 files changed, 0 insertions, 604 deletions
diff --git a/runtimes/neurun/src/internal/Convert.cc b/runtimes/neurun/src/internal/Convert.cc deleted file mode 100644 index c0260b04e..000000000 --- a/runtimes/neurun/src/internal/Convert.cc +++ /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. - */ - -#include "Convert.h" - -namespace internal -{ - -::arm_compute::TensorShape asTensorShape(int32_t h, int32_t w) -{ - return ::arm_compute::TensorShape(w, h); -} - -::arm_compute::TensorShape asTensorShape(const nnfw::util::feature::Shape &shape) -{ - return ::arm_compute::TensorShape(shape.W, shape.H, shape.C, shape.N); -} - -::arm_compute::TensorShape asTensorShape(const nnfw::util::kernel::Shape &shape) -{ - return ::arm_compute::TensorShape(shape.W, shape.H, shape.C, shape.N); -} - -::arm_compute::TensorInfo asTensorInfo(const nnfw::util::feature::Shape &shape) -{ - return ::arm_compute::TensorInfo(asTensorShape(shape), 1, ::arm_compute::DataType::F32); -} - -::arm_compute::TensorInfo asTensorInfo(const nnfw::util::kernel::Shape &shape) -{ - return ::arm_compute::TensorInfo(asTensorShape(shape), 1, ::arm_compute::DataType::F32); -} - -::arm_compute::TensorInfo asTensorInfo(int32_t size) -{ - return ::arm_compute::TensorInfo(::arm_compute::TensorShape(size), 1, - ::arm_compute::DataType::F32); -} - -::arm_compute::TensorInfo asTensorInfo(int32_t h, int32_t w) -{ - return ::arm_compute::TensorInfo(::arm_compute::TensorShape(w, h), 1, - ::arm_compute::DataType::F32); -} - -} // namespace internal diff --git a/runtimes/neurun/src/internal/Convert.h b/runtimes/neurun/src/internal/Convert.h deleted file mode 100644 index f279133aa..000000000 --- a/runtimes/neurun/src/internal/Convert.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 __INTERNAL_CONVERT_H__ -#define __INTERNAL_CONVERT_H__ - -#include <arm_compute/core/TensorInfo.h> -#include <arm_compute/core/TensorShape.h> - -#include "util/feature/Shape.h" -#include "util/kernel/Shape.h" - -namespace internal -{ - -::arm_compute::TensorShape asTensorShape(int32_t h, int32_t w); -::arm_compute::TensorShape asTensorShape(const nnfw::util::feature::Shape &shape); -::arm_compute::TensorShape asTensorShape(const nnfw::util::kernel::Shape &shape); - -::arm_compute::TensorInfo asTensorInfo(const nnfw::util::feature::Shape &shape); -::arm_compute::TensorInfo asTensorInfo(const nnfw::util::kernel::Shape &shape); -::arm_compute::TensorInfo asTensorInfo(int32_t size); -::arm_compute::TensorInfo asTensorInfo(int32_t h, int32_t w); - -} // namespace internal - -#endif // __INTERNAL_CONVERT_H__ diff --git a/runtimes/neurun/src/internal/Padding.cc b/runtimes/neurun/src/internal/Padding.cc deleted file mode 100644 index 200fa1a02..000000000 --- a/runtimes/neurun/src/internal/Padding.cc +++ /dev/null @@ -1,72 +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. - */ - -#include "internal/Padding.h" - -#include <algorithm> - -namespace internal -{ - -Padding valid_padding(void) -{ - // - // ANEURALNETWORKS_PADDING_VALID - // - // VALID padding. No padding. - // - // When the input size is not evenly divisible by the filter size, - // the input at the end that could not fill the whole filter tile - // will simply be ignored. - // - Padding padding; - - padding.top = 0; - padding.bottom = 0; - padding.left = 0; - padding.right = 0; - - return padding; -} - -Padding same_padding(const nnfw::util::feature::Shape &ifm_shape, - const nnfw::util::feature::Shape &ofm_shape, const Stride &stride, uint32_t kw, - uint32_t kh) -{ - Padding padding; - - // ANEURALNETWORKS_PADDING_SAME (from NNAPI spec) - // - // SAME padding. Padding on both ends are the "same": - // - // padding_to_beginning = total_padding / 2 - // padding_to_end = (total_padding + 1)/2. - // - const int32_t vertical_needed_input = (ofm_shape.H - 1) * stride.vertical + kh; - const int32_t vertical_total_padding = std::max(0, vertical_needed_input - ifm_shape.H); - - const int32_t horizontal_needed_input = (ofm_shape.W - 1) * stride.horizontal + kw; - const int32_t horizontal_total_padding = std::max(0, horizontal_needed_input - ifm_shape.W); - - padding.top = vertical_total_padding / 2; - padding.bottom = (vertical_total_padding + 1) / 2; - padding.left = horizontal_total_padding / 2; - padding.right = (horizontal_total_padding + 1) / 2; - - return padding; -} - -} // namespace internal diff --git a/runtimes/neurun/src/internal/Padding.h b/runtimes/neurun/src/internal/Padding.h deleted file mode 100644 index 84e081a78..000000000 --- a/runtimes/neurun/src/internal/Padding.h +++ /dev/null @@ -1,48 +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 __INTERNAL_PADDING_H__ -#define __INTERNAL_PADDING_H__ - -#include <stdint.h> - -#include <util/feature/Shape.h> - -namespace internal -{ - -struct Padding -{ - uint32_t top; - uint32_t bottom; - uint32_t left; - uint32_t right; -}; - -struct Stride -{ - uint32_t vertical; - uint32_t horizontal; -}; - -Padding valid_padding(void); -Padding same_padding(const nnfw::util::feature::Shape &ifm_shape, - const nnfw::util::feature::Shape &ofm_shape, const Stride &stride, uint32_t kw, - uint32_t kh); - -} // namespace internal - -#endif // __INTERNAL_PADDING_H__ diff --git a/runtimes/neurun/src/internal/nnapi/feature/Reader.h b/runtimes/neurun/src/internal/nnapi/feature/Reader.h deleted file mode 100644 index eb513512d..000000000 --- a/runtimes/neurun/src/internal/nnapi/feature/Reader.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 __INTERNAL_NNAPI_FEATURE_READER_H__ -#define __INTERNAL_NNAPI_FEATURE_READER_H__ - -#include "internal/nnapi/feature/Utils.h" - -#include "util/feature/Reader.h" - -namespace internal -{ -namespace nnapi -{ -namespace feature -{ - -template <typename T> class Reader; - -template <> class Reader<float> final : public nnfw::util::feature::Reader<float> -{ -public: - Reader(const ::nnfw::util::feature::Shape &shape, const uint8_t *ptr, size_t len) - : _shape{shape}, _ptr{ptr}, _len{len} - { - // DO NOTHING - } - -public: - const nnfw::util::feature::Shape &shape(void) const { return _shape; } - -public: - float at(uint32_t ch, uint32_t row, uint32_t col) const override - { - uint32_t index = index_of(_shape, ch, row, col); - - const auto arr = reinterpret_cast<const float *>(_ptr); - - return arr[index]; - } - float at(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) const override - { - uint32_t index = index_of(_shape, batch, ch, row, col); - - const auto arr = reinterpret_cast<const float *>(_ptr); - - return arr[index]; - } - -private: - nnfw::util::feature::Shape _shape; - -private: - const uint8_t *_ptr; - const size_t _len; -}; - -} // namespace feature -} // namespace nnapi -} // namespace internal - -#endif // __INTERNAL_NNAPI_FEATURE_READER_H__ diff --git a/runtimes/neurun/src/internal/nnapi/feature/Utils.h b/runtimes/neurun/src/internal/nnapi/feature/Utils.h deleted file mode 100644 index e6e1e71bd..000000000 --- a/runtimes/neurun/src/internal/nnapi/feature/Utils.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 __INTERNAL_NNAPI_FEATURE_UTILS_H__ -#define __INTERNAL_NNAPI_FEATURE_UTILS_H__ - -#include "util/feature/Shape.h" - -namespace internal -{ -namespace nnapi -{ -namespace feature -{ - -inline uint32_t index_of(const ::nnfw::util::feature::Shape &shape, uint32_t ch, uint32_t row, - uint32_t col) -{ - uint32_t res = 0; - - // NNAPI uses NHWC ordering - res += row * shape.W * shape.C; - res += col * shape.C; - res += ch; - - return res; -} - -inline uint32_t index_of(const ::nnfw::util::feature::Shape &shape, uint32_t batch, uint32_t ch, - uint32_t row, uint32_t col) -{ - uint32_t res = 0; - - // NNAPI uses NHWC ordering - res += batch * shape.H * shape.W * shape.C; - res += row * shape.W * shape.C; - res += col * shape.C; - res += ch; - - return res; -} - -} // namespace feature -} // namespace nnapi -} // namespace internal - -#endif // __INTERNAL_NNAPI_FEATURE_UTILS_H__ diff --git a/runtimes/neurun/src/internal/nnapi/feature/View.h b/runtimes/neurun/src/internal/nnapi/feature/View.h deleted file mode 100644 index 60335dbf1..000000000 --- a/runtimes/neurun/src/internal/nnapi/feature/View.h +++ /dev/null @@ -1,92 +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 __INTERNAL_NNAPI_FEATURE_VIEW_H__ -#define __INTERNAL_NNAPI_FEATURE_VIEW_H__ - -#include "internal/nnapi/feature/Utils.h" - -#include "util/feature/Reader.h" - -namespace internal -{ -namespace nnapi -{ -namespace feature -{ - -template <typename T> class View final : public nnfw::util::feature::Reader<float> -{ -public: - View(const ::nnfw::util::feature::Shape &shape, uint8_t *ptr, size_t len) - : _shape{shape}, _ptr{ptr}, _len{len} - { - // DO NOTHING - } - -public: - const nnfw::util::feature::Shape &shape(void) const { return _shape; } - -public: - T at(uint32_t ch, uint32_t row, uint32_t col) const override - { - uint32_t index = index_of(_shape, ch, row, col); - - T *arr = reinterpret_cast<T *>(_ptr); - - return arr[index]; - } - - T at(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) const override - { - uint32_t index = index_of(_shape, batch, ch, row, col); - - T *arr = reinterpret_cast<T *>(_ptr); - - return arr[index]; - } - - T &at(uint32_t ch, uint32_t row, uint32_t col) - { - uint32_t index = index_of(_shape, ch, row, col); - - T *arr = reinterpret_cast<T *>(_ptr); - - return arr[index]; - } - - T &at(uint32_t batch, uint32_t ch, uint32_t row, uint32_t col) - { - uint32_t index = index_of(_shape, batch, ch, row, col); - - T *arr = reinterpret_cast<T *>(_ptr); - - return arr[index]; - } - -private: - nnfw::util::feature::Shape _shape; - -private: - uint8_t *_ptr; - const size_t _len; -}; - -} // namespace feature -} // namespace nnapi -} // namespace internal - -#endif // __INTERNAL_NNAPI_FEATURE_VIEW_H__ diff --git a/runtimes/neurun/src/internal/nnapi/kernel/Reader.h b/runtimes/neurun/src/internal/nnapi/kernel/Reader.h deleted file mode 100644 index 9d93800bf..000000000 --- a/runtimes/neurun/src/internal/nnapi/kernel/Reader.h +++ /dev/null @@ -1,70 +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 __INTERNAL_NNAPI_KERNEL_READER_H__ -#define __INTERNAL_NNAPI_KERNEL_READER_H__ - -#include "util/kernel/Shape.h" -#include "util/kernel/Reader.h" - -namespace internal -{ -namespace nnapi -{ -namespace kernel -{ - -template <typename T> class Reader final : public nnfw::util::kernel::Reader<T> -{ -public: - Reader(const ::nnfw::util::kernel::Shape &shape, const uint8_t *base, size_t size) - : _shape{shape}, _base{base}, _size{size} - { - // DO NOTHING - } - -public: - const nnfw::util::kernel::Shape &shape(void) const { return _shape; } - -public: - T at(uint32_t nth, uint32_t ch, uint32_t row, uint32_t col) const override - { - // NNAPI uses NHWC ordering - uint32_t index = 0; - - index += nth * _shape.H * _shape.W * _shape.C; - index += row * _shape.W * _shape.C; - index += col * _shape.C; - index += ch; - - const T *ptr = reinterpret_cast<const T *>(_base); - - return ptr[index]; - } - -private: - nnfw::util::kernel::Shape _shape; - -private: - const uint8_t *_base; - const size_t _size; -}; - -} // namespace kernel -} // namespace nnapi -} // namespace internal - -#endif // __INTERNAL_NNAPI_KERNEL_READER_H__ diff --git a/runtimes/neurun/src/internal/nnapi/kernel/View.h b/runtimes/neurun/src/internal/nnapi/kernel/View.h deleted file mode 100644 index 86d19b87f..000000000 --- a/runtimes/neurun/src/internal/nnapi/kernel/View.h +++ /dev/null @@ -1,88 +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 __INTERNAL_NNAPI_KERNEL_VIEW_H__ -#define __INTERNAL_NNAPI_KERNEL_VIEW_H__ - -#include "util/kernel/Shape.h" -#include "util/kernel/Reader.h" - -#include <arm_compute/core/ITensor.h> - -namespace internal -{ -namespace nnapi -{ -namespace kernel -{ - -template <typename T> class View final : public nnfw::util::kernel::Reader<float> -{ -public: - View(::arm_compute::ITensor *tensor) : _tensor{tensor} - { - assert(tensor->info()->data_type() == ::arm_compute::DataType::F32); - - _shape.N = tensor->info()->dimension(3); - _shape.C = tensor->info()->dimension(2); - _shape.H = tensor->info()->dimension(1); - _shape.W = tensor->info()->dimension(0); - } - -public: - const nnfw::util::kernel::Shape &shape(void) const { return _shape; } - -public: - float at(uint32_t nth, uint32_t row, uint32_t col, uint32_t ch) const override - { - // NNAPI uses NHWC ordering - uint32_t index = 0; - - index += nth * _shape.H * _shape.W * _shape.C; - index += row * _shape.W * _shape.C; - index += col * _shape.C; - index += ch; - - float *ptr = reinterpret_cast<float *>(_tensor->buffer()); - - return ptr[index]; - } - - float &at(uint32_t nth, uint32_t row, uint32_t col, uint32_t ch) - { - // NNAPI uses NHWC ordering - uint32_t index = 0; - - index += nth * _shape.H * _shape.W * _shape.C; - index += row * _shape.W * _shape.C; - index += col * _shape.C; - index += ch; - - float *ptr = reinterpret_cast<float *>(_tensor->buffer()); - - return ptr[index]; - } - -private: - nnfw::util::kernel::Shape _shape; - ::arm_compute::ITensor *_tensor; -}; - -} // namespace kernel -} // namespace nnapi -} // namespace internal - -#endif // __INTERNAL_NNAPI_KERNEL_VIEW_H__ |