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.
|
Functions | |
( tuple[float, float, list[tuple[CostModelEvaluationABC, Any]]]|tuple[float, float, float, float, list[tuple[CostModelEvaluationABC, Any]]]) | get_hardware_performance_zigzag (str|list[dict[str, Any]]|ModelProto workload, str accelerator, str mapping, *Literal["loma"]|Literal["salsa"] temporal_mapping_search_engine="loma", Literal["uneven"]|Literal["even"] temporal_mapping_type="uneven", str opt="latency", str dump_folder=f"outputs/{datetime.now()}", str|None pickle_filename=None, int lpf_limit=6, int nb_spatial_mappings_generated=3, bool in_memory_compute=False, bool exploit_data_locality=False, bool enable_mix_spatial_mapping=False, bool loma_show_progress_bar=True) |
ZigZag API: estimates the cost of running the given workload on the given hardware architecture. More... | |
tuple[float, float, float, float, list[tuple[CostModelEvaluationABC, Any]]] | get_hardware_performance_zigzag_imc (*Any args) |
Overload with type hint. More... | |
( tuple[float, float, list[tuple[CostModelEvaluationABC, Any]]] | tuple[float, float, float, float, list[tuple[CostModelEvaluationABC, Any]]] ) zigzag.api.get_hardware_performance_zigzag | ( | str | list[dict[str, Any]] | ModelProto | workload, |
str | accelerator, | ||
str | mapping, | ||
*Literal["loma"] | Literal["salsa"] | temporal_mapping_search_engine = "loma" , |
||
Literal["uneven"] | Literal["even"] | temporal_mapping_type = "uneven" , |
||
str | opt = "latency" , |
||
str | dump_folder = f"outputs/{datetime.now()}" , |
||
str | None | pickle_filename = None , |
||
int | lpf_limit = 6 , |
||
int | nb_spatial_mappings_generated = 3 , |
||
bool | in_memory_compute = False , |
||
bool | exploit_data_locality = False , |
||
bool | enable_mix_spatial_mapping = False , |
||
bool | loma_show_progress_bar = True |
||
) |
ZigZag API: estimates the cost of running the given workload on the given hardware architecture.
workload | Either a filepath to the workload ONNX or yaml file, an ONNX model. |
accelerator | Filepath to accelerator yaml file. |
mapping | Filepath to mapping yaml file. |
opt | Optimization criterion: either energy , latency or EDP . |
dump_folder | Folder where outputs will be saved. |
pickle_filename | Filename of pickle dump. |
lpf_limit | Determines the number of temporal unrollings that are evaluated. |
nb_spatial_mappings_generated | Max nb of spatial mappings automatically generated (if not provided in mapping). |
in_memory_compute | Optimizes the run for IMC architectures. |
exploit_data_locality | Iff true, an attempt will be made to keep data in lower-level memory in between layers |
enable_mix_spatial_mapping | Wether mixed spatial mappings will be generated, i.e. unrolling multiple Layer Dimensions in a single Operational Array Dimension. |
tuple[float, float, float, float, list[tuple[CostModelEvaluationABC, Any]]] zigzag.api.get_hardware_performance_zigzag_imc | ( | *Any | args | ) |
Overload with type hint.