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.
ONNXWorkload Class Reference

Represents a workload graph parsed from ONNX. More...

Inheritance diagram for ONNXWorkload:
Collaboration diagram for ONNXWorkload:

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[Tsuccessors (self, T node)
 
Iterator[Tpredecessors (self, T node)
 
Iterator[Ttopological_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[Tshortest_path (self, T producer, T consumer)
 
list[Tnode_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
 

Detailed Description

Represents a workload graph parsed from ONNX.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
**Any  attr 
)

Collect all the algorithmic workload information here.

Member Function Documentation

◆ add()

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.

Here is the call graph for this function:

◆ get_copy_no_dummy()

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.


The documentation for this class was generated from the following file: