forked from PaddlePaddle/Paddle
-
Notifications
You must be signed in to change notification settings - Fork 0
nnvm graph
乔龙飞 edited this page Jun 16, 2017
·
8 revisions
class Graph {
public:
// outputs of the computation graph.
std::vector<NodeEntry> outputs;
std::unordered_map<std::string, std::shared_ptr<any> > attrs;
private:
// internal structure of indexed graph
std::shared_ptr<const IndexedGraph> indexed_graph_;
};class IndexedGraph {
private:
// Node pointers in CSR structure.
std::vector<Node> nodes_;
// Index to all input nodes.
std::vector<uint32_t> input_nodes_;
// Index to all mutable input nodes.
std::unordered_set<uint32_t> mutable_input_nodes_;
// space to store the outputs entries
std::vector<NodeEntry> outputs_;
// mapping from node to index.
std::unordered_map<const nnvm::Node*, uint32_t> node2index_;
// CSR pointer of node entries
std::vector<size_t> entry_rptr_;
// space to store input entries of each
std::vector<NodeEntry> input_entries_;
// control flow dependencies
std::vector<uint32_t> control_deps_;
};int NNGraphCreate(SymbolHandle symbol, GraphHandle *graph) {
Graph* g = new Graph();
g->outputs = static_cast<Symbol*>(symbol)->outputs;
*graph = g;
}int NNGraphGetSymbol(GraphHandle graph, SymbolHandle *symbol) {
Symbol* s = new Symbol();
s->outputs = static_cast<Graph*>(graph)->outputs;
*symbol = s;
}class Symbol {
std::vector<NodeEntry> outputs;
};