diff --git a/CMakeLists.txt b/CMakeLists.txt index e42956ba2cfc63954d7a1651b9856da6b13e8d79..4a1141ea48ec12bdfbb4937a3d888e3397bcb711 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 f462336c05373b6a0254cb5109911e1fea8379f2..6ccadd78effbcb8fcbc426734b5c8f046390a3e7 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 273696f25d6c57c7a6c30cca4ed76b07318c3679..cb6df0fc0a9349952a8e339e97b309cf2a82e2ef 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 2a7751cd2a635ca83a602f7a53a1487e263b8c78..6d78146c8532ec1b26cd74cd28d574b76a10a434 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 2de271e771db1e46aef8218399e2cc049afa1ffe..28f5b5954f4b69aa8391afc4c703e1916499ebff 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 5515dd6faf17178359f0b7759e6dd6c9cb705d2b..ebd71c59ad3b5f10c7c6d2979a653241ecb6dadd 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 ccdfe2afa40726d93d1f777f6af3461ce2ef72ce..dfcd4e706725cd384fa02eee5013f128cb493522 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 5fc055b3248bada5ddf3cc0a950810a602bc1061..e2424f56716fc71387272fd0799e9dc7f0591ff6 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 c71c3352972fd73d6e605835c53c0f9b3e933cb2..443c3ce7f58b5d533b3ea21928d1ee0b1456ede1 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 7594d59fed66f369eb35f9054ec35df299a69337..f1e4301e250be9b6a568935284099163e631c2c1 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 067e59f3b2f765d7ec6f5ed69da6b4fc5cc825c1..345e79cc90e2671f497389fdc18f5b7c5ef1ed78 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 220b27a83abed4c8c3393c552e087f78ca4e1fb4..93179f1e1ac95a911ce252343efa753f6dfc0532 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 6d4c1ed974f7776a20f7ca5c71e642227bfb6d6f..a300477e4723fba2649902bef51608803bda69ae 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() {}