From b812c7a91b2ff2ccae58b9f24b0c6805577b3646 Mon Sep 17 00:00:00 2001 From: wuchenghui Date: Tue, 27 Mar 2018 17:41:07 +0800 Subject: [PATCH] support new version of nnlib named nngraph --- .../hexagon/hexagon_control_wrapper.cc | 24 +++-- third_party/nnlib/hexagon_nn.h | 9 +- third_party/nnlib/libhexagon_controller.so | Bin 16464 -> 16484 bytes third_party/nnlib/ops.h | 99 +++++++++++------- 4 files changed, 85 insertions(+), 47 deletions(-) diff --git a/mace/core/runtime/hexagon/hexagon_control_wrapper.cc b/mace/core/runtime/hexagon/hexagon_control_wrapper.cc index 54439695..01be471d 100644 --- a/mace/core/runtime/hexagon/hexagon_control_wrapper.cc +++ b/mace/core/runtime/hexagon/hexagon_control_wrapper.cc @@ -58,9 +58,9 @@ bool HexagonControlWrapper::Config() { bool HexagonControlWrapper::Init() { LOG(INFO) << "Hexagon init"; - nn_id_ = hexagon_nn_init(); + MACE_CHECK(hexagon_nn_init(&nn_id_) == 0, "hexagon_nn_init failed"); ResetPerfInfo(); - return nn_id_ != 0; + return true; } bool HexagonControlWrapper::Finalize() { @@ -139,8 +139,19 @@ bool HexagonControlWrapper::SetupGraph(const NetDef &net_def, inputs[i].output_idx = op.node_input()[i].output_port(); } outputs.resize(op.out_max_byte_size().size()); - for (int i = 0; i < op.out_max_byte_size().size(); ++i) { - outputs[i].max_size = op.out_max_byte_size()[i]; + for (size_t i = 0; i < op.out_max_byte_size().size(); ++i) { + outputs[i].rank = op.output_shape()[i].dims().size(); + for (size_t j = 0; j < outputs[i].rank; ++j) { + outputs[i].max_sizes[j] = op.output_shape()[i].dims()[j]; + } + if (outputs[i].rank == 0) { + outputs[i].rank = 1; + outputs[i].max_sizes[0] = 1; + } + outputs[i].max_sizes[outputs[i].rank] = 0; + outputs[i].elementsize = GetEnumTypeSize(op.output_type()[i]); + outputs[i].zero_offset = 0; + outputs[i].stepsize = 0; } cached_inputs.push_back(inputs); cached_outputs.push_back(outputs); @@ -215,13 +226,13 @@ bool HexagonControlWrapper::SetupGraph(const NetDef &net_def, int64_t t1 = NowMicros(); - int res = hexagon_nn_prepare(nn_id_); + MACE_CHECK(hexagon_nn_prepare(nn_id_) == 0, "hexagon_nn_prepare failed"); int64_t t2 = NowMicros(); VLOG(1) << "Setup time: " << t1 - t0 << " " << t2 - t1; - return res == 0; + return true; } bool HexagonControlWrapper::TeardownGraph() { @@ -289,6 +300,7 @@ void HexagonControlWrapper::GetPerfInfo() { std::string node_type(node_type_buf); LOG(INFO) << "node id: " << perf_info[i].node_id << ", node type: " << node_type + << ", node type id: " << node_type_id << ", executions: " << perf_info[i].executions << ", duration: " << node_id_counters[node_id]; diff --git a/third_party/nnlib/hexagon_nn.h b/third_party/nnlib/hexagon_nn.h index 82308003..b8dbad35 100644 --- a/third_party/nnlib/hexagon_nn.h +++ b/third_party/nnlib/hexagon_nn.h @@ -77,8 +77,11 @@ struct hexagon_nn_input { }; typedef struct hexagon_nn_output hexagon_nn_output; struct hexagon_nn_output { - unsigned int max_size; - unsigned int unused; + unsigned int rank; + unsigned int max_sizes[8]; + unsigned int elementsize; + int zero_offset; + float stepsize; }; typedef struct hexagon_nn_perfinfo hexagon_nn_perfinfo; struct hexagon_nn_perfinfo { @@ -128,7 +131,7 @@ struct hexagon_nn_const_node { }; __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_config)(void) __QAIC_HEADER_ATTRIBUTE; -__QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_init)(void) +__QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_init)(hexagon_nn_nn_id* g) __QAIC_HEADER_ATTRIBUTE; __QAIC_HEADER_EXPORT int __QAIC_HEADER(hexagon_nn_set_debug_level)( hexagon_nn_nn_id id, int level) __QAIC_HEADER_ATTRIBUTE; diff --git a/third_party/nnlib/libhexagon_controller.so b/third_party/nnlib/libhexagon_controller.so index 42dbfabb2cb90dfdcff463f4d46cac981de0dacf..ff8ab3b024b9aa01d89a8b6b0bbfb470c5cc50e8 100755 GIT binary patch literal 16484 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 diff --git a/third_party/nnlib/ops.h b/third_party/nnlib/ops.h index a01e71ac..34a6d20e 100644 --- a/third_party/nnlib/ops.h +++ b/third_party/nnlib/ops.h @@ -1,37 +1,3 @@ -/* - * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted (subject to the limitations in the - * disclaimer below) provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * * Neither the name of The Linux Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE - * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT - * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER - * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN - * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ /* * You probably want to @@ -107,6 +73,7 @@ DEF_OP_WREF(QuantizedRelu_8) DEF_OP_WREF(QuantizedReluX_8) DEF_OP_WREF(QuantizedMaxPool_8) DEF_OP_WREF(QuantizedAvgPool_8) +DEF_OP_WREF(QuantizedL2Pool_8) DEF_OP_WREF(QuantizedConcat_8) DEF_OP_WREF(QuantizedBiasAdd_8p8to32) DEF_OP_WREF(Min_f) @@ -122,6 +89,7 @@ DEF_OP(MatMul_f) DEF_OP(Relu_f) DEF_OP(ReluX_f) DEF_OP(AvgPool_f) +DEF_OP(L2Pool_f) DEF_OP(MaxPool_f) DEF_OP(Concat_f) DEF_OP(BiasAdd_f) @@ -187,6 +155,7 @@ DEF_OP_WREF(QuantizedSigmoid_8) DEF_OP_WREF(QuantizedTanh_8) DEF_OP_WREF(QuantizedSoftmax_8) DEF_OP_WREF(QuantizedLRN_8) +DEF_OP_WREF(Quantizedpad2d_frame_8p) DEF_OP_WREF(QuantizedSub_8p8to32) DEF_OP_WREF(QuantizedMaximum_8) DEF_OP_WREF(QuantizedMinimum_8) @@ -194,23 +163,77 @@ DEF_OP_WREF(QuantizedMinimum_8) DEF_OP(Pad_f) DEF_OP(SpaceToBatchND_f) DEF_OP(BatchToSpaceND_f) -DEF_OP(QuantizedSpaceToBatchND_8) -DEF_OP(QuantizedBatchToSpaceND_8) DEF_OP(QuantizedPad_8) DEF_OP(ResizeBilinear_f) -DEF_OP(QuantizedResizeBilinear_8) DEF_OP(ConcatV2_f) DEF_OP(ConcatV2_int32) DEF_OP(Prod_int32) DEF_OP(Slice_int32) DEF_OP(QuantizedAdd_8p8to8) +DEF_OP(QuantizedResizeBilinear_8) +DEF_OP(Supernode_8x8p8to8_d32) +DEF_OP(Convert_to_d32) +DEF_OP(Convert_from_d32) +DEF_OP_WREF(QuantizedMaxPool_8_d32) +DEF_OP_WREF(QuantizedConcat_8_d32) +DEF_OP_WREF(QuantizedAvgPool_8_d32) + +DEF_OP(Sink) +DEF_OP_WREF(QuantizedPRelu_8_d32) DEF_OP_WREF(AutoQuantize) DEF_OP_WREF(QuantizedDepthwiseConv2d_8x8to32) DEF_OP(DepthwiseConv2d_f) -DEF_OP(QuantizedBiasAdd_8p8to8) +DEF_OP(DepthwiseSupernode_8x8p8to8) +DEF_OP(DepthwiseSupernode_8x8p8to8_d32) + +DEF_OP_WREF(QuantizedMul_8x8to8_d32) + +DEF_OP(FullyConnected_u8) +#if 0 + DEF_OP_WREF(QuantizedFC_8x8p8to8) +#endif + +DEF_OP_WREF(QuantizedAdd_8p8to8_d32) + +DEF_OP_WREF(QuantizedClamp_8) +DEF_OP(Clamp_f) +DEF_OP(QuantizeForTest_d32) +DEF_OP(Close_d32) +DEF_OP_WREF(QuantizedSub_8p8to8_d32) + +DEF_OP(InputSupernode_8x8p8to8_outd32) +DEF_OP(QuantizedLRN_8_d32) +DEF_OP_WREF(QuantizedBiasAdd_32p32to32) +DEF_OP_WREF(Quantize_int32) + +DEF_OP(Supernode_8x8p32to8) +DEF_OP(DepthwiseSupernode_8x8p32to8) +DEF_OP(Supernode_8x8p32to8_d32) +DEF_OP(DepthwiseSupernode_8x8p32to8_d32) +DEF_OP(InputSupernode_8x8p32to8_outd32) + +DEF_OP(PPrint_8_d32) +DEF_OP(PPrintWithPadding_8_d32) +DEF_OP_WREF(AutoQuantize_d32) + +DEF_OP_WREF(QuantizedTanh_8_d32) +DEF_OP_WREF(QuantizedSigmoid_8_d32) +DEF_OP_WREF(QuantizedSoftmax_8_d32) + + +DEF_OP_WREF(QuantizedL2Pool_8_d32) + +DEF_OP(Gather_f) +DEF_OP(Gather_int32) +DEF_OP(Gather_8) +DEF_OP(Table_f) +DEF_OP(Table_int32) +DEF_OP(Table_8) +DEF_OP(FillPadding_8_d32) +DEF_OP(QuantizedResizeBilinear_8_d32) #ifdef __SELF_DEF_OP_WREF #undef __SELF_DEF_OP_WREF #undef DEF_OP_WREF -- GitLab