芯片型号:地平线征程j6地平线征程6做tile方案的时候,对nchw四个维度进行切分,优先切哪一个维度,并且做tile的时候,做数据对齐,生成的新的维度要求能被某个数整除吗,比如说,tile后的h维度的值要求是8的倍数。你能给我详细的方案介绍吗
优先切H,其次是W。通常必须对齐,一般的tensor,各维度shape对齐到2的幂次方;conv like使用的tensor,H对齐到8,W对齐到16,C对齐到32,tile 后维度要求能被某数整除,本质是计算单元一次吃满数据;不能整除就 需要padding,能整除就最快。
在实际算子实现或编译器底层 Tiling 中,通常优先处理计算密集且对齐要求严格的空间维度(H/W),同时确保 通道维度(C) 满足最小对齐单位(32)。具体的 Tiling 策略往往由编译器自动根据算子类型(如 Conv, Pooling, Elementwise)和输入 Shape 决定,但手动优化时应遵循:“切分后的子块尺寸必须满足硬件对齐要求”。
TAE引擎的硬件并行度基于channel维度,所以必须保证首先对齐到c维度;H维度是硬件tile处理的空间维度最小单位,影响内存访问的连续性,与硬件cache line大小匹配W维度:与内存总线宽度和数据预取机制匹配,与硬件数据路径宽度相关是这样吗