GetTensorC

产品支持情况

产品

是否支持

Ascend 950PR/Ascend 950DT

√

Atlas A3 训练系列产品/Atlas A3 推理系列产品

√

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

√

Atlas 200I/500 A2 推理产品

√

Atlas 推理系列产品AI Core

√

Atlas 推理系列产品Vector Core

x

Atlas 训练系列产品

x

功能说明

Iterate后,获取一块或者两块C矩阵片,可以直接输出到GM tensor中,也可以输出到VECIN tensor中。当MatmulConfig参数中的ScheduleType取值为ScheduleType::INNER_PRODUCT时,获取一块C矩阵片;当MatmulConfig参数中的ScheduleType取值为ScheduleType::OUTER_PRODUCT时,获取两块C矩阵片。

该接口和Iterate接口配合使用,用于在调用Iterate完成迭代计算后,根据MatmulConfig参数中的ScheduleType取值获取一块或两块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。

Ascend 950PR/Ascend 950DT支持异步模式。

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

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

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

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

表2 接口参数说明

参数名

输入/输出

描述

c/co2Local

输出

取出C矩阵到VECIN。

Ascend 950PR/Ascend 950DT支持的数据类型为half、float、bfloat16_t、int32_t、int8_t、fp8_e4m3fn_t、hifloat8_t。数据格式支持ND、NZ。

针对Atlas A3 训练系列产品/Atlas A3 推理系列产品支持的数据类型为half、float、bfloat16_t、int32_t、int8_t。数据格式支持ND、NZ。

针对Atlas A2 训练系列产品/Atlas A2 推理系列产品支持的数据类型为half、float、bfloat16_t、int32_t、int8_t。数据格式支持ND、NZ。

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

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

gm

输出

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

Ascend 950PR/Ascend 950DT支持的数据类型为half、float、bfloat16_t、int32_t、int8_t、fp8_e4m3fn_t、hifloat8_t

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

针对Atlas A2 训练系列产品/Atlas 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 连续写模式示意图

返回值说明

无

约束说明

调用示例

更多异步场景的算子样例请参考异步场景样例、Iterate异步场景样例。