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

Represents a single memory in the memory hierarchy, consisting of a memory instance and connectivity information. More...

Public Member Functions

def __init__ (self, MemoryInstance memory_instance, list[MemoryOperand] operands, dict[MemoryOperand, int] mem_level_of_operands, PortAllocation port_alloc, ServedMemDimensions served_dimensions, OperationalArrayABC operational_array, int identifier)
 Initialize the memory level in the hierarchy with the physical memory instance. More...
 
int|None get_min_bandwidth (self, MemoryOperand operand, DataDirection data_dir)
 Get the minimum memory bandwidth for a specific memory operand and data movement direction. More...
 
int|None get_max_bandwidth (self, MemoryOperand operand, DataDirection data_dir)
 Get the maximum memory bandwidth for a specific memory operand and data movement direction. More...
 
int unroll_count (self)
 Calculate how many times this memory instance is unrolled (duplicated) on the Operational Array. More...
 
def __jsonrepr__ (self)
 JSON Representation of this class to save it to a json file. More...
 
def __str__ (self)
 
def __repr__ (self)
 
bool __eq__ (self, Any other)
 
def has_same_performance (self, "MemoryLevel" other)
 
int __hash__ (self)
 

Public Attributes

 memory_instance
 
 operands
 
 mem_level_of_operands
 
 oa_dim_sizes
 
 id
 
 served_dimensions
 
 name
 
 ports
 
 port_alloc_raw
 
 read_energy
 
 write_energy
 
 bandwidths_min
 
 bandwidths_max
 
 formatted_string
 

Detailed Description

Represents a single memory in the memory hierarchy, consisting of a memory instance and connectivity information.

Constructor & Destructor Documentation

◆ __init__()

def __init__ (   self,
MemoryInstance  memory_instance,
list[MemoryOperand operands,
dict[MemoryOperand, int]  mem_level_of_operands,
PortAllocation  port_alloc,
ServedMemDimensions  served_dimensions,
OperationalArrayABC  operational_array,
int  identifier 
)

Initialize the memory level in the hierarchy with the physical memory instance.

Parameters
port_allocmemory port allocation (physical memory port -> functional memory port)
idan identifier used for reference check.

Member Function Documentation

◆ __eq__()

bool __eq__ (   self,
Any  other 
)

◆ __hash__()

int __hash__ (   self)
Here is the call graph for this function:

◆ __jsonrepr__()

def __jsonrepr__ (   self)

JSON Representation of this class to save it to a json file.

◆ __repr__()

def __repr__ (   self)

◆ __str__()

def __str__ (   self)
Here is the call graph for this function:

◆ get_max_bandwidth()

int | None get_max_bandwidth (   self,
MemoryOperand  operand,
DataDirection  data_dir 
)

Get the maximum memory bandwidth for a specific memory operand and data movement direction.

◆ get_min_bandwidth()

int | None get_min_bandwidth (   self,
MemoryOperand  operand,
DataDirection  data_dir 
)

Get the minimum memory bandwidth for a specific memory operand and data movement direction.

◆ has_same_performance()

def has_same_performance (   self,
"MemoryLevel"  other 
)

◆ unroll_count()

int unroll_count (   self)

Calculate how many times this memory instance is unrolled (duplicated) on the Operational Array.

Member Data Documentation

◆ bandwidths_max

bandwidths_max

◆ bandwidths_min

bandwidths_min

◆ formatted_string

formatted_string

◆ id

id

◆ mem_level_of_operands

mem_level_of_operands

◆ memory_instance

memory_instance

◆ name

name

◆ oa_dim_sizes

oa_dim_sizes

◆ operands

operands

◆ port_alloc_raw

port_alloc_raw

◆ ports

ports

◆ read_energy

read_energy

◆ served_dimensions

served_dimensions

◆ write_energy

write_energy

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