This pull request merges the ZigZag-IMC repository into the ZigZag repository in this pull request. Original ZigZag-IMC will no longer be maintained.
Updates
The IMC cost model is now added under ./zigzag/classes/hardware/architecture/ and the CostModelStage is updated accordingly. Now both the IMC cores and pure digital cores can be defined at the user interface.
The original validation files for IMC models have been moved to the new folder ./zigzag/inputs/examples/validation/sram_imc/.
README.md is updated with a new pointer to relevant IMC papers, slides, videos, and posters.
Corresponding pytest cases are added for IMC examples.
A new function for IMC performance evaluation, get_hardware_performance_zigzag_imc, is added to the API. The output includes energy, latency (in cycles), clock time, and area.
Update WorkloadStage so that the "Pooling" and "Add" layers will be skipped for IMC cores (happens only when the workload is manually defined in python).
.gitignore is updated to include cacti temp folder used by IMC cost model.
Other fixes
Some obsolete inline comments are removed.
__jsonrepr__ in the cost model is updated so that the spatial mapping will be saved in the output complete.json in integer format instead of decimal points, to avoid confusion.
Fix the layer operand extraction method in ./zigzag/classes/opt/spatial/generator.py to support manually defined workloads. Original hard-coded method is removed.
Output file type yml is added within CompleteSaveStage for better formatting and easier understanding than json.
ZigZag + ZigZag-IMC
Purpose of the pull request
This pull request merges the ZigZag-IMC repository into the ZigZag repository in this pull request. Original ZigZag-IMC will no longer be maintained.
Updates
./zigzag/classes/hardware/architecture/
and theCostModelStage
is updated accordingly. Now both the IMC cores and pure digital cores can be defined at the user interface../zigzag/inputs/examples/validation/sram_imc/
.get_hardware_performance_zigzag_imc
, is added to the API. The output includes energy, latency (in cycles), clock time, and area.WorkloadStage
so that the "Pooling" and "Add" layers will be skipped for IMC cores (happens only when the workload is manually defined in python)..gitignore
is updated to include cacti temp folder used by IMC cost model.Other fixes
__jsonrepr__
in the cost model is updated so that the spatial mapping will be saved in the output complete.json in integer format instead of decimal points, to avoid confusion../zigzag/classes/opt/spatial/generator.py
to support manually defined workloads. Original hard-coded method is removed.yml
is added withinCompleteSaveStage
for better formatting and easier understanding thanjson
.