|
ZigZag - Deep Learning Hardware Design Space Exploration
This repository presents the novel version of our tried-and-tested hardware Architecture-Mapping Design Space Exploration (DSE) Framework for Deep Learning (DL) accelerators. ZigZag bridges the gap between algorithmic DL decisions and their acceleration cost on specialized accelerators through a fast and accurate hardware cost estimation.
|
Represents a workload graph parsed from ONNX. More...


Public Member Functions | |
| def | __init__ (self, **Any attr) |
| Collect all the algorithmic workload information here. More... | |
| def | add (self, int node_id, LayerNodeABC node_obj) |
| Add a node object to the ONNX workload graph. More... | |
| WorkloadNoDummyABC | get_copy_no_dummy (self) |
| Remove dummy nodes (layers) in the graph Redirect the outgoing edges of dummy nodes to non-dummy nodes Method: for each dummy node, add edges between its predecessor nodes and successor nodes; then remove the dummy node. More... | |
Public Member Functions inherited from DiGraphWrapper | |
| list[tuple[T, T]] | in_edges (self, T node, Literal[False] data) |
| list[tuple[T, T, dict[str, Any]]] | in_edges (self, T node, Literal[True] data) |
| list[tuple[T, T]] | in_edges (self, T node) |
| list[tuple[T, T]]|list[tuple[T, T, dict[str, Any]]] | in_edges (self, T node, bool data=False) |
| list[tuple[T, T, dict[str, Any]]] | out_edges (self, T node, Literal[True] data) |
| list[tuple[T, T]] | out_edges (self, T node, Literal[False] data) |
| list[tuple[T, T]] | out_edges (self, T node) |
| list[tuple[T, T]]|list[tuple[T, T, dict[str, Any]]] | out_edges (self, T node, bool data=False) |
| Iterator[tuple[T, int]] | in_degree (self) |
| Iterator[tuple[T, int]] | out_degree (self, Literal[None] node) |
| Iterator[tuple[T, int]] | out_degree (self) |
| int | out_degree (self, T node) |
| int|Iterator[tuple[T, int]] | out_degree (self, T|None node=None) |
| Iterator[T] | successors (self, T node) |
| Iterator[T] | predecessors (self, T node) |
| Iterator[T] | topological_sort (self) |
| None | add_node (self, T node) |
| None | add_nodes_from (self, Sequence[T] node) |
| None | remove_nodes_from (self, Iterator[T] nodes) |
| None | add_edge (self, T edge_from, T edge_to) |
| None | add_edges_from (self, Sequence[tuple[T, T]|tuple[T, T, Any]] edges) |
| Iterator[list[T]] | all_simple_paths (self, T producer, T consumer) |
| list[T] | shortest_path (self, T producer, T consumer) |
| list[T] | node_list (self) |
| T | get_node_with_id (self, int node_id) |
Public Member Functions inherited from LayerNodeABC | |
| def | __init__ (self, int node_id, str node_name) |
| str | __repr__ (self) |
| str | __str__ (self) |
| def | __jsonrepr__ (self) |
| JSON representation used for saving this object to a json file. More... | |
Additional Inherited Members | |
Public Attributes inherited from LayerNodeABC | |
| id | |
| name | |
Represents a workload graph parsed from ONNX.
| def __init__ | ( | self, | |
| **Any | attr | ||
| ) |
Collect all the algorithmic workload information here.
| def add | ( | self, | |
| int | node_id, | ||
| LayerNodeABC | node_obj | ||
| ) |
Add a node object to the ONNX workload graph.
This can be a different object based on if it's an "accelerateable" node or not.

| WorkloadNoDummyABC get_copy_no_dummy | ( | self | ) |
Remove dummy nodes (layers) in the graph Redirect the outgoing edges of dummy nodes to non-dummy nodes Method: for each dummy node, add edges between its predecessor nodes and successor nodes; then remove the dummy node.
Reimplemented from WorkloadABC.