From b8c6132dfd774045fbcf0ad2cb0394b79a295838 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: Fri, 12 Oct 2018 10:59:34 +0900 Subject: [PATCH] [coco] Introduce factory method for GenericKernelLayout (#1848) This commit introduces factory method (create) for GenericKernelLayout, and enforces users to construct it only via factory method. Signed-off-by: Jonghyun Park --- contrib/coco/core/include/coco/IR/GenericKernelLayout.h | 6 +++++- contrib/coco/core/src/IR.test.cpp | 2 +- contrib/coco/core/src/IR/GenericKernelLayout.cpp | 6 ++++++ contrib/coco/core/src/IR/KernelObject.cpp | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/contrib/coco/core/include/coco/IR/GenericKernelLayout.h b/contrib/coco/core/include/coco/IR/GenericKernelLayout.h index 145d7c8..c629bce 100644 --- a/contrib/coco/core/include/coco/IR/GenericKernelLayout.h +++ b/contrib/coco/core/include/coco/IR/GenericKernelLayout.h @@ -22,13 +22,14 @@ #include #include +#include namespace coco { class GenericKernelLayout final : public KernelLayout { -public: +private: GenericKernelLayout(const nncc::core::ADT::kernel::Shape &shape); public: @@ -48,6 +49,9 @@ private: private: std::vector _content; + +public: + static std::unique_ptr create(const nncc::core::ADT::kernel::Shape &shape); }; } // namespace coco diff --git a/contrib/coco/core/src/IR.test.cpp b/contrib/coco/core/src/IR.test.cpp index d4cc284..4ad9267 100644 --- a/contrib/coco/core/src/IR.test.cpp +++ b/contrib/coco/core/src/IR.test.cpp @@ -136,7 +136,7 @@ TEST(IR, caffe_conv) const nncc::core::ADT::kernel::Shape ker_shape{1, 1, 3, 3}; auto ker_bag = m->entity()->bag()->create(num_elements(ker_shape)); - auto ker_layout = make_unique(ker_shape); + auto ker_layout = coco::GenericKernelLayout::create(ker_shape); ker_layout->reorder(); diff --git a/contrib/coco/core/src/IR/GenericKernelLayout.cpp b/contrib/coco/core/src/IR/GenericKernelLayout.cpp index eb70e77..aa1e01b 100644 --- a/contrib/coco/core/src/IR/GenericKernelLayout.cpp +++ b/contrib/coco/core/src/IR/GenericKernelLayout.cpp @@ -21,6 +21,7 @@ #include using nncc::core::ADT::kernel::num_elements; +using nncc::core::ADT::kernel::Shape; namespace { @@ -74,4 +75,9 @@ void GenericKernelLayout::reorder(const nncc::core::ADT::kernel::Layout &l) } } +std::unique_ptr GenericKernelLayout::create(const Shape &shape) +{ + return std::unique_ptr{new GenericKernelLayout{shape}}; +} + } // namespace coco diff --git a/contrib/coco/core/src/IR/KernelObject.cpp b/contrib/coco/core/src/IR/KernelObject.cpp index 6d12ab5..9f17ef8 100644 --- a/contrib/coco/core/src/IR/KernelObject.cpp +++ b/contrib/coco/core/src/IR/KernelObject.cpp @@ -26,7 +26,7 @@ namespace coco KernelObject::KernelObject(const nncc::core::ADT::kernel::Shape &shape) { - _layout = make_unique(shape); + _layout = GenericKernelLayout::create(shape); } KernelObject::~KernelObject() -- 2.7.4