专栏算法工具链地平线征程j6做tile方案疑问

地平线征程j6做tile方案疑问

默认263362026-04-28
208
5
芯片型号:地平线征程j6
地平线征程6做tile方案的时候,对nchw四个维度进行切分,优先切哪一个维度,并且做tile的时候,做数据对齐,生成的新的维度要求能被某个数整除吗,比如说,tile后的h维度的值要求是8的倍数。你能给我详细的方案介绍吗
算法工具链
社区活动征程6
评论2
0/600
  • zyhang
    Lv.1

    优先切H,其次是W。通常必须对齐,一般的tensor,各维度shape对齐到2的幂次方;conv like使用的tensor,H对齐到8,W对齐到16,C对齐到32,tile 后维度要求能被某数整除,本质是计算单元一次吃满数据;不能整除就 需要padding,能整除就最快。

    2026-04-29
    0
    0
  • 费小财
    Lv.5
    在实际算子实现或编译器底层 Tiling 中,通常优先处理计算密集且对齐要求严格的空间维度(H/W),同时确保 通道维度(C) 满足最小对齐单位(32)。具体的 Tiling 策略往往由编译器自动根据算子类型(如 Conv, Pooling, Elementwise)和输入 Shape 决定,但手动优化时应遵循:“切分后的子块尺寸必须满足硬件对齐要求”
    2026-04-29
    0
    3
    • 默认26336回复费小财:

      TAE引擎的硬件并行度基于channel维度,所以必须保证首先对齐到c维度;

      H维度是硬件tile处理的空间维度最小单位,影响内存访问的连续性,与硬件cache line大小匹配
      W维度:与内存总线宽度和数据预取机制匹配,与硬件数据路径宽度相关
      是这样吗
      2026-04-29
      0
    • 费小财回复默认26336:
      你提到的“必须保证首先对齐到c维度”是不准确的。硬件对齐是为了避免Padding带来的算力浪费,不同算子类型有不同的对齐要求,且并没有绝对的“首先C”的优先级顺序,而是需要同时满足各维度的最小对齐单位
      你关于H/W影响内存访问的理解方向是对的,但在地平线J6平台上,有一个非常重要的优化策略:尽量将大维度放在 W 上,避免 C 过大而 H/W 过小
      2026-04-30
      0
    • 默认26336回复费小财:

      你好,这几天看了一下仿真报告,发现3*3的卷积和1*1的卷积硬件对齐是不是不一样,1*1的卷积是不是64通道对齐,h是4,w是8

      2026-05-13
      0