专栏算法工具链请问下hbDNNTensorProerties中的stride是什么意思?怎么计算的

请问下hbDNNTensorProerties中的stride是什么意思?怎么计算的

已解决
ZQQ2025-03-03
51
5

请问下hbDNNTensorProerties中的stride是什么意思?怎么计算的????????????????

算法工具链
征程5
评论1
0/1000
  • ZQQ
    Lv.1
    2025-03-03
    0
    4
    • ZQQ回复ZQQ:

      比如这种是怎么计算得到的

      2025-03-03
      0
    • PhoenixOwner回复ZQQ:
      需要结合valid shape和aligned shape来看,看的顺序建议采用从后往前看的顺序。
      以output[0]为例,相关信息如下:
      valid shape: [1, 64, 64, 89]
      aligned shape: [1, 64, 64, 96]
      tensor type: S16
      stride: [196608, 6144, 192, 2]
      上面的意思是指数据类型为S16,因此从内存上看,每个元素占用的内存空间为2字节,对应stride的最后一个维度stride[3]为2,表示在shape层面最后一维中的89,相邻元素的内存地址间隔为2;
      同理,shape层面的倒数第二维是64,考虑到内存对齐的原因,将valid shape的89填充为96,则倒数第二维64中相邻元素的地址间隔维2x96=192,对应stride[2];
      以此类推,stride[1]=stride[2]*aligned_shape[2]=192x64=12288;
      stride[0]=stride[1]*aligned_shape[1]=12288x64=786432

      总结:stride[3]=size_of(tensor_type);
      stride[n]=stride[n-1]*aligned_shape[n-1];
      即stride是表示对应维度上相邻元素的内存地址偏差。
      2025-03-04
      0
    • Huanghui回复ZQQ:

      下面讲的很清楚这里我刚刚写了个计算过程 你参考下

      2025-03-04
      0
    • Huanghui回复ZQQ:
      2025-03-04
      0