blob: 4c7089a9cc94e574798486f455ac04ee633ae7e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
/*
* Copyright (c) 2018 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 "DotBuilder.h"
namespace neurun
{
namespace dumper
{
namespace dot
{
// DotDumper
DotBuilder::DotBuilder() {}
void DotBuilder::update(const Node &node_info)
{
add(node_info);
for (auto edge : node_info.edges())
{
addEdge(node_info, *edge);
}
}
void DotBuilder::addSubgraph(const DotSubgraphInfo &subgraph_info)
{
_dot << "op_seq cluster_" << subgraph_info.index().value() << " {\n";
_dot << " label=\"" << subgraph_info.label() << "\";\n";
_dot << " style=filled;\n";
_dot << " color=lightgrey;\n";
_dot << " ";
for (auto op : subgraph_info.operations())
{
_dot << "operation" << op.value() << "; ";
}
for (auto op : subgraph_info.operands())
{
_dot << "operand" << op.value() << "; ";
}
_dot << "\n";
_dot << "}\n";
}
void DotBuilder::writeDot(std::ostream &os)
{
os << "digraph D {\n"
<< _dot.str() << "\n"
<< "}\n";
}
void DotBuilder::add(const Node &node)
{
_dot << node.id();
std::stringstream ss;
_dot << "[";
for (auto attr : node.attributes())
{
_dot << attr.first << "=\"" << attr.second << "\" ";
}
_dot << "];\n";
}
void DotBuilder::addEdge(const Node &node1, const Node &node2)
{
_dot << node1.id() << " -> " << node2.id() << ";\n";
}
} // namespace dot
} // namespace dumper
} // namespace neurun
|