当前位置:首页 > 智能硬件 > 智能硬件
[导读]卷积内核在小特征图上运行顺畅,换成高分辨率输入却频繁等待,问题可能出在片上数据组织。优化NPU分块时,既要减少相邻块的重复输入,也要确保同一周期的访问能够穿过存储体端口。

卷积内核在小特征图上运行顺畅,换成高分辨率输入却频繁等待,问题可能出在片上数据组织。优化NPU分块时,既要减少相邻块的重复输入,也要确保同一周期的访问能够穿过存储体端口。

空间分块的代价首先来自卷积窗口跨越边界。以无扩张、步长为一的三乘三卷积为例,一个边长为十六的输出块通常需要边长为十八的输入区域;输出块缩成八时,相应输入区域为十。忽略图像外缘填充,二者的输入面积与输出面积之比分别约为一点二七和一点五六。这里比较的是每块独立取数时的需求,不能直接当成整层实测带宽,却揭示了小块为何容易重复读取邻域。

扩大空间块能够摊薄这部分重叠,但它也增大输入、输出和中间结果的驻留需求。预算不能只放一份输入:若采用装载与计算重叠的双缓冲,需要为同时存活的两组数据留出空间;若输出通道被分组处理,还要确定输入是否能留到下一组复用。一旦容量不足导致反复回写部分结果,原本减少的边界读取可能被额外流量抵消。块尺寸因此应由数据存活关系约束,而不是只由某个张量能否放下决定。

工程上可先把整层访问拆成首次读取、块间重复和溢出回写三类,再扫空间块尺寸。若实现允许保留相邻块共有的输入行,边界重复量会低于独立装载模型,应据实际调度重算。带扩张或较大步长的卷积也不能套用前述面积比,必须从输出坐标反推所需输入坐标。固定通道分组后观察外存字节数与计算等待,才能确认增大块尺寸是否真的减少了瓶颈。外缘块还应单独统计有效输出比例,因为填充区域可能减少真实读取,却仍占用部分执行位置。把内部块与边缘块混在一个平均值里,会掩盖分块方案在不同图像尺寸下的差异。

容量检查通过后,另一个障碍是存储体访问冲突。许多片上静态存储器被划成多个存储体,每体在一个周期可完成的读写次数有限。如果地址按固定低位选择存储体,而多个并行通道的地址间隔恰好与映射周期重合,逻辑上并行的请求就可能落到同一体。此时总容量仍有余量,阵列却因请求串行化而停顿,增加存储容量本身通常无法解除这种端口限制。

针对具备可控布局的NPU内核,可以尝试改变通道步距、在行尾加入填充,或采用后端支持的交错映射,使同时访问的数据分布到不同存储体。但填充会扩大驻留空间,交错也可能增加地址生成复杂度,并影响连续搬运的效率。设计必须同时考虑读入权重、读取激活和写回输出的实际端口组合;只让单个输入数组均匀分布,并不保证多个访问流叠加后仍然无冲突。

验证时应保持运算形状和数学工作量一致,只改变布局或步距,比较存储等待与实际周期。如果等待随特定地址间隔呈周期变化,才能形成支持映射冲突的证据。对不开放底层布局的平台,应查看编译器调度报告或采用受支持的替代内核,不能臆测物理存储体编号。还要区分外存供数不足与片上端口争用:两者都让计算单元空闲,但所需优化方向完全不同。

卷积分块的有效尺寸必须同时满足两项条件:边界复用收益没有被回写吞掉,并行访问没有被端口冲突串行化。先建立流量账,再核验访问节拍,才能解释大块是否值得采用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭