accelergy+timeloop底层优化
目前想到的改进点
accelergy
目前支持三种能量评估插件:CACTI(DRAM/SRAM/cache);Aladdin(datapath,例如intadder/FIFO);table-based(用户自己输入的能量表格)。
CACTI插件直接调用了惠普实验室的CACTI7.0(2017年的最新版,第一版在1993年)。
这部分做不了优化。
Aladdin插件目前仅支持40nm和部分45nm,内部是表格(采集自Aladdin的输出,而不是直接调用Aladdin)然后根据传入的位宽等参数将表格数据缩放。也可以评估SRAM(基于CACTI5.3版本)。对微架构能量建模不准确,会导致最后选择的优化映射方案非最优(但是由于加速器主要开销在访问存储器,而这部分由CACTI负责,因此对总体评估的影响较小)。
这部分可以考虑往插件中加入更多的表格以支持更多的基本组件,比如说稀疏格式的解码和编码单元。
可以考虑新增插件NVSim,用于评估非易失性存储组件的性能,接入方式类似CACTI。
Timeloop
tile analysis
和microarchitecture energy model
分离,默认的能量模型是线性的(虽然加速器往往设计成计算与数据交换的高度重叠,但仍会有冲突,timeloop
不考虑pipeline disruption
),可否改成非线性(例如,随机网络冲突和拥塞)。目前仅支持单层评估,可以考虑为全网络找到全局最优方案。简单的做法是直接线性合并多层网络;复杂的需要考虑跨层数据的重用,但是eyeriss又不支持该功能。
Eyeriss
- 考虑不同的稀疏编码格式
- 以整个网络而非单层为优化目标,探索各级存储空间的最佳设置。
- 可以考虑将MAC换成存内计算组件(memristor/ReRAM),然后用table-based/NVSim估算能量???