GetTensorC

功能说明

Iterate后,获取一块C矩阵片,可以直接输出到GM tensor中,也可以输出到VECIN tensor中。

该接口和Iterate接口配合使用,用于在调用Iterate完成迭代计算后,获取一片baseM * baseN大小的矩阵分片。

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

函数原型

以下接口中的doPad、height、width、srcGap、dstGap参数待废弃,使用过程中无需传入,保持默认值即可;上文介绍的输出至VECIN的原型实际为不传入默认值的函数原型。

1
2
template <bool sync = true, bool doPad = false>
__aicore__ inline void GetTensorC(const LocalTensor<DstT>& c, uint8_t enAtomic = 0, bool enSequentialWrite = false, uint32_t height = 0, uint32_t width = 0, uint32_t srcGap = 0, uint32_t dstGap = 0)

参数说明

表1 模板参数说明

参数名

描述

sync

设置同步或者异步模式:同步模式设置为true;异步模式设置为false。

Atlas推理系列产品AI Core不支持异步模式。

Atlas 200I/500 A2推理产品不支持异步模式。

Atlas A2训练系列产品/Atlas 800I A2推理产品支持异步模式。

表2 接口参数说明

参数名

输入/输出

描述

c/co2Local

输出

取出C矩阵到VECIN,数据格式仅支持NZ。

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

针对Atlas推理系列产品AI Core支持的数据类型为half、float、int8_t、int32_t

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

gm

输出

取出C矩阵到GM,数据格式可以为ND或NZ。

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

针对Atlas推理系列产品AI Core支持的数据类型为half、float、int8_t、int32_t

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

enAtomic

输入

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

参数取值:

0:不开启Atomic操作

1:开启AtomicAdd累加操作

2:开启AtomicMax求最大值操作

3:开启AtomicMin求最小值操作

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

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

enSequentialWrite

输入

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

注意:非连续写模式,内部会按照迭代顺序算好偏移,开发者不需要关注;如果开发者需要自己决定排布顺序,可以选择连续写模式,自行按照自己设定的偏移进行搬运操作。

对于Atlas 200I/500 A2推理产品只支持非连续写模式。

图1 非连续写模式示意图
图2 连续写模式示意图

返回值

支持的型号

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

Atlas推理系列产品AI Core

Atlas 200I/500 A2推理产品

注意事项

调用示例