From 919ba7a9d4009f0ca6e62407ffa8d24ab8683960 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ivan=20Vagin/AI=20Tools=20Lab=20/SRR/Engineer/=EC=82=BC?= =?utf8?q?=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Mon, 21 Jan 2019 13:30:49 +0300 Subject: [PATCH] [nnc] Fixed nnc test coverage collecting (#2889) [nnc] Fixed nnc test coverage collecting Signed-off-by: Ivan Vagin --- contrib/nnc/cmake/utils.cmake | 2 +- contrib/nnc/core/CMakeLists.txt | 4 ++-- contrib/nnc/include/core/modelIR/Scalar.h | 4 +++- .../nnc/include/passes/soft_backend/CPPGenerator.h | 2 +- .../passes/acl_soft_backend/AclCppOpGenerator.cpp | 26 +++++++++++----------- .../acl_soft_backend/ArtifactGeneratorCppCode.cpp | 6 ++--- .../acl_soft_backend/ArtifactGeneratorCppDecl.cpp | 20 ++++++++--------- contrib/nnc/passes/interpreter/Interpreter.cpp | 4 ++-- .../nnc/passes/interpreter/interpreter_pass.cpp | 4 ++-- contrib/nnc/passes/interpreter/ops/Bias.cpp | 2 +- contrib/nnc/passes/interpreter/ops/Gather.cpp | 1 - contrib/nnc/passes/interpreter/ops/Reshape.h | 1 - contrib/nnc/passes/interpreter/ops/Scale.cpp | 2 +- contrib/nnc/passes/soft_backend/CGenerator.cpp | 15 +++++-------- contrib/nnc/passes/soft_backend/ModelAnalyzer.h | 4 ++-- 15 files changed, 46 insertions(+), 51 deletions(-) diff --git a/contrib/nnc/cmake/utils.cmake b/contrib/nnc/cmake/utils.cmake index bed8593..630dd11 100644 --- a/contrib/nnc/cmake/utils.cmake +++ b/contrib/nnc/cmake/utils.cmake @@ -40,7 +40,7 @@ endfunction() # add nnc library as target function(nnc_add_library) - add_library(${ARGV}) + add_nncc_library(${ARGV}) get_target_property(LIBS ${NNC_TARGET_EXECUTABLE} LINK_LIBRARIES) if(LIBS MATCHES NOTFOUND) diff --git a/contrib/nnc/core/CMakeLists.txt b/contrib/nnc/core/CMakeLists.txt index 12bb9b6..3251204 100644 --- a/contrib/nnc/core/CMakeLists.txt +++ b/contrib/nnc/core/CMakeLists.txt @@ -40,11 +40,11 @@ if(Protobuf_FOUND) set(SERIALIZER_SOURCES "modelIR/Serializer.cpp" "modelIR/Deserializer.cpp") - add_library(nnc_core SHARED ${SOURCES} ${SERIALIZER_SOURCES}) + add_nncc_library(nnc_core SHARED ${SOURCES} ${SERIALIZER_SOURCES}) target_link_libraries(nnc_core PUBLIC model_ir_proto) else() message(WARNING "Protobuf not found, NNC serialization not available") - add_library(nnc_core SHARED ${SOURCES}) + add_nncc_library(nnc_core SHARED ${SOURCES}) endif() set_target_properties(nnc_core PROPERTIES LINKER_LANGUAGE CXX) diff --git a/contrib/nnc/include/core/modelIR/Scalar.h b/contrib/nnc/include/core/modelIR/Scalar.h index 01f1444..deb7c67 100644 --- a/contrib/nnc/include/core/modelIR/Scalar.h +++ b/contrib/nnc/include/core/modelIR/Scalar.h @@ -64,6 +64,8 @@ public: return 4; case DTYPE::INT64: return 8; + default: + assert(false); } } /** @@ -72,7 +74,7 @@ public: */ template T get() const { - assert(sizeof(T) <= getDataSize()); + assert(static_cast(sizeof(T)) <= getDataSize()); T result; memcpy(&result, _data, sizeof(T)); return result; diff --git a/contrib/nnc/include/passes/soft_backend/CPPGenerator.h b/contrib/nnc/include/passes/soft_backend/CPPGenerator.h index f704937..a6ba4fc 100644 --- a/contrib/nnc/include/passes/soft_backend/CPPGenerator.h +++ b/contrib/nnc/include/passes/soft_backend/CPPGenerator.h @@ -22,7 +22,7 @@ namespace nnc { -class TensorDescription; +struct TensorDescription; /** * @brief CPPCodeGenerator implements interfaces that provides BaseCodeGenerator for C++ language diff --git a/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp b/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp index 3d74d66..a618fe5 100644 --- a/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp +++ b/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp @@ -109,7 +109,7 @@ void AclCppOpGenerator::visit(ops::ConcatOp& op) { "arm_compute::DataLayoutDimension::WIDTH"}; int axis = op.getAxis(); - assert(axis >= 0 && axis < sizeof(axis_names) / sizeof(axis_names[0]) && + assert(axis >= 0 && axis < static_cast(sizeof(axis_names) / sizeof(axis_names[0])) && "axis outside this range is not supported in ACL"); const char* axis_name = axis_names[axis]; @@ -369,7 +369,7 @@ void AclCppOpGenerator::visit(ops::FullyConnectedOp& op) { genLayerExecution(layer); } -void AclCppOpGenerator::visit(ops::GemmOp& op) { +void AclCppOpGenerator::visit(ops::GemmOp&) { assert(false); } @@ -606,11 +606,11 @@ void AclCppOpGenerator::visit(ops::ScaleOp& op) { _outputs.insert(&op); } -void AclCppOpGenerator::visit(mir::ops::SliceOp& op) { +void AclCppOpGenerator::visit(mir::ops::SliceOp&) { throw AclCppException( "Unimplemented operation: SliceOp"); } -void AclCppOpGenerator::visit(ops::BatchNormOp& op) { +void AclCppOpGenerator::visit(ops::BatchNormOp&) { // Not supported in our framework, but present in ACL API. throw AclCppException("Not supported in inference yet."); } @@ -674,11 +674,11 @@ void AclCppOpGenerator::visit(ops::DeConv2DOp& op) { genConvolution(op, "arm_compute::CLDeconvolutionLayer", "_deconvolution_layer"); } -void AclCppOpGenerator::visit(ops::EluOp& op) { +void AclCppOpGenerator::visit(ops::EluOp&) { throw AclCppException("Not supported by the ACL library yet."); } -void AclCppOpGenerator::visit(ops::PadOp& op) { +void AclCppOpGenerator::visit(ops::PadOp&) { throw AclCppException("Not supported by the ACL library yet."); } @@ -885,8 +885,8 @@ AclCppOpGenerator::genVectorInitializedVar(ArtifactBlock* block, const string& t const string& name, const vector & init) { list> dims; - for (int i = 0; i < init.size(); ++i) - dims.push_back(AF::lit(to_string(init[i]))); + for (const auto& v : init) + dims.push_back(AF::lit(to_string(v))); auto shape_var = block->var(type, name, {}, dims); auto shape_id = shape_var->use(); @@ -984,11 +984,11 @@ void AclCppOpGenerator::fillTensor(shared_ptr tensor_id, const strin _fillings.push_back(make_pair(tensor_id, val)); } -void AclCppOpGenerator::visit(ops::SqueezeOp& op) { +void AclCppOpGenerator::visit(ops::SqueezeOp&) { throw AclCppException("Unimplemented operation: Squeeze"); } -void AclCppOpGenerator::visit(ops::SqrtOp& op) { +void AclCppOpGenerator::visit(ops::SqrtOp&) { throw AclCppException("Unimplemented operation: Sqrt"); } @@ -1026,11 +1026,11 @@ void AclCppOpGenerator::genLayerExecution(shared_ptr layer_id) { _infBlock->call("run", {}, layer_id); } -void AclCppOpGenerator::visit(mir::ops::ResizeOp& op) { +void AclCppOpGenerator::visit(mir::ops::ResizeOp&) { throw AclCppException("Unimplemented operation: Resize"); } -void AclCppOpGenerator::visit(mir::ops::ReduceFOp& op) { +void AclCppOpGenerator::visit(mir::ops::ReduceFOp&) { throw AclCppException("Unimplemented operation: ReduceFOp"); } @@ -1092,7 +1092,7 @@ void AclCppOpGenerator::visit(mir::ops::TransposeOp& op) { genTranspose(input, output, mir_axis_order, false); } -void AclCppOpGenerator::visit(mir::ops::GatherOp& op) { +void AclCppOpGenerator::visit(mir::ops::GatherOp&) { throw AclCppException("Unimplemented operation: GatherOp"); } diff --git a/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppCode.cpp b/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppCode.cpp index d81fdf9..ad58901 100644 --- a/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppCode.cpp +++ b/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppCode.cpp @@ -127,11 +127,11 @@ void ArtifactGeneratorCppCode::visit(const ArtifactRet* node) { node->expr()->accept(this); } -void ArtifactGeneratorCppCode::visit(const ArtifactBreak* node) { +void ArtifactGeneratorCppCode::visit(const ArtifactBreak*) { _out << "break"; } -void ArtifactGeneratorCppCode::visit(const ArtifactCont* node) { +void ArtifactGeneratorCppCode::visit(const ArtifactCont*) { _out << "continue"; } @@ -183,7 +183,7 @@ void ArtifactGeneratorCppCode::visit(const ArtifactIf* node) { } } -void ArtifactGeneratorCppCode::visit(const ArtifactFunction* node) { +void ArtifactGeneratorCppCode::visit(const ArtifactFunction*) { // TODO implement this function } diff --git a/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppDecl.cpp b/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppDecl.cpp index d415f48..0765afb 100644 --- a/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppDecl.cpp +++ b/contrib/nnc/passes/acl_soft_backend/ArtifactGeneratorCppDecl.cpp @@ -48,34 +48,34 @@ void ArtifactGeneratorCppDecl::visit(const ArtifactVariable* node) { _out << node->typeName() << " " << node->name(); } -void ArtifactGeneratorCppDecl::visit(const ArtifactFunctionCall* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactFunctionCall*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactUnaryExpr* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactUnaryExpr*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactBinaryExpr* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactBinaryExpr*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactIndex* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactIndex*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactRet* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactRet*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactBreak* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactBreak*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactCont* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactCont*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactBlock* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactBlock*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactForLoop* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactForLoop*) { } -void ArtifactGeneratorCppDecl::visit(const ArtifactIf* node) { +void ArtifactGeneratorCppDecl::visit(const ArtifactIf*) { } void ArtifactGeneratorCppDecl::visit(const ArtifactFunction* node) { diff --git a/contrib/nnc/passes/interpreter/Interpreter.cpp b/contrib/nnc/passes/interpreter/Interpreter.cpp index a54674d..c790c17 100644 --- a/contrib/nnc/passes/interpreter/Interpreter.cpp +++ b/contrib/nnc/passes/interpreter/Interpreter.cpp @@ -292,7 +292,7 @@ void NNInterpreter::visit(ops::DropoutOp& op) { void NNInterpreter::visit(ops::TanhOp& op) { auto operand = op.getPrevNodes()[0]; Tensor input(var(operand.op->getId())[operand.index]); - var(op.getId()) = Fill(op.getOutputShape(0), [&input, &op](const Index &id) { + var(op.getId()) = Fill(op.getOutputShape(0), [&input](const Index &id) { return std::tanh(input.at(id)); })(); } @@ -427,7 +427,7 @@ void NNInterpreter::visit(ops::ReduceFOp& op) { op.getOutputShape(0), input, op.getReductionDims(), func)(); Tensor out_t = Tensor(var(op.getId())[0]); // for numerical stability var(op.getId()) = Fill(op.getOutputShape(0), - [&out_t, &op, reduction_area](const Index& id) { + [&out_t, reduction_area](const Index& id) { return out_t.at(id) / reduction_area; })(); } diff --git a/contrib/nnc/passes/interpreter/interpreter_pass.cpp b/contrib/nnc/passes/interpreter/interpreter_pass.cpp index 8e6bafc..84decd9 100644 --- a/contrib/nnc/passes/interpreter/interpreter_pass.cpp +++ b/contrib/nnc/passes/interpreter/interpreter_pass.cpp @@ -144,13 +144,13 @@ TensorVariant InterpreterPass::loadInput(const Shape& shape) { int is_error = fseek(f, 0L, SEEK_END); assert(!is_error); - auto len = static_cast(ftell(f)); + auto len = ftell(f); assert(len != -1); auto data_size = static_cast(shape.numElements() * sizeof(float)); // Check size - if (len != data_size) { + if (static_cast(len) != data_size) { std::stringstream info; info << "Wrong input file size <" << cli::interInputData << "> = " << len << ". Should be :" << data_size; diff --git a/contrib/nnc/passes/interpreter/ops/Bias.cpp b/contrib/nnc/passes/interpreter/ops/Bias.cpp index bcf4ca9..4cef17d 100644 --- a/contrib/nnc/passes/interpreter/ops/Bias.cpp +++ b/contrib/nnc/passes/interpreter/ops/Bias.cpp @@ -27,7 +27,7 @@ BiasAdd::BiasAdd(const mir::TensorVariant& in1, const mir::TensorVariant& in2) std::vector BiasAdd::operator()() { return Fill(_input1.getShape(), [this](const mir::Index& idx) { - return _input1.at(idx) + _input2.atOffset({idx.at(idx.rank() - 1)}); + return _input1.at(idx) + _input2.atOffset(idx.at(idx.rank() - 1)); })(); } diff --git a/contrib/nnc/passes/interpreter/ops/Gather.cpp b/contrib/nnc/passes/interpreter/ops/Gather.cpp index 3d3cda8..9fea54d 100644 --- a/contrib/nnc/passes/interpreter/ops/Gather.cpp +++ b/contrib/nnc/passes/interpreter/ops/Gather.cpp @@ -28,7 +28,6 @@ Gather::Gather(const TensorVariant& data, std::vector Gather::operator()() { const auto& data_shape = _data.getShape(); const auto& indices_shape = _indices.getShape(); - const auto& output_shape = _op.getOutputShape(0); auto res = allocate_tensor(_op.getOutputShape(0)); Tensor data(_data); Tensor indices(_indices); diff --git a/contrib/nnc/passes/interpreter/ops/Reshape.h b/contrib/nnc/passes/interpreter/ops/Reshape.h index 5bd0b8e..3fbc560 100644 --- a/contrib/nnc/passes/interpreter/ops/Reshape.h +++ b/contrib/nnc/passes/interpreter/ops/Reshape.h @@ -40,7 +40,6 @@ public: auto out = OperationImpl::allocate_tensor(_output_shape); - mir::Tensor outAccessor(out); // Shapes element count compared in Reshape ctor return Fill(_output_shape, [this, &inIter](const mir::Index&) -> T { return _input.at(*inIter++); })(); } diff --git a/contrib/nnc/passes/interpreter/ops/Scale.cpp b/contrib/nnc/passes/interpreter/ops/Scale.cpp index 0f05598..1316c4d 100644 --- a/contrib/nnc/passes/interpreter/ops/Scale.cpp +++ b/contrib/nnc/passes/interpreter/ops/Scale.cpp @@ -27,7 +27,7 @@ Scale::Scale(const mir::TensorVariant& in1, const mir::TensorVariant& in2) std::vector Scale::operator()() { return Fill(_input1.getShape(), [this](const mir::Index& idx) { - return _input1.at(idx) * _input2.atOffset({idx.at(idx.rank() - 1)}); + return _input1.at(idx) * _input2.atOffset(idx.at(idx.rank() - 1)); })(); } diff --git a/contrib/nnc/passes/soft_backend/CGenerator.cpp b/contrib/nnc/passes/soft_backend/CGenerator.cpp index db0b45b..2b20442 100644 --- a/contrib/nnc/passes/soft_backend/CGenerator.cpp +++ b/contrib/nnc/passes/soft_backend/CGenerator.cpp @@ -19,26 +19,21 @@ using namespace std; -namespace nnc -{ +namespace nnc { -void CCodeGenerator::formatTensorNames(const ModelAnalyzer &ma) -{ +void CCodeGenerator::formatTensorNames(const ModelAnalyzer&) { // TODO format tensor names according to c backend requirements } -void CCodeGenerator::materializeHeader(ostream &out, const ModelAnalyzer &ma) -{ +void CCodeGenerator::materializeHeader(ostream&, const ModelAnalyzer&) { // TODO emit C header to out stream } -void CCodeGenerator::materializeCode(ostream &out, const ModelAnalyzer &ma, const Serializer &s) -{ +void CCodeGenerator::materializeCode(ostream&, const ModelAnalyzer&, const Serializer&) { // TODO emit C code to out stream } -Pass &CCodeGenerator::getInstance() -{ +Pass& CCodeGenerator::getInstance() { static CCodeGenerator instance; return instance; } diff --git a/contrib/nnc/passes/soft_backend/ModelAnalyzer.h b/contrib/nnc/passes/soft_backend/ModelAnalyzer.h index 700e966..f793608 100644 --- a/contrib/nnc/passes/soft_backend/ModelAnalyzer.h +++ b/contrib/nnc/passes/soft_backend/ModelAnalyzer.h @@ -169,11 +169,11 @@ public: return _modelName; } - const size_t getMaxTemporarySize() const { + size_t getMaxTemporarySize() const { return _max_temp_size; } - const size_t getTempTID() const { + size_t getTempTID() const { return _temp_tensor_id; } -- 2.7.4