From 4e07396fd555d6dafd6d911fb183f5cf35bf42f0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=91=D0=B0=D1=80?= =?utf8?q?=D0=B0=D0=BD=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2/AI=20Tools=20Lab=20/S?= =?utf8?q?RR/Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Fri, 25 Jan 2019 12:35:29 +0300 Subject: [PATCH] [nnc] Rename VariableOp class to InputOp (#2924) Rename VariableOp class to InputOp. This class represents graph inputs; InputOp is more precise name for this class. Signed-off-by: Sergei Barannikov --- contrib/nnc/core/modelIR/Graph.cpp | 6 ++-- contrib/nnc/core/modelIR/IrDotDumper.cpp | 4 +-- contrib/nnc/core/modelIR/Operation.cpp | 2 +- .../project/18_NN_Compiler_and_Optimizer_DLD.rst | 4 +-- contrib/nnc/include/core/modelIR/Graph.h | 6 ++-- contrib/nnc/include/core/modelIR/IrDotDumper.h | 4 +-- .../modelIR/operations/{VariableOp.h => InputOp.h} | 10 +++---- .../core/modelIR/operations/operations.lst.h | 35 +++++++++++----------- .../nnc/include/passes/interpreter/Interpreter.h | 2 +- .../passes/acl_soft_backend/AclCppOpGenerator.cpp | 6 ++-- .../passes/acl_soft_backend/AclCppOpGenerator.h | 2 +- .../passes/caffe2_frontend/caffe2_op_creator.cpp | 4 +-- .../nnc/passes/caffe_frontend/caffe_op_creator.cpp | 2 +- contrib/nnc/passes/interpreter/Interpreter.cpp | 4 +-- .../nnc/passes/onnx_frontend/ONNXImporterImpl.cpp | 4 +-- contrib/nnc/passes/onnx_frontend/ONNXOpCreator.cpp | 2 +- contrib/nnc/passes/soft_backend/CPPGenerator.cpp | 2 +- contrib/nnc/passes/soft_backend/ModelAnalyzer.cpp | 8 ++--- contrib/nnc/passes/soft_backend/ModelAnalyzer.h | 2 +- contrib/nnc/passes/soft_backend/SBSerializer.cpp | 2 +- contrib/nnc/passes/soft_backend/SBSerializer.h | 2 +- .../nnc/passes/tflite_frontend/tflite_importer.cpp | 2 +- contrib/nnc/tests/interpreter/graph_creator.cpp | 14 ++++----- contrib/nnc/tests/soft_backend/CompileCPP.cpp | 4 +-- contrib/nnc/unittests/acl_backend/MIRToDOM.cpp | 26 ++++++++-------- contrib/nnc/unittests/core/Graph.cpp | 12 ++++---- contrib/nnc/unittests/core/NodeReplacer.cpp | 8 ++--- contrib/nnc/unittests/core/ShapeInference.cpp | 24 +++++++-------- contrib/nnc/unittests/core/operation.cpp | 12 ++++---- .../nnc/unittests/soft_backend/CPPOperations.cpp | 6 ++-- contrib/nnc/unittests/soft_backend/Generator.cpp | 2 +- .../nnc/unittests/soft_backend/ModelAnalyzer.cpp | 3 +- 32 files changed, 114 insertions(+), 112 deletions(-) rename contrib/nnc/include/core/modelIR/operations/{VariableOp.h => InputOp.h} (78%) diff --git a/contrib/nnc/core/modelIR/Graph.cpp b/contrib/nnc/core/modelIR/Graph.cpp index 462a712..237d56a 100644 --- a/contrib/nnc/core/modelIR/Graph.cpp +++ b/contrib/nnc/core/modelIR/Graph.cpp @@ -162,13 +162,13 @@ void Graph::replaceNode(const Operation* op, Operation* with) { }), _ops.end()); } -ops::VariableOp* Graph::replaceWithInputNode(const Operation* op) { +ops::InputOp* Graph::replaceWithInputNode(const Operation* op) { assert(op->getNumOutputs() <= 1 && "Only operations with single output value can be replaced with input node"); assert(op->getNextNodes().size() <= 1 && "Node with multiple outputs cannot be changed into input"); - auto in = create(op->getName(), op->getOutputShape(0)); + auto in = create(op->getName(), op->getOutputShape(0)); replaceNode(op, in); //replaceNode adds all connections of original node, @@ -177,7 +177,7 @@ ops::VariableOp* Graph::replaceWithInputNode(const Operation* op) { delete op; - return dynamic_cast(in); + return dynamic_cast(in); } void Graph::replaceInputNodes(const std::vector& new_inputs) { diff --git a/contrib/nnc/core/modelIR/IrDotDumper.cpp b/contrib/nnc/core/modelIR/IrDotDumper.cpp index f319e3d..62c400e 100644 --- a/contrib/nnc/core/modelIR/IrDotDumper.cpp +++ b/contrib/nnc/core/modelIR/IrDotDumper.cpp @@ -31,6 +31,7 @@ #include "core/modelIR/operations/FullyConnectedOp.h" #include "core/modelIR/operations/GatherOp.h" #include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/LeakyReluOp.h" #include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/PoolOp.h" @@ -46,7 +47,6 @@ #include "core/modelIR/operations/SqueezeOp.h" #include "core/modelIR/operations/TanhOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" namespace nnc { namespace mir { @@ -171,7 +171,7 @@ void IrDotDumper::visit(ops::ReshapeOp& op) { dotBuilder.updateWithOp(&op, nodeInfo); } -void IrDotDumper::visit(ops::VariableOp& op) { +void IrDotDumper::visit(ops::InputOp& op) { auto nodeInfo = DotIrNodeInfo().withType("Input", op.getName()) .withInShapes(getInputShapes(op)) .withOutShapes(getOutputShapes(op)); diff --git a/contrib/nnc/core/modelIR/Operation.cpp b/contrib/nnc/core/modelIR/Operation.cpp index 50dd174..a44c5a3 100644 --- a/contrib/nnc/core/modelIR/Operation.cpp +++ b/contrib/nnc/core/modelIR/Operation.cpp @@ -29,6 +29,7 @@ #include "core/modelIR/operations/FullyConnectedOp.h" #include "core/modelIR/operations/GatherOp.h" #include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/LeakyReluOp.h" #include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/PoolOp.h" @@ -44,7 +45,6 @@ #include "core/modelIR/operations/SqrtOp.h" #include "core/modelIR/operations/TanhOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" namespace nnc { namespace mir { diff --git a/contrib/nnc/doc/project/18_NN_Compiler_and_Optimizer_DLD.rst b/contrib/nnc/doc/project/18_NN_Compiler_and_Optimizer_DLD.rst index a1beb3e..aee187e 100644 --- a/contrib/nnc/doc/project/18_NN_Compiler_and_Optimizer_DLD.rst +++ b/contrib/nnc/doc/project/18_NN_Compiler_and_Optimizer_DLD.rst @@ -593,8 +593,8 @@ pointer to corresponding CG Node, identifiers of input and output Tensors. Information about artifact variables(Tensors) is stored in array of ``TensorDescriptor`` objects, Mentioned object holds name of ``Tensor`` and it's properties(is it input/output/temporary). -Every ``VariableOp`` node emits "input" type ``Tensor`` variable. -Every node with name(what is not ``VariableOp``) emits "output" type ``Tensor`` variable that holds operation output. +Every ``InputOp`` node emits "input" type ``Tensor`` variable. +Every node with name(what is not ``InputOp``) emits "output" type ``Tensor`` variable that holds operation output. Node without particular name creates temporary ``Tensor``, that is not accessible outside Model; Serialization diff --git a/contrib/nnc/include/core/modelIR/Graph.h b/contrib/nnc/include/core/modelIR/Graph.h index 58b8ea9..6df4ea0 100644 --- a/contrib/nnc/include/core/modelIR/Graph.h +++ b/contrib/nnc/include/core/modelIR/Graph.h @@ -24,8 +24,8 @@ #include #include "core/modelIR/Operation.h" -#include "core/modelIR/operations/VariableOp.h" #include "core/modelIR/operations/ConstantOp.h" +#include "core/modelIR/operations/InputOp.h" namespace nnc { namespace mir { @@ -87,7 +87,7 @@ class Graph { * @return Input node which is placed in graph instead of passed node * @warning deletes passed node */ - ops::VariableOp* replaceWithInputNode(const Operation* op); + ops::InputOp* replaceWithInputNode(const Operation* op); /** * @brief Change graph inputs to nodes with names in newInputs @@ -110,7 +110,7 @@ class Graph { } //TODO: maybe make user to mark input _ops in a more obvious way - void registerOp(ops::VariableOp* op) { + void registerOp(ops::InputOp* op) { auto it = _inputs.find(op->getName()); if( it != _inputs.end()) { throw std::runtime_error("Input name collision"); diff --git a/contrib/nnc/include/core/modelIR/IrDotDumper.h b/contrib/nnc/include/core/modelIR/IrDotDumper.h index ec67fda..b20903d 100644 --- a/contrib/nnc/include/core/modelIR/IrDotDumper.h +++ b/contrib/nnc/include/core/modelIR/IrDotDumper.h @@ -45,7 +45,8 @@ public: void visit(ops::FullyConnectedOp& op) override; void visit(ops::GatherOp& op) override; void visit(ops::GemmOp& op) override; - void visit(mir::ops::LeakyReluOp& op) override; + void visit(ops::InputOp& op) override; + void visit(ops::LeakyReluOp& op) override; void visit(ops::PadOp& op) override; void visit(ops::PoolOp& op) override; void visit(ops::ReduceFOp& op) override; @@ -60,7 +61,6 @@ public: void visit(ops::SqueezeOp& op) override; void visit(ops::TanhOp& op) override; void visit(ops::TransposeOp& op) override; - void visit(ops::VariableOp& op) override; void writeDot(std::ostream &os) { dotBuilder.writeDot(os); }; diff --git a/contrib/nnc/include/core/modelIR/operations/VariableOp.h b/contrib/nnc/include/core/modelIR/operations/InputOp.h similarity index 78% rename from contrib/nnc/include/core/modelIR/operations/VariableOp.h rename to contrib/nnc/include/core/modelIR/operations/InputOp.h index ba122fc..874f729 100644 --- a/contrib/nnc/include/core/modelIR/operations/VariableOp.h +++ b/contrib/nnc/include/core/modelIR/operations/InputOp.h @@ -14,8 +14,8 @@ * limitations under the License. */ -#ifndef _NNC_CORE_IR_MODEL_VARIABLE_H_ -#define _NNC_CORE_IR_MODEL_VARIABLE_H_ +#ifndef _NNC_CORE_IR_MODEL_INPUT_H_ +#define _NNC_CORE_IR_MODEL_INPUT_H_ #include "core/modelIR/Operation.h" @@ -23,9 +23,9 @@ namespace nnc { namespace mir { namespace ops { -class VariableOp : public Operation { +class InputOp : public Operation { public: - explicit VariableOp(const Shape& shape) : Operation(Type::variable, {}) { + explicit InputOp(const Shape& shape) : Operation(Type::input, {}) { setOutputShape(0, shape); } }; @@ -34,4 +34,4 @@ public: } // namespace mir } // namespace nnc -#endif //_NNC_CORE_IR_MODEL_VARIABLE_H_ +#endif //_NNC_CORE_IR_MODEL_INPUT_H_ diff --git a/contrib/nnc/include/core/modelIR/operations/operations.lst.h b/contrib/nnc/include/core/modelIR/operations/operations.lst.h index 85b4372..51afdd2 100644 --- a/contrib/nnc/include/core/modelIR/operations/operations.lst.h +++ b/contrib/nnc/include/core/modelIR/operations/operations.lst.h @@ -18,33 +18,34 @@ #error "You should define HANDLE_OP before including this file" #endif //HANDLE_OP +HANDLE_OP(batchNorm, BatchNormOp) +HANDLE_OP(biasAdd, BiasAddOp) +HANDLE_OP(cappedReLU, CappedReluOp) HANDLE_OP(concat, ConcatOp) +HANDLE_OP(constant, ConstantOp) HANDLE_OP(conv2D, Conv2DOp) +HANDLE_OP(deConv2D, DeConv2DOp) HANDLE_OP(depthwiseConv, DepthwiseConv2DOp) -HANDLE_OP(gather, GatherOp) -HANDLE_OP(softmax, SoftmaxOp) -HANDLE_OP(pool, PoolOp) +HANDLE_OP(dropout, DropoutOp) +HANDLE_OP(elementwise, ElementwiseOp) +HANDLE_OP(ELU, EluOp) HANDLE_OP(fullyConnected, FullyConnectedOp) +HANDLE_OP(gather, GatherOp) HANDLE_OP(gemmOp, GemmOp) -HANDLE_OP(cappedReLU, CappedReluOp) -HANDLE_OP(biasAdd, BiasAddOp) -HANDLE_OP(variable, VariableOp) -HANDLE_OP(constant, ConstantOp) +HANDLE_OP(input, InputOp) +HANDLE_OP(leakyReLU, LeakyReluOp) +HANDLE_OP(pad, PadOp) +HANDLE_OP(pool, PoolOp) +HANDLE_OP(reduceF, ReduceFOp) HANDLE_OP(ReLU, ReluOp) HANDLE_OP(reshape, ReshapeOp) HANDLE_OP(resizeIm, ResizeOp) HANDLE_OP(scale, ScaleOp) HANDLE_OP(sigmoid, SigmoidOp) HANDLE_OP(slice, SliceOp) -HANDLE_OP(batchNorm, BatchNormOp) -HANDLE_OP(dropout, DropoutOp) -HANDLE_OP(tanh, TanhOp) -HANDLE_OP(elementwise, ElementwiseOp) -HANDLE_OP(deConv2D, DeConv2DOp) -HANDLE_OP(ELU, EluOp) -HANDLE_OP(squeeze, SqueezeOp) -HANDLE_OP(pad, PadOp) +HANDLE_OP(softmax, SoftmaxOp) HANDLE_OP(sqrt, SqrtOp) -HANDLE_OP(reduceF, ReduceFOp) +HANDLE_OP(squeeze, SqueezeOp) +HANDLE_OP(tanh, TanhOp) HANDLE_OP(transpose, TransposeOp) -HANDLE_OP(leakyReLU, LeakyReluOp) + diff --git a/contrib/nnc/include/passes/interpreter/Interpreter.h b/contrib/nnc/include/passes/interpreter/Interpreter.h index a42d5f3..1d9fd26 100644 --- a/contrib/nnc/include/passes/interpreter/Interpreter.h +++ b/contrib/nnc/include/passes/interpreter/Interpreter.h @@ -51,6 +51,7 @@ public: void visit(ops::FullyConnectedOp& op) override; void visit(ops::GatherOp& op) override; void visit(ops::GemmOp& op) override; + void visit(ops::InputOp& op) override; void visit(ops::LeakyReluOp& op) override; void visit(ops::PadOp& op) override; void visit(ops::PoolOp& op) override; @@ -66,7 +67,6 @@ public: void visit(ops::SqueezeOp& op) override; void visit(ops::TanhOp& op) override; void visit(ops::TransposeOp& op) override; - void visit(ops::VariableOp& op) override; void setInput(const std::string &name, const TensorVariant& data); std::vector &getResult(Operation* op); diff --git a/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp b/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp index a93af66..97e5070 100644 --- a/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp +++ b/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp @@ -34,6 +34,7 @@ #include "core/modelIR/operations/ElementwiseOp.h" #include "core/modelIR/operations/FullyConnectedOp.h" #include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/LeakyReluOp.h" #include "core/modelIR/operations/PoolOp.h" #include "core/modelIR/operations/ReduceFOp.h" @@ -46,7 +47,6 @@ #include "core/modelIR/operations/SqrtOp.h" #include "core/modelIR/operations/TanhOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" #include @@ -459,7 +459,7 @@ void AclCppOpGenerator::visit(ops::BiasAddOp& op) { _outputs.insert(&op); } -void AclCppOpGenerator::visit(ops::VariableOp& op) { +void AclCppOpGenerator::visit(ops::InputOp& op) { shared_ptr tensor; tensor = genTensor(op, op.getOutputShape(0)); addToPersistentTensors(tensor); @@ -930,7 +930,7 @@ shared_ptr AclCppOpGenerator::genTensor(const string& name, } shared_ptr AclCppOpGenerator::genTensor(Operation& op, const Shape& ir_shape) { - if (op.getType() == Operation::Type::variable) + if (op.getType() == Operation::Type::input) _inputs.insert(&op); if (op.getNextNodes().empty() && op.getType() != Operation::Type::constant) diff --git a/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.h b/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.h index 81bb72c..787c55b 100644 --- a/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.h +++ b/contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.h @@ -61,6 +61,7 @@ public: void visit(mir::ops::FullyConnectedOp& op) override; void visit(mir::ops::GatherOp& op) override; void visit(mir::ops::GemmOp& op) override; + void visit(mir::ops::InputOp& op) override; void visit(mir::ops::LeakyReluOp& op) override; void visit(mir::ops::PadOp& op) override; void visit(mir::ops::PoolOp& op) override; @@ -76,7 +77,6 @@ public: void visit(mir::ops::SqueezeOp& op) override; void visit(mir::ops::TanhOp& op) override; void visit(mir::ops::TransposeOp& op) override; - void visit(mir::ops::VariableOp& op) override; private: using AF = ArtifactFactory; diff --git a/contrib/nnc/passes/caffe2_frontend/caffe2_op_creator.cpp b/contrib/nnc/passes/caffe2_frontend/caffe2_op_creator.cpp index 4c28296..0de8459 100644 --- a/contrib/nnc/passes/caffe2_frontend/caffe2_op_creator.cpp +++ b/contrib/nnc/passes/caffe2_frontend/caffe2_op_creator.cpp @@ -23,6 +23,7 @@ #include "core/modelIR/operations/DropoutOp.h" #include "core/modelIR/operations/ElementwiseOp.h" #include "core/modelIR/operations/FullyConnectedOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/PoolOp.h" #include "core/modelIR/operations/ReluOp.h" #include "core/modelIR/operations/ReshapeOp.h" @@ -31,7 +32,6 @@ #include "core/modelIR/operations/SigmoidOp.h" #include "core/modelIR/operations/SoftmaxOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" #include "core/modelIR/Index.h" #include "core/modelIR/Shape.h" @@ -499,7 +499,7 @@ Caffe2OpCreator::convertReshape(const std::vector& inputs, std::vector Caffe2OpCreator::createInput(const std::string& name, const mir::Shape& shape) { - auto variable = _graph->create(name, shape); + auto variable = _graph->create(name, shape); return {variable->getOutput(0)}; } diff --git a/contrib/nnc/passes/caffe_frontend/caffe_op_creator.cpp b/contrib/nnc/passes/caffe_frontend/caffe_op_creator.cpp index 561261a..43b0fa2 100644 --- a/contrib/nnc/passes/caffe_frontend/caffe_op_creator.cpp +++ b/contrib/nnc/passes/caffe_frontend/caffe_op_creator.cpp @@ -165,7 +165,7 @@ CaffeOpCreator::convertInput(const LayerParameter& layer) { const auto& blob_name = layer.top(i); const auto& blob_shape = params.shape(num_shapes == 1 ? 0 : i); Shape shape = ShapeHelper::createShape(blob_shape.dim(), blob_shape.dim_size()); - auto variable = createOp(blob_name, shape); + auto variable = createOp(blob_name, shape); descriptors.push_back(variable->getOutput(0)); } diff --git a/contrib/nnc/passes/interpreter/Interpreter.cpp b/contrib/nnc/passes/interpreter/Interpreter.cpp index c790c17..b68550c 100644 --- a/contrib/nnc/passes/interpreter/Interpreter.cpp +++ b/contrib/nnc/passes/interpreter/Interpreter.cpp @@ -30,6 +30,7 @@ #include "core/modelIR/operations/FullyConnectedOp.h" #include "core/modelIR/operations/GatherOp.h" #include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/LeakyReluOp.h" #include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/PoolOp.h" @@ -44,7 +45,6 @@ #include "core/modelIR/operations/SqueezeOp.h" #include "core/modelIR/operations/TanhOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" #include "ops/BatchNorm.h" #include "ops/Bias.h" @@ -129,7 +129,7 @@ void NNInterpreter::setInput(const std::string &name, const TensorVariant& t) { data.emplace(name, t); } -void NNInterpreter::visit(ops::VariableOp& op) { +void NNInterpreter::visit(ops::InputOp& op) { (void)op; auto it = data.find(op.getName()); if( it == data.end() ) diff --git a/contrib/nnc/passes/onnx_frontend/ONNXImporterImpl.cpp b/contrib/nnc/passes/onnx_frontend/ONNXImporterImpl.cpp index a4dd51e..ab2a875 100644 --- a/contrib/nnc/passes/onnx_frontend/ONNXImporterImpl.cpp +++ b/contrib/nnc/passes/onnx_frontend/ONNXImporterImpl.cpp @@ -23,8 +23,8 @@ #include "core/modelIR/operations/Conv2DOp.h" #include "core/modelIR/operations/DepthwiseConv2DOp.h" #include "core/modelIR/operations/ElementwiseOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" #include "core/modelIR/Operation.h" #include "core/modelIR/Shape.h" #include "core/modelIR/TensorUtil.h" @@ -159,7 +159,7 @@ void ONNXImporterImpl::createGraphInputs() { shape.dim(i) = static_cast(onnx_input_shape.dim(i).dim_value()); } // TODO: Temporary solution! - auto node = _graph->create(name, shape); + auto node = _graph->create(name, shape); _tensorNameToIODescriptor[name] = node->getOutput(0); } } diff --git a/contrib/nnc/passes/onnx_frontend/ONNXOpCreator.cpp b/contrib/nnc/passes/onnx_frontend/ONNXOpCreator.cpp index 4721796..10684cb 100644 --- a/contrib/nnc/passes/onnx_frontend/ONNXOpCreator.cpp +++ b/contrib/nnc/passes/onnx_frontend/ONNXOpCreator.cpp @@ -34,6 +34,7 @@ #include "core/modelIR/operations/FullyConnectedOp.h" #include "core/modelIR/operations/GatherOp.h" #include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/PoolOp.h" #include "core/modelIR/operations/ReluOp.h" @@ -43,7 +44,6 @@ #include "core/modelIR/operations/SigmoidOp.h" #include "core/modelIR/operations/SoftmaxOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" #include "core/modelIR/operations/ElementwiseOp.h" #include "passes/common_frontend/op_creator_helper.h" #include "passes/common_frontend/shape_helper.h" diff --git a/contrib/nnc/passes/soft_backend/CPPGenerator.cpp b/contrib/nnc/passes/soft_backend/CPPGenerator.cpp index fbe1754..13294bf 100644 --- a/contrib/nnc/passes/soft_backend/CPPGenerator.cpp +++ b/contrib/nnc/passes/soft_backend/CPPGenerator.cpp @@ -226,7 +226,7 @@ void CPPCodeGenerator::materializeInferenceSequence(ostream& out, const ModelAna for (const unique_ptr& action: ma.getInferenceSequence()) { CallFunction& call = *static_cast(action.get()); - if (call.mirOp->getType() == mir::Operation::Type::variable) + if (call.mirOp->getType() == mir::Operation::Type::input) continue; // create temporary tensors printTmpTensors(out, ma, _formattedTensors, call); diff --git a/contrib/nnc/passes/soft_backend/ModelAnalyzer.cpp b/contrib/nnc/passes/soft_backend/ModelAnalyzer.cpp index 626d56f..1a7a3ca 100644 --- a/contrib/nnc/passes/soft_backend/ModelAnalyzer.cpp +++ b/contrib/nnc/passes/soft_backend/ModelAnalyzer.cpp @@ -34,6 +34,7 @@ #include "core/modelIR/operations/FullyConnectedOp.h" #include "core/modelIR/operations/GatherOp.h" #include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/LeakyReluOp.h" #include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/PoolOp.h" @@ -49,7 +50,6 @@ #include "core/modelIR/operations/SqueezeOp.h" #include "core/modelIR/operations/TanhOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" #include #include @@ -71,7 +71,7 @@ void ModelAnalyzer::appendOperationToInference( // process operation outputs size_t node_output_tensor_id = INVALID_TENSOR_ID; - if (op->getType() == Operation::Type::variable) { + if (op->getType() == Operation::Type::input) { // register input tensor node_output_tensor_id = declareInputTensor(op_name, op->getOutputShape(0)); } else if (op->getType() == Operation::Type::constant) { @@ -157,7 +157,7 @@ void ModelAnalyzer::analyze(const mir::Graph* g) { // Walk all network inputs for (Operation* in : init_ops) { - assert(dynamic_cast(in) || dynamic_cast(in)); + assert(dynamic_cast(in) || dynamic_cast(in)); if (!visited.count(in)) { visited.insert(in); s.push({in, 0}); @@ -254,7 +254,7 @@ void ModelAnalyzer::visit(ops::BiasAddOp& op) { appendOperationToInference(&op, "biasAdd"); } -void ModelAnalyzer::visit(ops::VariableOp& op) { +void ModelAnalyzer::visit(ops::InputOp& op) { assert(op.getPrevNodes().empty()); appendOperationToInference(&op, "in"); } diff --git a/contrib/nnc/passes/soft_backend/ModelAnalyzer.h b/contrib/nnc/passes/soft_backend/ModelAnalyzer.h index ef891b5..d849247 100644 --- a/contrib/nnc/passes/soft_backend/ModelAnalyzer.h +++ b/contrib/nnc/passes/soft_backend/ModelAnalyzer.h @@ -63,6 +63,7 @@ public: void visit(mir::ops::EluOp& op) override; void visit(mir::ops::FullyConnectedOp& op) override; void visit(mir::ops::GatherOp& op) override; + void visit(mir::ops::InputOp& op) override; void visit(mir::ops::LeakyReluOp& op) override; void visit(mir::ops::GemmOp& op) override; void visit(mir::ops::PadOp& op) override; @@ -79,7 +80,6 @@ public: void visit(mir::ops::SqueezeOp& op) override; void visit(mir::ops::TanhOp& op) override; void visit(mir::ops::TransposeOp& op) override; - void visit(mir::ops::VariableOp& op) override; /** * @return vector of id's of network input tensors diff --git a/contrib/nnc/passes/soft_backend/SBSerializer.cpp b/contrib/nnc/passes/soft_backend/SBSerializer.cpp index c7f526a..1458965 100644 --- a/contrib/nnc/passes/soft_backend/SBSerializer.cpp +++ b/contrib/nnc/passes/soft_backend/SBSerializer.cpp @@ -228,7 +228,7 @@ void Serializer::visit(ops::BiasAddOp& op) { // no parameters to dump } -void Serializer::visit(ops::VariableOp& op) { +void Serializer::visit(ops::InputOp& op) { // no parameters to dump } diff --git a/contrib/nnc/passes/soft_backend/SBSerializer.h b/contrib/nnc/passes/soft_backend/SBSerializer.h index 5a995ce..361f455 100644 --- a/contrib/nnc/passes/soft_backend/SBSerializer.h +++ b/contrib/nnc/passes/soft_backend/SBSerializer.h @@ -53,6 +53,7 @@ public: void visit(mir::ops::ElementwiseOp& op) override; void visit(mir::ops::EluOp& op) override; void visit(mir::ops::FullyConnectedOp& op) override; + void visit(mir::ops::InputOp& op) override; void visit(mir::ops::LeakyReluOp& op) override; void visit(mir::ops::GatherOp& op) override; void visit(mir::ops::GemmOp& op) override; @@ -70,7 +71,6 @@ public: void visit(mir::ops::SqueezeOp& op) override; void visit(mir::ops::TanhOp& op) override; void visit(mir::ops::TransposeOp& op) override; - void visit(mir::ops::VariableOp& op) override; void serialize(std::list>& inference_sequence); diff --git a/contrib/nnc/passes/tflite_frontend/tflite_importer.cpp b/contrib/nnc/passes/tflite_frontend/tflite_importer.cpp index 75ba611..d5ee59c 100644 --- a/contrib/nnc/passes/tflite_frontend/tflite_importer.cpp +++ b/contrib/nnc/passes/tflite_frontend/tflite_importer.cpp @@ -154,7 +154,7 @@ void TfliteImporter::walkSubGraph(const SubGraph* s) { const Tensor* t = (*s->tensors())[i]; Shape input_shape = ShapeHelper::createShape(*t->shape(), t->shape()->size()); - auto input = _graph->create(t->name()->c_str(), input_shape); + auto input = _graph->create(t->name()->c_str(), input_shape); _tensorMap[i] = input->getOutput(0); } diff --git a/contrib/nnc/tests/interpreter/graph_creator.cpp b/contrib/nnc/tests/interpreter/graph_creator.cpp index d7f78ea..f210547 100644 --- a/contrib/nnc/tests/interpreter/graph_creator.cpp +++ b/contrib/nnc/tests/interpreter/graph_creator.cpp @@ -17,17 +17,17 @@ #include #include -#include "core/modelIR/operations/VariableOp.h" -#include "core/modelIR/operations/FullyConnectedOp.h" -#include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/BiasAddOp.h" +#include "core/modelIR/operations/CappedReluOp.h" +#include "core/modelIR/operations/ConcatOp.h" #include "core/modelIR/operations/Conv2DOp.h" #include "core/modelIR/operations/DepthwiseConv2DOp.h" +#include "core/modelIR/operations/FullyConnectedOp.h" +#include "core/modelIR/operations/GemmOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/PoolOp.h" #include "core/modelIR/operations/ReluOp.h" -#include "core/modelIR/operations/CappedReluOp.h" #include "core/modelIR/operations/ReshapeOp.h" -#include "core/modelIR/operations/ConcatOp.h" -#include "core/modelIR/operations/BiasAddOp.h" #include "core/modelIR/operations/SoftmaxOp.h" #include "passes/common_frontend/shape_helper.h" @@ -145,7 +145,7 @@ std::unique_ptr make_graph(const opinfo::OperatorInfo* opInfo) { for (unsigned int i = 0; i < opInfo->inputs()->size(); ++i) { auto inputShapeIter = opInfo->inputs()->Get(i)->shape()->dims(); Shape inputShape = ShapeHelper::createShape(*inputShapeIter, inputShapeIter->size()); - auto inputOp = g->create("x" + std::to_string(i), inputShape); + auto inputOp = g->create("x" + std::to_string(i), inputShape); inputs.push_back(inputOp->getOutput(0)); } diff --git a/contrib/nnc/tests/soft_backend/CompileCPP.cpp b/contrib/nnc/tests/soft_backend/CompileCPP.cpp index edf30f2..dc0ffd1 100644 --- a/contrib/nnc/tests/soft_backend/CompileCPP.cpp +++ b/contrib/nnc/tests/soft_backend/CompileCPP.cpp @@ -30,8 +30,8 @@ #include "core/modelIR/Graph.h" #include "core/modelIR/Shape.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/ReluOp.h" -#include "core/modelIR/operations/VariableOp.h" #include "passes/soft_backend/CPPGenerator.h" @@ -48,7 +48,7 @@ using namespace nnc::mir; void fillGraph(Graph &g) { Shape inputShape{1, 2, 3}; - Operation* inputOp = g.create("in", inputShape); + Operation* inputOp = g.create("in", inputShape); Operation* outputOp = g.create("out", inputOp->getOutput(0)); g.markOutput(outputOp); } diff --git a/contrib/nnc/unittests/acl_backend/MIRToDOM.cpp b/contrib/nnc/unittests/acl_backend/MIRToDOM.cpp index ed72d03..6df381a 100644 --- a/contrib/nnc/unittests/acl_backend/MIRToDOM.cpp +++ b/contrib/nnc/unittests/acl_backend/MIRToDOM.cpp @@ -28,27 +28,27 @@ // MIR #include "core/modelIR/Graph.h" -#include "core/modelIR/operations/VariableOp.h" -#include "core/modelIR/operations/FullyConnectedOp.h" +#include "core/modelIR/operations/BiasAddOp.h" +#include "core/modelIR/operations/CappedReluOp.h" #include "core/modelIR/operations/CappedReluOp.h" +#include "core/modelIR/operations/ConcatOp.h" +#include "core/modelIR/operations/ConstantOp.h" #include "core/modelIR/operations/Conv2DOp.h" +#include "core/modelIR/operations/Deconv2DOp.h" #include "core/modelIR/operations/DepthwiseConv2DOp.h" +#include "core/modelIR/operations/ElementwiseOp.h" +#include "core/modelIR/operations/EluOp.h" +#include "core/modelIR/operations/FullyConnectedOp.h" +#include "core/modelIR/operations/InputOp.h" +#include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/PoolOp.h" -#include "core/modelIR/operations/ReluOp.h" #include "core/modelIR/operations/ReduceFOp.h" -#include "core/modelIR/operations/CappedReluOp.h" -#include "core/modelIR/operations/ConstantOp.h" +#include "core/modelIR/operations/ReluOp.h" #include "core/modelIR/operations/ReshapeOp.h" -#include "core/modelIR/operations/ConcatOp.h" -#include "core/modelIR/operations/BiasAddOp.h" +#include "core/modelIR/operations/ScaleOp.h" #include "core/modelIR/operations/SigmoidOp.h" #include "core/modelIR/operations/SoftmaxOp.h" -#include "core/modelIR/operations/ScaleOp.h" -#include "core/modelIR/operations/EluOp.h" -#include "core/modelIR/operations/ElementwiseOp.h" -#include "core/modelIR/operations/Deconv2DOp.h" #include "core/modelIR/operations/TanhOp.h" -#include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/TransposeOp.h" #include "gtest/gtest.h" @@ -74,7 +74,7 @@ void fillGraph(Graph& g, const OpConstructor& op_constr, const vector& in vector inputs; int num_inputs = input_shapes.size(); for (int i = 0; i < num_inputs; ++i) { - auto inputOp = g.create("x" + to_string(i), input_shapes[i]); + auto inputOp = g.create("x" + to_string(i), input_shapes[i]); inputs.push_back(inputOp->getOutput(0)); } diff --git a/contrib/nnc/unittests/core/Graph.cpp b/contrib/nnc/unittests/core/Graph.cpp index 173b3fc..9a4ad13 100644 --- a/contrib/nnc/unittests/core/Graph.cpp +++ b/contrib/nnc/unittests/core/Graph.cpp @@ -1,9 +1,9 @@ #include #include "core/modelIR/Graph.h" -#include "core/modelIR/operations/VariableOp.h" -#include "core/modelIR/operations/ReluOp.h" #include "core/modelIR/operations/ConcatOp.h" +#include "core/modelIR/operations/InputOp.h" +#include "core/modelIR/operations/ReluOp.h" namespace { @@ -14,7 +14,7 @@ class DumpVisitor : public Visitor { public: DumpVisitor(std::ostream& s) : _s(s) {} - void visit(ops::VariableOp& op) override { + void visit(ops::InputOp& op) override { _s << "i" << op.getName(); }; @@ -32,7 +32,7 @@ public: TEST(Graph, ReplaceInputs) { auto g = new Graph; - auto n1 = g->create("op1", Shape{1}); + auto n1 = g->create("op1", Shape{1}); auto n2 = g->create("op2", n1->getOutput(0)); auto n3 = g->create("op3", n2->getOutput(0)); auto n4 = g->create("op4", n2->getOutput(0)); @@ -57,7 +57,7 @@ TEST(Graph, ReplaceOutputs) { auto g = new Graph; - auto n1 = g->create("op1", Shape{1}); + auto n1 = g->create("op1", Shape{1}); auto n2 = g->create("op2", n1->getOutput(0)); auto n3 = g->create("op3", n2->getOutput(0)); auto n4 = g->create("op4", n2->getOutput(0)); @@ -75,7 +75,7 @@ TEST(Graph, ReplaceOutputs) { TEST(Graph, ReplaceOutputNodeWithInput) { auto g = new Graph; - auto n1 = g->create("op1", Shape{}); + auto n1 = g->create("op1", Shape{}); auto n2 = g->create("op2", n1->getOutput(0)); g->markOutput(n2); diff --git a/contrib/nnc/unittests/core/NodeReplacer.cpp b/contrib/nnc/unittests/core/NodeReplacer.cpp index f01b1bf..7b852cc 100644 --- a/contrib/nnc/unittests/core/NodeReplacer.cpp +++ b/contrib/nnc/unittests/core/NodeReplacer.cpp @@ -1,9 +1,9 @@ #include #include "core/modelIR/Graph.h" -#include "core/modelIR/operations/VariableOp.h" -#include "core/modelIR/operations/ReluOp.h" #include "core/modelIR/operations/ConcatOp.h" +#include "core/modelIR/operations/InputOp.h" +#include "core/modelIR/operations/ReluOp.h" namespace { @@ -14,7 +14,7 @@ class DumpVisitor : public Visitor { public: DumpVisitor(std::ostream& s) : _s(s) {} - void visit(ops::VariableOp& op) override { + void visit(ops::InputOp& op) override { _s << "i" << op.getName(); }; @@ -31,7 +31,7 @@ public: TEST(NodeMutatorTest, SimpleChainTest) { auto g = new Graph; - auto n1 = g->create("op1", Shape{}); + auto n1 = g->create("op1", Shape{}); auto n2 = g->create("op2", n1->getOutput(0)); auto n3 = g->create("op3", n2->getOutput(0)); auto n4 = g->create("op4", n2->getOutput(0)); diff --git a/contrib/nnc/unittests/core/ShapeInference.cpp b/contrib/nnc/unittests/core/ShapeInference.cpp index 8905bc8..31c20e4 100644 --- a/contrib/nnc/unittests/core/ShapeInference.cpp +++ b/contrib/nnc/unittests/core/ShapeInference.cpp @@ -35,7 +35,7 @@ TEST(ShapeInferenceTest, ReshapeAutoDimension) { Shape expected_shape{10, 1, 10}; - auto input = g.create("input", input_shape); + auto input = g.create("input", input_shape); auto op = g.create("reshape", input->getOutput(0), Shape{10, 1, Shape::autoDim}); ASSERT_EQ(expected_shape, op->getOutputShape(0)); @@ -46,7 +46,7 @@ TEST(ShapeInferenceTest, ResizeWithShape) { Shape result_shape{2, 10, 10, 3}; - auto input = g.create("input", Shape{1, 5, 5, 3}); + auto input = g.create("input", Shape{1, 5, 5, 3}); auto op = g.create("Resize", input->getOutput(0), ops::ResizeOp::ResizeMethod::nearestNeighbor, result_shape); @@ -59,7 +59,7 @@ TEST(ShapeInferenceTest, ResizeWithScale) { Shape result_shape{1, 30, 10, 3}; - auto input = g.create("input", Shape{1, 5, 5, 3}); + auto input = g.create("input", Shape{1, 5, 5, 3}); auto op = g.create( "Resize", input->getOutput(0), ops::ResizeOp::ResizeMethod::nearestNeighbor, @@ -74,7 +74,7 @@ TEST(ShapeInferenceTest, ReduceChangeRank) { Shape resultShape{10, 10}; - auto input = g.create("input", Shape{10, 2, 10, 9}); + auto input = g.create("input", Shape{10, 2, 10, 9}); auto n = g.create("reduce", input->getOutput(0), std::vector{1, 3}, false, ops::ReduceFOp::FuncType::mean); @@ -88,7 +88,7 @@ TEST(ShapeInferenceTest, ReshapeAutoDimensionShrink) { Shape input_shape{10, 2, 10}; Shape result_shape_shrink{10, 20}; - auto input = g.create("input", input_shape); + auto input = g.create("input", input_shape); auto op = g.create("reshape", input->getOutput(0), Shape{10, Shape::autoDim}); ASSERT_EQ(result_shape_shrink, op->getOutputShape(0)); @@ -100,7 +100,7 @@ TEST(ShapeInferenceTest, ReshapeAutoDimensionExpand) { Shape input_shape{10, 2, 10}; Shape result_shape_expand{5, 10, 2, 2}; - auto input = g.create("input", input_shape); + auto input = g.create("input", input_shape); auto op = g.create("reshape", input->getOutput(0), Shape{5, Shape::autoDim, 2, 2}); @@ -113,7 +113,7 @@ TEST(ShapeInferenceTest, ReshapeAutoDimensionUnsqueeze) { Shape input_shape{10, 2, 10}; Shape result_shape_expand{1, 10, 2, 1, 10, 1}; - auto input = g.create("input", input_shape); + auto input = g.create("input", input_shape); auto op = g.create("reshape", input->getOutput(0), Shape{1, Shape::autoDim, 2, 1, 10, 1}); @@ -126,7 +126,7 @@ TEST(ShapeInferenceTest, SqueezeTestAllDims) { Shape input_shape{1, 2, 1, 4}; Shape expected_shape{2, 4}; - auto input = g.create("input", input_shape); + auto input = g.create("input", input_shape); auto sq1 = g.create("squeeze_1", input->getOutput(0), std::vector{}); ASSERT_EQ(sq1->getOutputShape(0), expected_shape); @@ -137,8 +137,8 @@ TEST(ShapeInferenceTest, ElementwiseBC) { Shape input_shape{1, 10, 10, 1}; Shape input2_shape{1, 1, 10, 10}; - auto input = g.create("input1", input_shape); - auto input2 = g.create("input2", input2_shape); + auto input = g.create("input1", input_shape); + auto input2 = g.create("input2", input2_shape); auto add = g.create("add_1", std::vector{input->getOutput(0), @@ -154,7 +154,7 @@ TEST(ShapeInferenceTest, SqueezeTestSpecificDims) { Shape input_shape{1, 2, 1, 4}; Shape expected_shape{1, 2, 4}; - auto input = g.create("input", input_shape); + auto input = g.create("input", input_shape); auto sq1 = g.create("squeeze_1", input->getOutput(0), std::vector{2}); ASSERT_EQ(sq1->getOutputShape(0), expected_shape); @@ -166,7 +166,7 @@ TEST(ShapeInferenceTest, SqueezeTestScalarResult) { Shape input_shape{1, 1, 1, 1}; Shape expected_shape{1}; - auto input = g.create("input", input_shape); + auto input = g.create("input", input_shape); auto sq1 = g.create("squeeze_1", input->getOutput(0), std::vector{}); ASSERT_EQ(sq1->getOutputShape(0), expected_shape); diff --git a/contrib/nnc/unittests/core/operation.cpp b/contrib/nnc/unittests/core/operation.cpp index a22a41d..c2efa74 100644 --- a/contrib/nnc/unittests/core/operation.cpp +++ b/contrib/nnc/unittests/core/operation.cpp @@ -15,10 +15,10 @@ */ #include "core/modelIR/Operation.h" -#include "core/modelIR/operations/VariableOp.h" +#include "core/modelIR/operations/ConcatOp.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/ReshapeOp.h" #include "core/modelIR/operations/SoftmaxOp.h" -#include "core/modelIR/operations/ConcatOp.h" #include @@ -26,7 +26,7 @@ using namespace nnc::mir; TEST(Operation, ConnectionTest) { - auto op1 = new ops::VariableOp(Shape{}); + auto op1 = new ops::InputOp(Shape{}); op1->setId(0); auto op2 = new ops::ReshapeOp(op1->getOutput(0), Shape{}); op2->setId(1); @@ -40,7 +40,7 @@ TEST(Operation, ConnectionTest) { TEST(Operation, InputOutputShapeTest) { Shape input_shape{1,2,3}; - ops::VariableOp input(input_shape); + ops::InputOp input(input_shape); ops::SoftmaxOp op(input.getOutput(0), 0); ASSERT_EQ(input_shape, input.getOutputShape(0)); @@ -50,7 +50,7 @@ TEST(Operation, InputOutputShapeTest) { TEST(Operation, SoftmaxAxisTest) { Shape input_shape{1,2,3}; - ops::VariableOp input(input_shape); + ops::InputOp input(input_shape); ops::SoftmaxOp op_1(input.getOutput(0), 1); ASSERT_EQ(op_1.getAxis(), 1); @@ -65,7 +65,7 @@ TEST(Operation, SoftmaxAxisTest) { TEST(Operation, ConcatAxisTest) { Shape inShape{1,2,3}; - ops::VariableOp input1(inShape), input2(inShape); + ops::InputOp input1(inShape), input2(inShape); ops::ConcatOp op_1({input1.getOutput(0), input2.getOutput(0)}, 1); ASSERT_EQ(op_1.getAxis(), 1); diff --git a/contrib/nnc/unittests/soft_backend/CPPOperations.cpp b/contrib/nnc/unittests/soft_backend/CPPOperations.cpp index ca42d3b..3224248 100644 --- a/contrib/nnc/unittests/soft_backend/CPPOperations.cpp +++ b/contrib/nnc/unittests/soft_backend/CPPOperations.cpp @@ -69,11 +69,12 @@ #include "core/modelIR/operations/ElementwiseOp.h" #include "core/modelIR/operations/EluOp.h" #include "core/modelIR/operations/FullyConnectedOp.h" +#include "core/modelIR/operations/InputOp.h" +#include "core/modelIR/operations/LeakyReluOp.h" #include "core/modelIR/operations/PadOp.h" #include "core/modelIR/operations/PoolOp.h" #include "core/modelIR/operations/ReduceFOp.h" #include "core/modelIR/operations/ReluOp.h" -#include "core/modelIR/operations/LeakyReluOp.h" #include "core/modelIR/operations/ReshapeOp.h" #include "core/modelIR/operations/ResizeOp.h" #include "core/modelIR/operations/ScaleOp.h" @@ -83,7 +84,6 @@ #include "core/modelIR/operations/SqrtOp.h" #include "core/modelIR/operations/TanhOp.h" #include "core/modelIR/operations/TransposeOp.h" -#include "core/modelIR/operations/VariableOp.h" // various headers #include "core/modelIR/TensorVariant.h" @@ -126,7 +126,7 @@ fillGraph(mir::Graph& g, int num_inputs = input_ntensors.size(); for (int i = 0; i < num_inputs; ++i) { auto input_op = - g.create("x" + std::to_string(i), input_ntensors[i]->getShape()); + g.create("x" + std::to_string(i), input_ntensors[i]->getShape()); inputs.push_back(input_op->getOutput(0)); } diff --git a/contrib/nnc/unittests/soft_backend/Generator.cpp b/contrib/nnc/unittests/soft_backend/Generator.cpp index e226dd9..8036982 100644 --- a/contrib/nnc/unittests/soft_backend/Generator.cpp +++ b/contrib/nnc/unittests/soft_backend/Generator.cpp @@ -87,7 +87,7 @@ TEST(Generator, check_generator_call) cli::CommandLine::getParser()->parseCommandLine(argc, argv, false); nnc::mir::Graph g; - Operation* input = g.create("input", Shape{1, 2, 3, 4}); + Operation* input = g.create("input", Shape{1, 2, 3, 4}); Operation* output = g.create("output", input->getOutput(0)); // test that generator creates output dir and files diff --git a/contrib/nnc/unittests/soft_backend/ModelAnalyzer.cpp b/contrib/nnc/unittests/soft_backend/ModelAnalyzer.cpp index 4367d76..7401719 100644 --- a/contrib/nnc/unittests/soft_backend/ModelAnalyzer.cpp +++ b/contrib/nnc/unittests/soft_backend/ModelAnalyzer.cpp @@ -16,6 +16,7 @@ #include "ModelAnalyzer.h" #include "core/modelIR/Graph.h" +#include "core/modelIR/operations/InputOp.h" #include "core/modelIR/operations/ReluOp.h" #include "core/modelIR/operations/ConcatOp.h" @@ -49,7 +50,7 @@ TEST(ModelAnalyzer, linearization) { * \ / * [join] */ - Operation* input = g.create("input", Shape{1, 2, 3}); + Operation* input = g.create("input", Shape{1, 2, 3}); Operation* head1 = g.create("head1", input->getOutput(0)); Operation* head2 = g.create("head2", input->getOutput(0)); Operation* tail1 = g.create("tail1", head1->getOutput(0)); -- 2.7.4