From 0edf3b5d4d2879841546724bf62abfd5df931cd1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Mon, 1 Oct 2018 15:29:21 +0900 Subject: [PATCH] [coco] Rename GenericFeatureLayout (#1689) This commit renames GenericFeatureLayout as FeatureLayouts::Generic for naming consistency. Signed-off-by: Jonghyun Park --- contrib/coco/core/include/coco/IR/FeatureLayouts.h | 34 +++++++++ contrib/coco/core/include/coco/IR/FeatureObject.h | 1 - .../core/include/coco/IR/GenericFeatureLayout.h | 59 ---------------- contrib/coco/core/src/IR/FeatureLayouts.cpp | 65 +++++++++++++++++ contrib/coco/core/src/IR/FeatureObject.cpp | 3 +- contrib/coco/core/src/IR/GenericFeatureLayout.cpp | 81 ---------------------- 6 files changed, 101 insertions(+), 142 deletions(-) delete mode 100644 contrib/coco/core/include/coco/IR/GenericFeatureLayout.h delete mode 100644 contrib/coco/core/src/IR/GenericFeatureLayout.cpp diff --git a/contrib/coco/core/include/coco/IR/FeatureLayouts.h b/contrib/coco/core/include/coco/IR/FeatureLayouts.h index 53e8d81..54f7ad7 100644 --- a/contrib/coco/core/include/coco/IR/FeatureLayouts.h +++ b/contrib/coco/core/include/coco/IR/FeatureLayouts.h @@ -19,6 +19,9 @@ #include "coco/IR/FeatureLayout.h" +#include + +#include #include namespace coco @@ -82,6 +85,37 @@ public: static std::unique_ptr create(const nncc::core::ADT::feature::Shape &shape); }; +/** + * @brief Generic Feature Layout + */ +class Generic final : public FeatureLayout +{ +public: + Generic(const nncc::core::ADT::feature::Shape &shape); + +public: + static const FeatureLayout::ID *uid(void); + const FeatureLayout::ID *id(void) const override { return uid(); } + + uint32_t batch(void) const override { return _batch; } + const nncc::core::ADT::feature::Shape &shape(void) const override { return _shape; } + + ElemID &at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col); + ElemID at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const override; + + void reorder(const nncc::core::ADT::feature::Layout &l); + +private: + uint32_t offset(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const; + +private: + uint32_t _batch; + nncc::core::ADT::feature::Shape _shape; + +private: + std::vector _content; +}; + } // namespace FeatureLayouts } // namespace coco diff --git a/contrib/coco/core/include/coco/IR/FeatureObject.h b/contrib/coco/core/include/coco/IR/FeatureObject.h index aa3d890..e618526 100644 --- a/contrib/coco/core/include/coco/IR/FeatureObject.h +++ b/contrib/coco/core/include/coco/IR/FeatureObject.h @@ -19,7 +19,6 @@ #include "coco/IR/Object.h" #include "coco/IR/FeatureLayout.h" -#include "coco/IR/GenericFeatureLayout.h" #include "coco/IR/ElemID.h" #include diff --git a/contrib/coco/core/include/coco/IR/GenericFeatureLayout.h b/contrib/coco/core/include/coco/IR/GenericFeatureLayout.h deleted file mode 100644 index 6db0116..0000000 --- a/contrib/coco/core/include/coco/IR/GenericFeatureLayout.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 __COCO_IR_GENERIC_FEATURE_LAYOUT_H__ -#define __COCO_IR_GENERIC_FEATURE_LAYOUT_H__ - -#include "coco/IR/FeatureLayout.h" - -#include - -#include - -namespace coco -{ - -class GenericFeatureLayout final : public FeatureLayout -{ -public: - GenericFeatureLayout(const nncc::core::ADT::feature::Shape &shape); - -public: - static const FeatureLayout::ID *uid(void); - const FeatureLayout::ID *id(void) const override { return uid(); } - - uint32_t batch(void) const override { return _batch; } - const nncc::core::ADT::feature::Shape &shape(void) const override { return _shape; } - - ElemID &at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col); - ElemID at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const override; - - void reorder(const nncc::core::ADT::feature::Layout &l); - -private: - uint32_t offset(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const; - -private: - uint32_t _batch; - nncc::core::ADT::feature::Shape _shape; - -private: - std::vector _content; -}; - -} // namespace coco - -#endif // __COCO_IR_GENERIC_FEATURE_LAYOUT_H__ diff --git a/contrib/coco/core/src/IR/FeatureLayouts.cpp b/contrib/coco/core/src/IR/FeatureLayouts.cpp index fca5124..325dcf5 100644 --- a/contrib/coco/core/src/IR/FeatureLayouts.cpp +++ b/contrib/coco/core/src/IR/FeatureLayouts.cpp @@ -19,6 +19,8 @@ #include #include +#include + using namespace nncc::core::ADT::feature; // @@ -93,3 +95,66 @@ std::unique_ptr BHWC::create(const nncc::core::ADT::feature::Shape &shape) } // namespace FeatureLayouts } // namespace coco + +// +// Generic Layout +// +namespace coco +{ +namespace FeatureLayouts +{ + +Generic::Generic(const nncc::core::ADT::feature::Shape &shape) : _batch{1}, _shape{shape} +{ + _content.resize(_batch * num_elements(_shape)); +} + +const FeatureLayout::ID *Generic::uid(void) +{ + struct LayoutID final : public FeatureLayout::ID + { + }; + static LayoutID id; + return &id; +} + +uint32_t Generic::offset(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const +{ + static nncc::core::ADT::feature::CHWLayout l{}; + + uint32_t res = 0; + + res += b * num_elements(_shape); + res += l.offset(shape(), ch, row, col); + + return res; +} + +ElemID &Generic::at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) +{ + return _content.at(offset(b, ch, row, col)); +} + +ElemID Generic::at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const +{ + return _content.at(offset(b, ch, row, col)); +} + +void Generic::reorder(const nncc::core::ADT::feature::Layout &l) +{ + assert(_batch == 1); + + for (uint32_t ch = 0; ch < shape().depth(); ++ch) + { + for (uint32_t row = 0; row < shape().height(); ++row) + { + for (uint32_t col = 0; col < shape().width(); ++col) + { + at(0, ch, row, col) = ElemID{l.offset(shape(), ch, row, col)}; + } + } + } +} + +} // namespace FeatureLayouts +} // namespace coco diff --git a/contrib/coco/core/src/IR/FeatureObject.cpp b/contrib/coco/core/src/IR/FeatureObject.cpp index 550a0a5..ca1bf5e 100644 --- a/contrib/coco/core/src/IR/FeatureObject.cpp +++ b/contrib/coco/core/src/IR/FeatureObject.cpp @@ -15,6 +15,7 @@ */ #include "coco/IR/FeatureObject.h" +#include "coco/IR/FeatureLayouts.h" #include #include @@ -28,7 +29,7 @@ namespace coco FeatureObject::FeatureObject(const nncc::core::ADT::feature::Shape &shape) { - _layout = make_unique(shape); + _layout = make_unique(shape); } FeatureObject::~FeatureObject() diff --git a/contrib/coco/core/src/IR/GenericFeatureLayout.cpp b/contrib/coco/core/src/IR/GenericFeatureLayout.cpp deleted file mode 100644 index bafab0c..0000000 --- a/contrib/coco/core/src/IR/GenericFeatureLayout.cpp +++ /dev/null @@ -1,81 +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 "coco/IR/GenericFeatureLayout.h" - -#include - -#include - -using nncc::core::ADT::feature::num_elements; - -namespace coco -{ - -GenericFeatureLayout::GenericFeatureLayout(const nncc::core::ADT::feature::Shape &shape) - : _batch{1}, _shape{shape} -{ - _content.resize(_batch * num_elements(_shape)); -} - -const FeatureLayout::ID *GenericFeatureLayout::uid(void) -{ - struct LayoutID final : public FeatureLayout::ID - { - }; - static LayoutID id; - return &id; -} - -uint32_t GenericFeatureLayout::offset(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const -{ - static nncc::core::ADT::feature::CHWLayout l{}; - - uint32_t res = 0; - - res += b * num_elements(_shape); - res += l.offset(shape(), ch, row, col); - - return res; -} - -ElemID &GenericFeatureLayout::at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) -{ - return _content.at(offset(b, ch, row, col)); -} - -ElemID GenericFeatureLayout::at(uint32_t b, uint32_t ch, uint32_t row, uint32_t col) const -{ - return _content.at(offset(b, ch, row, col)); -} - -void GenericFeatureLayout::reorder(const nncc::core::ADT::feature::Layout &l) -{ - assert(_batch == 1); - - for (uint32_t ch = 0; ch < shape().depth(); ++ch) - { - for (uint32_t row = 0; row < shape().height(); ++row) - { - for (uint32_t col = 0; col < shape().width(); ++col) - { - at(0, ch, row, col) = ElemID{l.offset(shape(), ch, row, col)}; - } - } - } -} - -} // namespace coco -- 2.7.4