From cd63418fa2da5971231591c7b2280475b03787cb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladimir=20Plazun/AI=20Tools=20Lab=20/SRR/Engineer/?= =?utf8?q?=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Thu, 22 Aug 2019 13:07:07 +0300 Subject: [PATCH] [custom op] Bind custom kernel registry to each backend context at creation time (#6788) Make backend context hold information about registered custom kernels This will be later used by `CustomOperationManager` Signed-off-by: Vladimir Plazun --- runtimes/neurun/backend/acl_cl/Backend.h | 4 +++- runtimes/neurun/backend/acl_neon/Backend.h | 4 +++- runtimes/neurun/backend/cpu/Backend.h | 6 ++++-- runtimes/neurun/backend/cpu/KernelGenerator.cc | 5 +++-- runtimes/neurun/backend/cpu/KernelGenerator.h | 5 ++++- runtimes/neurun/core/include/backend/Backend.h | 6 ++++++ 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/runtimes/neurun/backend/acl_cl/Backend.h b/runtimes/neurun/backend/acl_cl/Backend.h index 2637d54..68789e2 100644 --- a/runtimes/neurun/backend/acl_cl/Backend.h +++ b/runtimes/neurun/backend/acl_cl/Backend.h @@ -26,6 +26,7 @@ #include "KernelGenerator.h" #include "ShapeFixer.h" #include "MemoryManager.h" +#include "backend/CustomKernelRegistry.h" namespace neurun { @@ -44,10 +45,11 @@ public: std::unique_ptr newContext(const model::Operands &operands) const override { auto tensor_builder = std::make_shared(createMemoryManager()); + auto kernel_registry = std::make_shared(); return std::unique_ptr{new BackendContext{ this, tensor_builder, std::make_shared(operands, tensor_builder), std::make_shared(operands, tensor_builder), - std::make_shared(operands, tensor_builder)}}; + std::make_shared(operands, tensor_builder), kernel_registry}}; } private: diff --git a/runtimes/neurun/backend/acl_neon/Backend.h b/runtimes/neurun/backend/acl_neon/Backend.h index 3a2bc90..a455db7 100644 --- a/runtimes/neurun/backend/acl_neon/Backend.h +++ b/runtimes/neurun/backend/acl_neon/Backend.h @@ -26,6 +26,7 @@ #include "KernelGenerator.h" #include "ShapeFixer.h" #include "MemoryManager.h" +#include "backend/CustomKernelRegistry.h" namespace neurun { @@ -44,10 +45,11 @@ public: std::unique_ptr newContext(const model::Operands &operands) const override { auto tensor_builder = std::make_shared(createMemoryManager()); + auto kernel_registry = std::make_shared(); return std::unique_ptr{new BackendContext{ this, tensor_builder, std::make_shared(operands, tensor_builder), std::make_shared(operands, tensor_builder), - std::make_shared(operands, tensor_builder)}}; + std::make_shared(operands, tensor_builder), kernel_registry}}; } private: diff --git a/runtimes/neurun/backend/cpu/Backend.h b/runtimes/neurun/backend/cpu/Backend.h index 33970e3..bb02f0c 100644 --- a/runtimes/neurun/backend/cpu/Backend.h +++ b/runtimes/neurun/backend/cpu/Backend.h @@ -25,6 +25,7 @@ #include "ConstantInitializer.h" #include "KernelGenerator.h" #include "ShapeFixer.h" +#include "backend/CustomKernelRegistry.h" namespace neurun { @@ -43,10 +44,11 @@ public: std::unique_ptr newContext(const model::Operands &operands) const override { auto tensor_builder = std::make_shared(); + auto kernel_registry = std::make_shared(); return std::unique_ptr{new BackendContext{ this, tensor_builder, std::make_shared(operands, tensor_builder), - std::make_shared(operands, tensor_builder), - std::make_shared(operands, tensor_builder)}}; + std::make_shared(operands, tensor_builder, kernel_registry), + std::make_shared(operands, tensor_builder), kernel_registry}}; } private: diff --git a/runtimes/neurun/backend/cpu/KernelGenerator.cc b/runtimes/neurun/backend/cpu/KernelGenerator.cc index 3b6a25b..f809daf 100644 --- a/runtimes/neurun/backend/cpu/KernelGenerator.cc +++ b/runtimes/neurun/backend/cpu/KernelGenerator.cc @@ -47,8 +47,9 @@ namespace cpu { KernelGenerator::KernelGenerator(const neurun::model::Operands &operand_ctx, - const std::shared_ptr &tensor_builder) - : _ctx(operand_ctx), _tensor_builder(tensor_builder) + const std::shared_ptr &tensor_builder, + const std::shared_ptr &kernel_registry) + : _ctx(operand_ctx), _tensor_builder(tensor_builder), _kernel_registry(kernel_registry) { // DO NOTHING } diff --git a/runtimes/neurun/backend/cpu/KernelGenerator.h b/runtimes/neurun/backend/cpu/KernelGenerator.h index 4c76661..d932658 100644 --- a/runtimes/neurun/backend/cpu/KernelGenerator.h +++ b/runtimes/neurun/backend/cpu/KernelGenerator.h @@ -20,6 +20,7 @@ #include "backend/IKernelGenerator.h" #include "model/Operands.h" #include "operand/Tensor.h" +#include "backend/CustomKernelRegistry.h" #include "TensorBuilder.h" namespace neurun @@ -33,7 +34,8 @@ class KernelGenerator : public IKernelGenerator { public: KernelGenerator(const neurun::model::Operands &ctx, - const std::shared_ptr &tensor_builder); + const std::shared_ptr &tensor_builder, + const std::shared_ptr &kernel_registry); using IKernelGenerator::visit; @@ -53,6 +55,7 @@ public: private: const neurun::model::Operands &_ctx; std::shared_ptr _tensor_builder; + std::shared_ptr _kernel_registry; model::Layout _current_subg_layout; }; diff --git a/runtimes/neurun/core/include/backend/Backend.h b/runtimes/neurun/core/include/backend/Backend.h index 4b0ee08..382d655 100644 --- a/runtimes/neurun/core/include/backend/Backend.h +++ b/runtimes/neurun/core/include/backend/Backend.h @@ -33,6 +33,11 @@ class IKernelGenerator; class IShapeFixer; struct ITensorBuilder; +namespace custom +{ +class KernelRegistry; +} + class BackendContext { public: @@ -41,6 +46,7 @@ public: std::shared_ptr constant_initializer; std::shared_ptr kernel_gen; std::shared_ptr shape_fixer; + std::shared_ptr _custom_kernel_registry; }; class Backend -- 2.7.4