Skip to content

asc_create_iter_reg (废弃)

产品支持情况

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

功能说明

头文件路径为:"c_api/reg_compute/compute/reg_addr_reg.h"

该接口已废弃,请使用asc_update_addr_reg实现此功能。

地址寄存器通过该接口初始化,然后在循环之中使用地址寄存器存储地址偏移量,该重载接口同步支持1-4个offset参数,并支持初始化b8/b16/b32位宽的寄存器,适配1-4维Tensor。底层在多维循环中自动计算地址偏移,消除标量地址运算开销。

函数原型

C++
__simd_callee__ inline iter_reg asc_create_iter_reg_b32(uint32_t offset)
__simd_callee__ inline iter_reg asc_create_iter_reg_b16(uint32_t offset)
__simd_callee__ inline iter_reg asc_create_iter_reg_b8(uint32_t offset)
__simd_callee__ inline iter_reg asc_create_iter_reg_b32(uint32_t offset0, uint32_t offset1)
__simd_callee__ inline iter_reg asc_create_iter_reg_b16(uint32_t offset0, uint32_t offset1)
__simd_callee__ inline iter_reg asc_create_iter_reg_b8(uint32_t offset0, uint32_t offset1)
__simd_callee__ inline iter_reg asc_create_iter_reg_b32(uint32_t offset0, uint32_t offset1, uint32_t offset2)
__simd_callee__ inline iter_reg asc_create_iter_reg_b16(uint32_t offset0, uint32_t offset1, uint32_t offset2)
__simd_callee__ inline iter_reg asc_create_iter_reg_b8(uint32_t offset0, uint32_t offset1, uint32_t offset2)
__simd_callee__ inline iter_reg asc_create_iter_reg_b32(uint32_t offset0, uint32_t offset1, uint32_t offset2, uint32_t offset3)
__simd_callee__ inline iter_reg asc_create_iter_reg_b16(uint32_t offset0, uint32_t offset1, uint32_t offset2, uint32_t offset3)
__simd_callee__ inline iter_reg asc_create_iter_reg_b8(uint32_t offset0, uint32_t offset1, uint32_t offset2, uint32_t offset3)

参数说明

表1 参数说明

参数名输入/输出描述
offset输入地址偏移量。
offset0输入地址偏移量。
offset1输入地址偏移量。
offset2输入地址偏移量。
offset3输入地址偏移量。

返回值说明

地址寄存器。

流水类型

PIPE_V

约束说明

  • 请勿在循环内使用 if/else。
  • iter_reg必须在最内层循环体内赋值使用。
  • 不同步长的操作数,建议使用多个iter_reg,避免地址被覆盖。

调用示例

地址寄存器调用示例

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