基于遗传算法的CMM操作硬件优化及紧凑BDD的遗传编程构建
1. 常量矩阵乘法(CMM)问题概述
在处理常量矩阵乘法(CMM)问题时,需要考虑多个方面以实现硬件的优化。DPL(Dot Product Level)算法在处理每个点积时,会生成相应的2D跳表。在DPL迭代过程中,会检查生成的排列积之和(SOP)中的每一项,若该项已在之前的排列中出现过,则将其丢弃,仅将唯一的实现添加到全局列表中。这个全局列表使用2D跳表实现,以最小化搜索新项时的开销。
1.1 DPL算法细节
- 跳表结构 :水平方向有“跳过节点列表”(SNL),按硬件资源(hw)递增顺序从左到右排列;垂直方向有“乘积节点列表”(PNL),每个跳过节点指向一个有序的乘积节点列表,其中每个乘积节点的p_vec位向量中设置的位数(即hw)相同。
- 节点插入 :插入新项时,会为节点添加唯一的排列ID(pid)和p_vec,以便重建生成它的SD排列。
- 硬件加速 :DPL算法主要由比较、布尔逻辑和位计数等低级操作主导。分析表明,平均60%的计算时间用于位计数(50%)和按位或(10%)。这些任务可以通过将多术语SOP映射到FIFO结构,并将逻辑或操作映射到或门,在硬件上加速。
1.2 CMML阶段
当DPL算法为CMM中的每个点积运行后,会得到N个2D跳表。CMML(Constant Matrix Multiplication Level)阶段的任务是为所有CMM点积找到最佳的重叠乘积节点集,每个点积