asc.language.adv.Matmul.iterate
- Matmul.iterate(en_partial_sum: bool = False, sync: bool = True, local_c_matrix: BaseTensor | None = None) MatmulIterator
每调用一次Iterate,会计算出一块baseM * baseN的C矩阵。
对应的Ascend C函数原型
template <bool sync = true> __aicore__ inline bool Iterate(bool enPartialSum = false)
template <bool sync = true, typename T> __aicore__ inline bool Iterate(bool enPartialSum, const LocalTensor<T>& localCmatrix)
参数说明
en_partial_sum: 是否将矩阵乘的结果累加于现有的CO1数据,默认值为false。
sync: 设置同步或者异步模式。
local_c_matrix: 由用户申请的CO1上的LocalTensor内存,用于存放矩阵乘的计算结果。
约束说明
当使能MixDualMaster(双主模式)场景时,即模板参数enableMixDualMaster设置为true,不支持使用该接口。
对于用户自主管理CO1的iterate函数,创建Matmul对象时,必须定义C矩阵的内存逻辑位置为TPosition::CO1、数据排布格式为CubeFormat::NZ、数据类型为float或int32_t。
调用示例
# 同步模式样例 while mm.iterate() as count: mm.get_tensor_c(tensor=ub_cmatrix) # 异步模式样例 mm.iterate(sync=False) # 其他操作 for i in range(single_m // base_m * single_n // base_n): mm.get_tensor_c(tensor=ub_cmatrix, sync=False)