|
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 |