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... | |
![]() | |
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) |
![]() | |
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 | |
![]() | |
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.