From bc01a8e002a52ae196d3c90b3634e837f0726797 Mon Sep 17 00:00:00 2001 From: luxuhui Date: Wed, 17 Jun 2020 13:24:36 +0800 Subject: [PATCH] fix: fix the interface compatibility issue N/A Signed-off-by: Luxuhui --- include/mace/public/mace.h | 6 ++++++ mace/core/runtime/apu/apu_wrapper.cc | 6 ++++-- mace/core/runtime/hexagon/hexagon_dsp_wrapper.cc | 8 +++++--- mace/core/runtime/hexagon/hexagon_hta_wrapper.cc | 9 ++++++--- mace/core/workspace.cc | 12 ++++++++---- mace/libmace/BUILD.bazel | 6 ++++++ mace/libmace/mace.cc | 7 +++++++ mace/mace.bzl | 4 ++-- third_party/rpcmem/BUILD.bazel | 14 ++++++++++++-- 9 files changed, 56 insertions(+), 16 deletions(-) diff --git a/include/mace/public/mace.h b/include/mace/public/mace.h index 6417fe98..77488e77 100644 --- a/include/mace/public/mace.h +++ b/include/mace/public/mace.h @@ -431,6 +431,12 @@ class MACE_API MaceEngine { std::map *outputs, RunMetadata *run_metadata); + // @Deprecated, will be removed in future version + MaceStatus Init(const NetDef *net_def, + const std::vector &input_nodes, + const std::vector &output_nodes, + const unsigned char *model_data); + private: class Impl; std::unique_ptr impl_; diff --git a/mace/core/runtime/apu/apu_wrapper.cc b/mace/core/runtime/apu/apu_wrapper.cc index 08740364..42b8956a 100644 --- a/mace/core/runtime/apu/apu_wrapper.cc +++ b/mace/core/runtime/apu/apu_wrapper.cc @@ -106,8 +106,10 @@ bool ApuWrapper::Init(const NetDef &net_def, } const auto tensor_end = const_tensor.offset() + const_tensor->data_size() * GetEnumTypeSize(const_tensor.data_type()); - MACE_CHECK(tensor_end <= model_data_size, "tensor_end (", tensor_end, - ") should <= ", model_data_size); + if (model_data_size >= 0) { + MACE_CHECK(tensor_end <= model_data_size, "tensor_end (", tensor_end, + ") should <= ", model_data_size); + } tensor.data_buf = const_cast(model_data + const_tensor.offset()); const_tensors.push_back(tensor); diff --git a/mace/core/runtime/hexagon/hexagon_dsp_wrapper.cc b/mace/core/runtime/hexagon/hexagon_dsp_wrapper.cc index 4519e19c..e5c7086e 100644 --- a/mace/core/runtime/hexagon/hexagon_dsp_wrapper.cc +++ b/mace/core/runtime/hexagon/hexagon_dsp_wrapper.cc @@ -189,9 +189,11 @@ bool HexagonDSPWrapper::SetupGraph(const NetDef &net_def, data = const_cast(model_data + const_tensor.offset()); data_len = const_tensor.data_size() * GetEnumTypeSize(const_tensor.data_type()); - MACE_CHECK(const_tensor.offset() + data_len <= model_data_size, - "tensor end (", const_tensor.offset() + data_len, - ") should <= ", model_data_size); + if (model_data_size >= 0) { + MACE_CHECK(const_tensor.offset() + data_len <= model_data_size, + "tensor end (", const_tensor.offset() + data_len, + ") should <= ", model_data_size); + } } MACE_CHECK( hexagon_nn_append_const_node(nn_id_, diff --git a/mace/core/runtime/hexagon/hexagon_hta_wrapper.cc b/mace/core/runtime/hexagon/hexagon_hta_wrapper.cc index ed70e48e..ebcdf3cd 100644 --- a/mace/core/runtime/hexagon/hexagon_hta_wrapper.cc +++ b/mace/core/runtime/hexagon/hexagon_hta_wrapper.cc @@ -160,9 +160,12 @@ bool HexagonHTAWrapper::SetupGraph(const NetDef &net_def, const_cast(model_data + const_tensor.offset()); const_node_data_len = const_tensor.data_size() * GetEnumTypeSize(const_tensor.data_type()); - MACE_CHECK(const_tensor.offset() + const_node_data_len <= model_data_size, - "tensor end (", const_tensor.offset() + const_node_data_len, - ") should <= ", model_data_size); + if (model_data_size >= 0) { + MACE_CHECK( + const_tensor.offset() + const_node_data_len <= model_data_size, + "tensor end (", const_tensor.offset() + const_node_data_len, + ") should <= ", model_data_size); + } } hexagon_hta_nn_append_const_node(nn_id_, diff --git a/mace/core/workspace.cc b/mace/core/workspace.cc index c735b2fb..77ecfa77 100644 --- a/mace/core/workspace.cc +++ b/mace/core/workspace.cc @@ -123,8 +123,10 @@ MaceStatus Workspace::LoadModelTensor(const NetDef &net_def, Device *device, MACE_LATENCY_LOGGER(1, "Load model tensors"); index_t valid_data_size = GetModelValidSize(net_def); VLOG(3) << "Model valid data size: " << valid_data_size; - MACE_CHECK(valid_data_size <= model_data_size, - valid_data_size, "should be smaller than", model_data_size); + if (model_data_size >= 0) { + MACE_CHECK(valid_data_size <= model_data_size, + valid_data_size, "should be smaller than", model_data_size); + } const DeviceType device_type = device->device_type(); if (valid_data_size > 0) { @@ -170,8 +172,10 @@ MaceStatus Workspace::LoadModelTensor(const NetDef &net_def, Device *device, "Tensor's data_size not equal with the shape"); const index_t tensor_end = const_tensor.offset() + tensor->size() * GetEnumTypeSize(const_tensor.data_type()); - MACE_CHECK(tensor_end <= model_data_size, "tensor_end (", tensor_end, - ") should <= ", model_data_size); + if (model_data_size >= 0) { + MACE_CHECK(tensor_end <= model_data_size, "tensor_end (", tensor_end, + ") should <= ", model_data_size); + } if (device_type == DeviceType::CPU && const_tensor.data_type() == DataType::DT_HALF) { diff --git a/mace/libmace/BUILD.bazel b/mace/libmace/BUILD.bazel index 051a57e7..f7935811 100644 --- a/mace/libmace/BUILD.bazel +++ b/mace/libmace/BUILD.bazel @@ -119,6 +119,8 @@ genrule( ]) + if_opencl_enabled([ "//mace/ops:opencl_kernels", "//mace/codegen:generated_opencl", + ]) + if_rpcmem_enabled([ + "//third_party/rpcmem:rpcmem.a", ]) + if_neon_enabled([ "//mace/ops:arm_neon_kernels", ]), @@ -165,6 +167,10 @@ genrule( "$(locations //mace/codegen:generated_opencl) ", default_value = "", ) + + if_rpcmem_enabled( + "$(locations //third_party/rpcmem:rpcmem.a) ", + default_value = "", + ) + "$@ " + "$$tmp_mri_file);" + if_darwin( diff --git a/mace/libmace/mace.cc b/mace/libmace/mace.cc index a03e8774..743d10c6 100644 --- a/mace/libmace/mace.cc +++ b/mace/libmace/mace.cc @@ -1032,6 +1032,13 @@ MaceStatus MaceEngine::Run(const std::map &inputs, return impl_->Run(inputs, outputs, nullptr); } +MaceStatus MaceEngine::Init(const NetDef *net_def, + const std::vector &input_nodes, + const std::vector &output_nodes, + const unsigned char *model_data) { + return impl_->Init(net_def, input_nodes, output_nodes, model_data, -1); +} + MaceStatus CreateMaceEngineFromProto( const unsigned char *model_graph_proto, const size_t model_graph_proto_size, diff --git a/mace/mace.bzl b/mace/mace.bzl index 895cc9ba..007b8b65 100644 --- a/mace/mace.bzl +++ b/mace/mace.bzl @@ -109,10 +109,10 @@ def if_bfloat16_enabled(a): "//conditions:default": [], }) -def if_rpcmem_enabled(a): +def if_rpcmem_enabled(a, default_value = []): return select({ "//mace:rpcmem_enabled": a, - "//conditions:default": [], + "//conditions:default": default_value, }) def mace_version_genrule(): diff --git a/third_party/rpcmem/BUILD.bazel b/third_party/rpcmem/BUILD.bazel index 1a1a061c..5bfee305 100644 --- a/third_party/rpcmem/BUILD.bazel +++ b/third_party/rpcmem/BUILD.bazel @@ -1,4 +1,7 @@ # These files are generated fron rpcmem project +package( + default_visibility = ["//visibility:public"], +) licenses(["notice"]) @@ -10,13 +13,20 @@ load( "if_android_armv7", ) -cc_library( - name = "rpcmem", +filegroup( + name = "rpcmem.a", srcs = if_android_armv7([ "armeabi-v7a/rpcmem.a", ]) + if_android_arm64([ "arm64-v8a/rpcmem.a", ]), +) + +cc_library( + name = "rpcmem", + srcs = [ + ":rpcmem.a", + ], hdrs = [ "rpcmem.h", ], -- GitLab