Skip to content

Arange

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品AI Core:支持
  • Atlas 推理系列产品Vector Core:不支持
  • Atlas 训练系列产品:不支持

功能说明

给定起始值,等差值和长度,返回一个等差数列。

实现原理

以float类型,ND格式,firstValue和diffValue输入Scalar为例,描述Arange高阶API内部算法框图,如下图所示。

图1 Arange算法框图

计算过程分为如下几步,均在Vector上进行:

  1. 等差数列长度8以内步骤:按照firstValue和diffValue的值,使用SetValue实现等差数列扩充,扩充长度最大为8,如果等差数列长度小于8,算法结束;
  2. 等差数列长度8至64的步骤:对第一步中的等差数列结果使用Adds进行扩充,最大循环7次扩充至64,如果等差数列长度小于64,算法结束;
  3. 等差数列长度64以上的步骤:对第二步中的等差数列结果使用Adds进行扩充,不断循环直至达到等差数列长度为止。

函数原型

Text
template <typename T>
__aicore__ inline void Arange(const LocalTensor<T>& dst, const T firstValue, const T diffValue, const int32_t count)

参数说明

表1 模板参数说明

参数名描述
T操作数的数据类型。不同型号支持的数据类型请参考支持的数据类型

表2 接口参数说明

参数名输入/输出描述
dst输出目的操作数。dst的大小应大于等于count * sizeof(T)。

类型为LocalTensor,支持的TPosition为VECIN/VECCALC/VECOUT。
firstValue输入等差数列的首个元素值。
diffValue输入等差数列元素之间的差值,应大于等于0。
count输入等差数列的长度。count>0。

返回值说明

约束说明

  • 当前仅支持ND格式的输入,不支持其他格式。

  • 支持的数据类型

    Ascend 950PR/Ascend 950DT,支持的数据类型为:int16_t、half、int32_t、float、int64_t。

    Atlas A3 训练系列产品/Atlas A3 推理系列产品,支持的数据类型为:int16_t、half、int32_t、float。

    Atlas A2 训练系列产品/Atlas A2 推理系列产品,支持的数据类型为:int16_t、half、int32_t、float。

    Atlas 推理系列产品AI Core,支持的数据类型为:int16_t、half、int32_t、float。

调用示例

完整样例请参考Arange样例

Text
// dst:输出Tensor
// firstValue_:等差数列首个元素值
// diffValue_:等差数列的公差
// count_:等差数列的长度
AscendC::Arange<T>(dst, static_cast<T>(firstValue_), static_cast<T>(diffValue_), count_);

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区