From: 장지섭/On-Device Lab(SR)/Engineer/삼성전자 Date: Wed, 18 Sep 2019 11:37:34 +0000 (+0900) Subject: Introduce PermutationOperationPass (#7254) X-Git-Tag: submit/tizen/20191205.083104~1177 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f3e8b3e82a89cc3fad2940f674f596317a992979;p=platform%2Fcore%2Fml%2Fnnfw.git Introduce PermutationOperationPass (#7254) This commit introduces PermutationOperationPass that can change layout of each op Signed-off-by: jiseob.jang --- diff --git a/runtimes/neurun/core/src/graph/pass/OperationPass.cc b/runtimes/neurun/core/src/graph/pass/OperationPass.cc index 8e67098..2f835a2 100644 --- a/runtimes/neurun/core/src/graph/pass/OperationPass.cc +++ b/runtimes/neurun/core/src/graph/pass/OperationPass.cc @@ -16,6 +16,8 @@ #include "OperationPass.h" +#include "model/Index.h" +#include "model/Operation.h" #include "graph/Graph.h" namespace neurun @@ -28,7 +30,7 @@ namespace pass void OperationPass::run() { _graph.operations().iterate( - [&](const model::OperationIndex &index, model::Operation &node) { callback(index, node); }); + [&](const model::OperationIndex &, model::Operation &node) { node.accept(*this); }); } } // namespace pass diff --git a/runtimes/neurun/core/src/graph/pass/OperationPass.h b/runtimes/neurun/core/src/graph/pass/OperationPass.h index ac6a853..6b7f6f8 100644 --- a/runtimes/neurun/core/src/graph/pass/OperationPass.h +++ b/runtimes/neurun/core/src/graph/pass/OperationPass.h @@ -24,8 +24,7 @@ #include "Pass.h" -#include "model/Index.h" -#include "model/Operation.h" +#include "model/OperationVisitor.h" namespace neurun { @@ -37,7 +36,7 @@ namespace pass /** * @brief Class to iterate over operations and calls callback() method */ -class OperationPass : public Pass +class OperationPass : public Pass, public model::OperationVisitor { public: using Pass::Pass; @@ -54,14 +53,6 @@ public: * @brief Run the pass */ void run() override final; - - /** - * @brief The function that will be executed for each operations - * - * @param i[in] Index of the operation node - * @param n[in] The operation node - */ - virtual void callback(const model::OperationIndex &i, model::Operation &n) = 0; }; } // namespace pass diff --git a/runtimes/neurun/core/src/graph/pass/PermutationOperationPass.cc b/runtimes/neurun/core/src/graph/pass/PermutationOperationPass.cc new file mode 100644 index 0000000..2050f57 --- /dev/null +++ b/runtimes/neurun/core/src/graph/pass/PermutationOperationPass.cc @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "PermutationOperationPass.h" + +namespace neurun +{ +namespace graph +{ +namespace pass +{ + +void PermutationOperationPass::visit(const model::operation::FullyConnectedNode &) +{ + // TODO Implement +} + +void PermutationOperationPass::visit(const model::operation::GatherNode &) +{ + // TODO Implement +} + +void PermutationOperationPass::visit(const model::operation::ReshapeNode &) +{ + // TODO Implement +} + +} // namespace pass +} // namespace graph +} // namespace neurun diff --git a/runtimes/neurun/core/src/graph/pass/PermutationOperationPass.h b/runtimes/neurun/core/src/graph/pass/PermutationOperationPass.h new file mode 100644 index 0000000..6fc0133 --- /dev/null +++ b/runtimes/neurun/core/src/graph/pass/PermutationOperationPass.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __NEURUN_GRAPH_PASS_PERMUTATION_OPERATION_PASS_H__ +#define __NEURUN_GRAPH_PASS_PERMUTATION_OPERATION_PASS_H__ + +#include "OperationPass.h" + +namespace neurun +{ +namespace graph +{ +namespace pass +{ + +class PermutationOperationPass : public OperationPass +{ +public: + using OperationPass::OperationPass; + +public: + std::string id() final { return "PermutationOperationPass"; } + +public: + void visit(const model::operation::FullyConnectedNode &) final; + void visit(const model::operation::GatherNode &) final; + void visit(const model::operation::ReshapeNode &) final; +}; + +} // namespace pass +} // namespace graph +} // namespace neurun + +#endif // __NEURUN_GRAPH_PASS_PERMUTATION_OPERATION_PASS_H__