Skip to content
版 本

CreateVecIndex

产 品 支 持 情 况

产 品

是 否 支 持

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

功 能 说 明

头 文 件 路 径 为:"basic_api/kernel_operator_vec_createvecindex_intf.h"

CreateVecIndex接 口 创 建 指 定 起 始 值 的 向 量 索 引。

接 口 支 持 使 用 前n个 数 据 计 算 和 高 维 切 分 计 算 的 方 式,前n个 数 据 计 算 原 理 和 参 考 伪 代 码 如 下:

Python
import numpy as np

def CreateVecIndex(dst, firstValue, count):
    dst = np.arange(firstValue, firstValue + count, dtype=np.float16)

函 数 原 型

  • tensor前n个 数 据 计 算

    C++
    template <typename T> 
    __aicore__ inline void CreateVecIndex(LocalTensor<T> dst, const T &firstValue, uint32_t count)
    
  • tensor高 维 切 分 计 算

    • mask逐bit模 式

      C++
      template <typename T> 
      __aicore__ inline void CreateVecIndex(LocalTensor<T> &dst, const T &firstValue, uint64_t mask[], uint8_t repeatTime, uint16_t dstBlkStride, uint8_t dstRepStride)
      
    • mask连 续 模 式

      C++
      template <typename T> 
      __aicore__ inline void CreateVecIndex(LocalTensor<T> &dst, const T &firstValue, uint64_t mask, uint8_t repeatTime, uint16_t dstBlkStride, uint8_t dstRepStride)
      

参 数 说 明

表 1 模 板 参 数 说 明

参 数 名 称描 述
T操 作 数 数 据 类 型。

表 2 接 口 参 数 说 明

参 数 说 明输 入/输 出含 义
dst输 出目 的 操 作 数,类 型 为LocalTensor,支 持 的TPosition为VECIN/VECCALC/VECOUT(存 储 位 置 为Unified Buffer)。LocalTensor的 起 始 地 址 需 要 按 照32字 节 对 齐。
firstValue输 入索 引 的 第 一 个 数 值,数 据 类 型 需 与dst中 元 素 的 数 据 类 型 保 持 一 致。
count输 入参 与 计 算 的 元 素 个 数。关 于 该 参 数 的 具 体 说 明 请 参 考连 续 计 算
mask/mask[]输 入mask用 于 控 制 每 次 迭 代 内 参 与 计 算 的 元 素。
设 置 详 见掩 码 操 作
repeatTime输 入指 令 迭 代 次 数,每 次 迭 代 完 成8个DataBlock的 数 据 收 集,取 值 范 围:repeatTime∈[0,255]。
dstBlockStride输 入单 次 迭 代 内,矢 量 目 的 操 作 数 不 同DataBlock间 地 址 步 长,单 位 为DataBlock
dstRepStride输 入相 邻 迭 代 间,矢 量 目 的 操 作 数 相 同DataBlock地 址 步 长,单 位 为DataBlock。

数 据 类 型

Ascend 950PR/Ascend 950DT,支 持 的 数 据 类 型 为:int8_t、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 200I/500 A2 推 理 产 品,支 持 的 数 据 类 型 为:int16_t、half、int32_t、float。

返 回 值 说 明

约 束 说 明

  • 操 作 数 地 址 对 齐 要 求 请 参 见通 用 地 址 对 齐 约 束
  • firstValue需 保 证 不 超 出dst中 元 素 数 据 类 型 对 应 的 大 小 范 围。
- repeatTime = 0表 示 不 会 执 行 计 算 操 作,不 会 对 目 的 操 作 数 进 行 写 入,该 接 口 将 被 视 为 NOP(空 操 作)。该 约 束 适 用 于 以 下 型 号。
  • Atlas A3 训 练 系 列 产 品/Atlas A3 推 理 系 列 产 品
  • Atlas A2 训 练 系 列 产 品/Atlas A2 推 理 系 列 产 品
  • 针 对Ascend 950PR/Ascend 950DT,int8_t/int64_t数 据 类 型 仅 支 持tensor前n个 数 据 计 算 接 口。

调 用 示 例

本 样 例 中 只 展 示Compute流 程 中 的 部 分 代 码。如 果 您 需 要 运 行 样 例 代 码,请 将 该 代 码 段 拷 贝 并 替 换CreateVecIndex样 例中Compute函 数 相 关 代 码 片 段 即 可。

  • tensor高 维 切 分 计 算 样 例-mask连 续 模 式

    C++
    // repeatTime = 1, mask = 128, 128 elements one repeat, 128 elements total
    // firstValue数 据 类 型 为int16_t,dstLocal数 据 类 型 为int16_t
    // dstBlkStride = 1, 单 次 迭 代 内 数 据 连 续 写 入
    // dstRepStride = 8, 相 邻 迭 代 内 数 据 连 续 写 入
    AscendC::CreateVecIndex(dstLocal, (int16_t)0, mask, repeatTime, dstBlkStride, dstRepStride);
    
  • tensor高 维 切 分 计 算 样 例-mask逐bit模 式

    C++
    uint64_t mask[2] = { UINT64_MAX, UINT64_MAX };
    // repeatTime = 1, 128 elements one repeat, 128 elements total
    // firstValue数 据 类 型 为int16_t,dstLocal数 据 类 型 为int16_t
    // dstBlkStride = 1, 单 次 迭 代 内 数 据 连 续 写 入
    // dstRepStride = 8, 相 邻 迭 代 内 数 据 连 续 写 入
    AscendC::CreateVecIndex(dstLocal, (int16_t)0, mask, repeatTime, dstBlkStride, dstRepStride);
    
  • tensor前n个 数 据 计 算 样 例

    C++
    uint32_t count = 128;    // 参 与 计 算 的 元 素 个 数
    AscendC::CreateVecIndex(dstLocal, (int16_t)0, count);
    

结 果 示 例 如 下:

输 入 数 据(firstValue):0 
输 出 数 据(dstLocal):[0 1 2 ... 127]

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