|
|
|
@ -473,12 +473,12 @@ bool IsGraphOutputValueNodeOrParameter(const AnfNodePtr &output, const py::tuple
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
// Isomorphism
|
|
|
|
|
static bool SameNode(const AnfNodePtr &node1, const AnfNodePtr &node2, FuncGraphPairMapEquiv *equiv_func_graph,
|
|
|
|
|
NodeMapEquiv *const equiv_node);
|
|
|
|
|
static bool SameNodeShallow(const AnfNodePtr &node1, const AnfNodePtr &node2, FuncGraphPairMapEquiv *equiv_func_graph,
|
|
|
|
|
NodeMapEquiv *const equiv_node) {
|
|
|
|
|
bool SameNode(const AnfNodePtr &node1, const AnfNodePtr &node2, FuncGraphPairMapEquiv *equiv_func_graph,
|
|
|
|
|
NodeMapEquiv *const equiv_node);
|
|
|
|
|
bool SameNodeShallow(const AnfNodePtr &node1, const AnfNodePtr &node2, FuncGraphPairMapEquiv *equiv_func_graph,
|
|
|
|
|
NodeMapEquiv *const equiv_node) {
|
|
|
|
|
if (equiv_node == nullptr) {
|
|
|
|
|
MS_LOG(ERROR) << "Invalid equiv_node";
|
|
|
|
|
return false;
|
|
|
|
@ -534,8 +534,8 @@ bool SameNode(const AnfNodePtr &node1, const AnfNodePtr &node2, FuncGraphPairMap
|
|
|
|
|
return SameNodeShallow(node1, node2, equiv_func_graph, equiv_node);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static bool SameSubgraph(AnfNodePtr root1, AnfNodePtr root2, FuncGraphPairMapEquiv *equiv_func_graph,
|
|
|
|
|
NodeMapEquiv *const equiv_node) {
|
|
|
|
|
bool SameSubgraph(AnfNodePtr root1, AnfNodePtr root2, FuncGraphPairMapEquiv *equiv_func_graph,
|
|
|
|
|
NodeMapEquiv *const equiv_node) {
|
|
|
|
|
std::unordered_set<AnfNodePtr> done;
|
|
|
|
|
std::stack<std::pair<AnfNodePtr, AnfNodePtr>> todo;
|
|
|
|
|
|
|
|
|
@ -576,6 +576,7 @@ static bool SameSubgraph(AnfNodePtr root1, AnfNodePtr root2, FuncGraphPairMapEqu
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
bool Isomorphic(FuncGraphPtr fg1, FuncGraphPtr fg2, FuncGraphPairMapEquiv *equiv_func_graph,
|
|
|
|
|
NodeMapEquiv *const equiv_node) {
|
|
|
|
|