From 95b761645bdf693cf5cc7ab91b9f7ee232714e0b Mon Sep 17 00:00:00 2001 From: Jiansong Wang Date: Tue, 22 Sep 2020 15:47:29 +0800 Subject: [PATCH] Manually merge the missed part of imagination nna integration after pull upstream develop. test=develop --- CMakeLists.txt | 2 +- .../imagination_nna/imgdnn_manager.cc | 4 +- .../backends/imagination_nna/imgdnn_manager.h | 1 - lite/core/CMakeLists.txt | 2 +- lite/kernels/imagination_nna/CMakeLists.txt | 2 +- .../kernels/imagination_nna/bridges/act_op.cc | 43 +------------------ .../imagination_nna/bridges/batch_norm_op.cc | 2 +- .../imagination_nna/bridges/conv_op.cc | 2 +- lite/kernels/imagination_nna/bridges/fc_op.cc | 3 +- .../imagination_nna/bridges/pool_op.cc | 2 +- .../imagination_nna/bridges/softmax_op.cc | 3 +- .../imagination_nna/subgraph_compute.cc | 6 +-- .../imagination_nna/subgraph_compute.h | 19 ++++---- 13 files changed, 23 insertions(+), 68 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e42956ba2c..4a1141ea48 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -87,7 +87,7 @@ lite_option(LITE_WITH_NPU "Enable NPU in lite mode" OFF) lite_option(LITE_WITH_RKNPU "Enable RKNPU in lite mode" OFF) lite_option(LITE_WITH_MLU "Enable MLU in lite mode" OFF) lite_option(LITE_WITH_HUAWEI_ASCEND_NPU "Enable HUAWEI_ASCEND_NPU in lite mode" OFF) -lite_option(LITE_WITH_IMAGINATION "Enable IMAGINATION_NNA in lite mode" OFF) +lite_option(LITE_WITH_IMAGINATION_NNA "Enable IMAGINATION_NNA in lite mode" OFF) lite_option(LITE_WITH_XPU "Enable XPU in lite mode" OFF) lite_option(LITE_WITH_XTCL "Enable XPU via XTCL" OFF IF LITE_WITH_XPU) lite_option(LITE_WITH_BM "Enable BM in lite mode" OFF) diff --git a/lite/backends/imagination_nna/imgdnn_manager.cc b/lite/backends/imagination_nna/imgdnn_manager.cc index f462336c05..6ccadd78ef 100644 --- a/lite/backends/imagination_nna/imgdnn_manager.cc +++ b/lite/backends/imagination_nna/imgdnn_manager.cc @@ -342,9 +342,9 @@ imgdnn_network_object ImgdnnManager::createNetworkObject( "nna_config/mirage_hw_config06_23_2_6500_301.json"; const std::string mapconfig = "nna_config/mapconfig_q8a.json"; - testConfigFileExists(hwconfig, mapconfig) + testConfigFileExists(hwconfig, mapconfig); - std::string options_str; + std::string options_str; options_str += "-h " + hwconfig; options_str += " -m " + mapconfig; // Add " --dump_debug_binaries enabled" to options_str if need debug info. diff --git a/lite/backends/imagination_nna/imgdnn_manager.h b/lite/backends/imagination_nna/imgdnn_manager.h index 273696f25d..cb6df0fc0a 100644 --- a/lite/backends/imagination_nna/imgdnn_manager.h +++ b/lite/backends/imagination_nna/imgdnn_manager.h @@ -59,7 +59,6 @@ class ImgdnnManager { bool testConfigFileExists(const std::string &hwconfig, const std::string &mapconfig); - { return (access(name.c_str(), F_OK) != -1); } public: ImgdnnManager(); diff --git a/lite/core/CMakeLists.txt b/lite/core/CMakeLists.txt index 2a7751cd2a..6d78146c85 100644 --- a/lite/core/CMakeLists.txt +++ b/lite/core/CMakeLists.txt @@ -142,7 +142,7 @@ if (NOT LITE_ON_TINY_PUBLISH) add_subdirectory(arena) endif() -if(LITE_WITH_NPU OR LITE_WITH_XTCL OR LITE_WITH_BM OR LITE_WITH_RKNPU OR LITE_WITH_MLU OR LITE_WITH_APU OR LITE_WITH_HUAWEI_ASCEND_NPU) +if(LITE_WITH_NPU OR LITE_WITH_XTCL OR LITE_WITH_BM OR LITE_WITH_RKNPU OR LITE_WITH_MLU OR LITE_WITH_APU OR LITE_WITH_HUAWEI_ASCEND_NPU OR LITE_WITH_IMAGINATION_NNA) lite_cc_library(subgraph_bridge_registry SRCS subgraph_bridge_registry.cc DEPS op) diff --git a/lite/kernels/imagination_nna/CMakeLists.txt b/lite/kernels/imagination_nna/CMakeLists.txt index 2de271e771..28f5b5954f 100644 --- a/lite/kernels/imagination_nna/CMakeLists.txt +++ b/lite/kernels/imagination_nna/CMakeLists.txt @@ -1,3 +1,3 @@ add_subdirectory(bridges) -add_kernel(subgraph_compute_imagination_nna IMAGINATION_NNA basic SRCS subgraph_compute.cc DEPS ${lite_kernel_deps} device_imagination_nna subgraph_bridge_engine ${imagination_nna_subgraph_bridges}) +add_kernel(subgraph_compute_imagination_nna IMAGINATION_NNA basic SRCS subgraph_compute.cc DEPS ${lite_kernel_deps} device_imagination_nna subgraph_engine_base ${imagination_nna_subgraph_bridges}) diff --git a/lite/kernels/imagination_nna/bridges/act_op.cc b/lite/kernels/imagination_nna/bridges/act_op.cc index 5515dd6faf..ebd71c59ad 100644 --- a/lite/kernels/imagination_nna/bridges/act_op.cc +++ b/lite/kernels/imagination_nna/bridges/act_op.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "lite/core/subgraph_bridge_registry.h" #include "lite/kernels/imagination_nna/bridges/graph.h" #include "lite/kernels/imagination_nna/bridges/utility.h" -#include "lite/kernels/npu/bridges/registry.h" namespace paddle { namespace lite { @@ -68,47 +68,6 @@ int ActConverter(void* ctx, OpLite* op, KernelBase* kernel) { } // namespace subgraph } // namespace lite } // namespace paddle -#if 0 -REGISTER_SUBGRAPH_BRIDGE( - sigmoid, - kImaginationNNA, - paddle::lite::subgraph::imagination_nna::ActConverter); -#endif REGISTER_SUBGRAPH_BRIDGE(relu, kImaginationNNA, paddle::lite::subgraph::imagination_nna::ActConverter); -#if 0 -REGISTER_SUBGRAPH_BRIDGE( - tanh, kImaginationNNA, paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - relu_clipped, - kImaginationNNA, - paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - relu6, kImaginationNNA, paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - leaky_relu, - kImaginationNNA, - paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - abs, kImaginationNNA, paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - softsign, - kImaginationNNA, - paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - softplus, - kImaginationNNA, - paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - hard_sigmoid, - kImaginationNNA, - paddle::lite::subgraph::imagination_nna::ActConverter); - -REGISTER_SUBGRAPH_BRIDGE( - log, kImaginationNNA, paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - square, kImaginationNNA, paddle::lite::subgraph::imagination_nna::ActConverter); -REGISTER_SUBGRAPH_BRIDGE( - sqrt, kImaginationNNA, paddle::lite::subgraph::imagination_nna::ActConverter); -#endif diff --git a/lite/kernels/imagination_nna/bridges/batch_norm_op.cc b/lite/kernels/imagination_nna/bridges/batch_norm_op.cc index ccdfe2afa4..dfcd4e7067 100644 --- a/lite/kernels/imagination_nna/bridges/batch_norm_op.cc +++ b/lite/kernels/imagination_nna/bridges/batch_norm_op.cc @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "lite/core/subgraph_bridge_registry.h" #include "lite/kernels/imagination_nna/bridges/graph.h" -#include "lite/kernels/imagination_nna/bridges/registry.h" #include "lite/kernels/imagination_nna/bridges/utility.h" namespace paddle { diff --git a/lite/kernels/imagination_nna/bridges/conv_op.cc b/lite/kernels/imagination_nna/bridges/conv_op.cc index 5fc055b324..e2424f5671 100644 --- a/lite/kernels/imagination_nna/bridges/conv_op.cc +++ b/lite/kernels/imagination_nna/bridges/conv_op.cc @@ -13,9 +13,9 @@ // limitations under the License. #include "lite/operators/conv_op.h" +#include "lite/core/subgraph_bridge_registry.h" #include "lite/kernels/imagination_nna/bridges/graph.h" #include "lite/kernels/imagination_nna/bridges/utility.h" -#include "lite/kernels/npu/bridges/registry.h" namespace paddle { namespace lite { diff --git a/lite/kernels/imagination_nna/bridges/fc_op.cc b/lite/kernels/imagination_nna/bridges/fc_op.cc index c71c335297..443c3ce7f5 100644 --- a/lite/kernels/imagination_nna/bridges/fc_op.cc +++ b/lite/kernels/imagination_nna/bridges/fc_op.cc @@ -12,9 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "imgdnn.h" // NOLINT +#include "lite/core/subgraph_bridge_registry.h" #include "lite/kernels/imagination_nna/bridges/graph.h" -#include "lite/kernels/npu/bridges/registry.h" namespace paddle { namespace lite { diff --git a/lite/kernels/imagination_nna/bridges/pool_op.cc b/lite/kernels/imagination_nna/bridges/pool_op.cc index 7594d59fed..f1e4301e25 100644 --- a/lite/kernels/imagination_nna/bridges/pool_op.cc +++ b/lite/kernels/imagination_nna/bridges/pool_op.cc @@ -14,9 +14,9 @@ #include "lite/operators/pool_op.h" #include "imgdnn.h" // NOLINT +#include "lite/core/subgraph_bridge_registry.h" #include "lite/kernels/imagination_nna/bridges/graph.h" #include "lite/kernels/imagination_nna/bridges/utility.h" -#include "lite/kernels/npu/bridges/registry.h" namespace paddle { namespace lite { diff --git a/lite/kernels/imagination_nna/bridges/softmax_op.cc b/lite/kernels/imagination_nna/bridges/softmax_op.cc index 067e59f3b2..345e79cc90 100644 --- a/lite/kernels/imagination_nna/bridges/softmax_op.cc +++ b/lite/kernels/imagination_nna/bridges/softmax_op.cc @@ -12,9 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +#include "lite/core/subgraph_bridge_registry.h" #include "lite/kernels/imagination_nna/bridges/graph.h" -#include "lite/kernels/imagination_nna/bridges/registry.h" -#include "lite/kernels/npu/bridges/utility.h" namespace paddle { namespace lite { diff --git a/lite/kernels/imagination_nna/subgraph_compute.cc b/lite/kernels/imagination_nna/subgraph_compute.cc index 220b27a83a..93179f1e1a 100644 --- a/lite/kernels/imagination_nna/subgraph_compute.cc +++ b/lite/kernels/imagination_nna/subgraph_compute.cc @@ -33,7 +33,7 @@ bool SubgraphEngine::BuildDeviceProgram() { // Convert all of ops and their input vars and weights and added into the NNA // IMG IR graph subgraph::imagination_nna::Graph graph{&imgdnn_mgr_}; - const auto& bridges = subgraph::Registry::Instance(); + const auto& bridges = subgraph::SubgraphBridgeRegistry::Instance(); if (!origin_program_) { BuildOriginProgram(); } @@ -57,8 +57,8 @@ bool SubgraphEngine::BuildDeviceProgram() { } } - // Collect the valid input and output nodes in the IMGDNN IR graph and - // update the input and output names + // Collect the valid input and output nodes in the IMGDNN IR graph and update + // the input and output names device_inames_.clear(); std::vector device_inodes; for (auto& input_name : input_names_) { diff --git a/lite/kernels/imagination_nna/subgraph_compute.h b/lite/kernels/imagination_nna/subgraph_compute.h index 6d4c1ed974..a300477e47 100644 --- a/lite/kernels/imagination_nna/subgraph_compute.h +++ b/lite/kernels/imagination_nna/subgraph_compute.h @@ -17,19 +17,18 @@ #include #include #include -#include "imgdnn.h" // NOLINT #include "lite/backends/imagination_nna/imgdnn_manager.h" #include "lite/core/kernel.h" +#include "lite/core/subgraph_bridge_registry.h" +#include "lite/core/subgraph_engine_base.h" #include "lite/kernels/imagination_nna/bridges/graph.h" -#include "lite/kernels/npu/bridges/engine.h" -#include "lite/kernels/npu/bridges/registry.h" namespace paddle { namespace lite { namespace kernels { namespace imagination_nna { -class SubgraphEngine : public subgraph::Engine { +class SubgraphEngine : public subgraph::SubgraphEngineBase { public: SubgraphEngine(KernelContext* ctx, int block_idx, @@ -37,12 +36,12 @@ class SubgraphEngine : public subgraph::Engine { Scope* exec_scope, const std::vector& input_names, const std::vector& output_names) - : subgraph::Engine(ctx, - block_idx, - program_desc, - exec_scope, - input_names, - output_names) {} + : subgraph::SubgraphEngineBase(ctx, + block_idx, + program_desc, + exec_scope, + input_names, + output_names) {} ~SubgraphEngine() {} -- GitLab