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 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 | |
Represents a single memory in the memory hierarchy, consisting of a memory instance and connectivity information.
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.
port_alloc | memory port allocation (physical memory port -> functional memory port) |
id | an identifier used for reference check. |
bool __eq__ | ( | self, | |
Any | other | ||
) |
int __hash__ | ( | self | ) |
def __jsonrepr__ | ( | self | ) |
JSON Representation of this class to save it to a json file.
def __repr__ | ( | self | ) |
def __str__ | ( | self | ) |
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.
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.
def has_same_performance | ( | self, | |
"MemoryLevel" | other | ||
) |
int unroll_count | ( | self | ) |
Calculate how many times this memory instance is unrolled (duplicated) on the Operational Array.
bandwidths_max |
bandwidths_min |
formatted_string |
id |
mem_level_of_operands |
memory_instance |
name |
oa_dim_sizes |
operands |
port_alloc_raw |
ports |
read_energy |
served_dimensions |
write_energy |