CANN/pyasc Gather算子接口文档
asc.language.basic.gather【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyascasc.language.basic.gather(dst: LocalTensor, src: LocalTensor, src_offset: LocalTensor, src_base: int, mask: int, repeat_times: int, dst_rep_stride: int) → Noneasc.language.basic.gather(dst: LocalTensor, src: LocalTensor, src_offset: LocalTensor, src_base: int, mask: List[int], repeat_times: int, dst_rep_stride: int) → Noneasc.language.basic.gather(dst: LocalTensor, src: LocalTensor, src_offset: LocalTensor, src_base: int, count: int) → None给定输入的张量和一个地址偏移张量本接口根据偏移地址将输入张量按元素收集到结果张量中。对应的Ascend C函数原型tensor前n个数据计算template typename T __aicore__ inline void Gather(const LocalTensorT dst, const LocalTensorT src, const LocalTensoruint32_t srcOffset, const uint32_t srcBaseAddr, const uint32_t count)tensor高维切分计算mask逐bit模式template typename T __aicore__ inline void Gather(const LocalTensorT dst, const LocalTensorT src, const LocalTensoruint32_t srcOffset, const uint32_t srcBaseAddr, const uint64_t mask[], const uint8_t repeatTime, const uint16_t dstRepStride)mask连续模式template typename T __aicore__ inline void Gather(const LocalTensorT dst, const LocalTensorT src, const LocalTensoruint32_t srcOffset, const uint32_t srcBaseAddr, const uint64_t mask, const uint8_t repeatTime, const uint16_t dstRepStride)参数说明dst目的操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。src: 源操作数。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。src_offset每个元素在src中对应的地址偏移。类型为LocalTensor支持的TPosition为VECIN/VECCALC/VECOUT。LocalTensor的起始地址需要32字节对齐。 该偏移量相对于src的起始基地址而言。单位为Bytes。取值要求如下取值应保证src元素类型位宽对齐。偏移地址后不能超出UB大小数据的范围。地址偏移的取值范围不能超出uint32_t的范围。src_basesrc的起始基地址用于指定Gather操作中源操作数的起始位置单位为Bytes。取值应保证src元素类型位宽对齐否则会导致非预期行为。count执行处理的数据个数。mask 控制每次迭代内参与计算的元素。逐bit模式mask为数组形式。数组长度和数组元素的取值范围和操作数的数据类型有关。可以按位控制哪些元素参与计算bit位的值为1表示参与计算0表示不参与。操作数 16 位数组长度 2mask[0], mask[1] ∈ [0, 2⁶⁴-1]且不能同时为 0操作数 32 位数组长度 1mask[0] ∈ (0, 2⁶⁴-1]操作数 64 位数组长度 1mask[0] ∈ (0, 2³²-1]例如mask [8, 0]表示仅第 4 个元素参与计算连续模式mask为整数形式。表示前面连续多少个元素参与计算。取值范围和操作数的数据类型有关数据类型不同每次迭代内能够处理的元素个数最大值不同。操作数 16 位mask ∈ [1, 128]操作数 32 位mask ∈ [1, 64]操作数 64 位mask ∈ [1, 32]repeat_time指令迭代次数每次迭代完成8个datablock32Bytes的数据收集数据范围repeat_time∈[0,255]。dst_rep_stride相邻迭代间的地址步长单位是datablock32Bytes。约束说明操作数地址对齐要求请参见 《Ascend C算子开发接口》 中的“通用说明和约束-通用地址对齐约束”。操作数地址重叠约束请参考 《Ascend C算子开发接口》 中的“通用说明和约束-通用地址重叠约束”。调用示例z_local asc.LocalTensor(dtypeasc.float16, posasc.TPosition.VECOUT, addr0, tile_size512) src_offset asc.LocalTensor(dtypeasc.uint32, posasc.TPosition.VECIN, addr0, tile_size512) x_local asc.LocalTensor(dtypeasc.float16, posasc.TPosition.VECIN, addr0, tile_size512) asc.gather(z_local, x_local, src_offset, src_base0, count512) asc.gather(z_local, x_local, src_offset, src_base0, mask512, repeat_times1, dst_rep_stride8) uint64_max 2**64 - 1 mask_bits [uint64_max, uint64_max] asc.gather(z_local, x_local, src_offset, src_base0, maskmask_bits, repeat_times1, dst_rep_stride8)【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考