文档
注册
评分
提单
论坛
小AI

IterateAll

功能说明

调用一次IterateAll,会计算出singleCoreM * singleCoreN大小的C矩阵。迭代顺序可通过tiling参数iterateOrder调整。

函数原型

1
template <bool sync = true> __aicore__ inline void IterateAll(const GlobalTensor<DstT>& gm, uint8_t enAtomic = 0, bool enSequentialWrite = false, bool waitIterateAll = false, bool fakeMsg = false)
1
template <bool sync = true> __aicore__ inline void IterateAll(const LocalTensor<DstT>& ubCmatrix, uint8_t enAtomic = 0)

参数说明

表1 模板参数说明

参数名

描述

sync

获取C矩阵过程分为同步和异步两种模式:

  • 同步:需要同步等待IterateAll执行结束
  • 异步:不需要同步等待IterateAll执行结束

通过该参数设置同步或者异步模式:同步模式设置为true;异步模式设置为false,默认为同步模式。

Atlas 200/500 A2推理产品只支持设置为true。

表2 接口参数说明

参数名

输入/输出

描述

gm

输入

C矩阵放置于Global Memory的地址。

Atlas推理系列产品(Ascend 310P处理器)AI Core,支持的数据类型为:half/float/int8_t/int32_t

Atlas A2训练系列产品/Atlas 800I A2推理产品,支持的数据类型为:half/float/bfloat16_t/int32_t/int8_t

Atlas 200/500 A2推理产品,支持的数据类型为half/float/bfloat16_t/int32_t

ubCmatrix

输入

C矩阵放置于Local Memory的地址。TPosition可设置为TPosition::TSCM。

Atlas推理系列产品(Ascend 310P处理器)AI Core不支持包含该参数的原型接口

Atlas A2训练系列产品/Atlas 800I A2推理产品,支持的数据类型为:half/float/bfloat16_t/int32_t/int8_t

Atlas 200/500 A2推理产品,支持的数据类型为half/float/bfloat16_t/int32_t

enAtomic

输入

是否开启Atomic操作,默认值为0。

参数取值:

0:不开启Atomic操作

1:开启AtomicAdd累加操作

2:开启AtomicMax求最大值操作

3:开启AtomicMin求最小值操作

对于Atlas推理系列产品(Ascend 310P处理器)AI Core只有输出位置是GM才支持开启Atomic操作。

对于Atlas 200/500 A2推理产品只有输出位置是GM才支持开启Atomic操作。

enSequentialWrite

输入

是否开启连续写模式(连续写,写入[baseM,baseN];非连续写,写入[singleCoreM、singleCoreN]中对应的位置),默认值false(非连续写模式)。

Atlas 200/500 A2推理产品不支持该参数。

waitIterateAll

输入

仅在异步场景下使用,是否需要通过WaitIterateAll接口等待IterateAll执行结束。

true:需要通过WaitIterateAll接口等待IterateAll执行结束。

false:不需要通过WaitIterateAll接口等待IterateAll执行结束,开发者自行处理等待IterateAll执行结束的过程。

fakeMsg

输入

仅在IBShare(模板参数中开启了doIBShareNorm开关)场景使用。

IBShare用于保证复用L1上相同的A矩阵或B矩阵数据,要求AIV分核调用IterateAll的次数必须匹配,此时需要调用IterateAll并设置fakeMsg为true,不执行真正的计算,仅用来保证IterateAll调用成对出现。默认值为false,表示执行真正的计算。

返回值

支持的型号

Atlas A2训练系列产品/Atlas 800I A2推理产品

Atlas推理系列产品(Ascend 310P处理器)AI Core

Atlas 200/500 A2推理产品

注意事项

传入的C矩阵地址空间大小需要保证不小于singleM * singleN。

调用示例

REGIST_MATMUL_OBJ(&pipe, GetSysWorkSpacePtr(), mm, &tiling);
mm.SetTensorA(gm_a);
mm.SetTensorB(gm_b);
mm.SetBias(gm_bias);
mm.IterateAll(gm_c);    // 计算
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词