开发者
资源
[object Object]
[object Object]

针对,使用基础API进行矩阵乘法算子实现的编程范式和一致,由于硬件架构不同,具体实现有一些差异,本节仅提供差异点说明。完整代码请参见

  • CopyIn阶段差异

    • 耦合模式

      在CopyIn阶段,即从GM->A1/B1(L1 Buffer)的阶段,耦合模式下可以使用DataCopy接口直接将数据从GM搬入L1 Buffer,也可以将数据从GM搬入UB,再搬入L1 Buffer。若需要ND2NZ的格式转换,需要开发者自行完成;或使用DataCopy接口提供的功能,但该功能会使用UB临时空间。

      如下示例,直接使用了GM->A1/B1的数据搬运指令,自行完成ND2NZ的格式转换。

      [object Object]
    • 分离模式

      分离模式下数据无法经过VECIN/VECCALC/VECOUT (UB) 直接搬运到A1/B1 (L1 Buffer) ,但是使用DataCopy接口提供的功能一条指令即可完成格式转换,无需UB作为临时空间。

      示例如下:

      [object Object]
  • Aggregate及CopyOut阶段差异

    • 耦合模式

      耦合模式中,完成矩阵乘计算后数据存放于CO1(L0C Buffer),最终搬入GM需要通过CO2(UB),且NZ2ND的格式转换需要在CO1->CO2->GM阶段中手动完成。如下样例,在Aggregate阶段将NZ格式数据从CO1搬入CO2中,在CO2->GM的阶段使用for循环调用DataCopy完成了格式转换。

      [object Object]
    • 分离模式

      分离模式下,矩阵乘的计算结果从CO1(L0C Buffer)可以通过Fixpipe通路直接写入GM,而且提供了随路NZ2ND的功能,方便用户做格式转换。样例如下,样例中省去了Aggregate阶段,直接CopyOut。

      [object Object]