asc_update_mask
【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
功能说明
头文件路径:"c_api/reg_compute/reg_vector.h"。
根据value大小生成对应的掩码寄存器中的值。掩码寄存器的元素有效范围从0到VL_T(位宽为Vector Length的对应数据类型的元素个数)。执行完该函数后,value会减去VL_T。算法逻辑表示如下:
value = (value < VL_T) ? 0 : (value - VL_T);函数原型
__simd_callee__ inline vector_bool asc_update_mask_b8(uint32_t& value) __simd_callee__ inline vector_bool asc_update_mask_b16(uint32_t& value) __simd_callee__ inline vector_bool asc_update_mask_b32(uint32_t& value)参数说明
| 参数名 | 输入/输出 | 描述 |
|---|---|---|
| value | 输入/输出 | 矢量计算需要操作的元素的具体数量。 |
返回值说明
掩码寄存器。若value大于或等于VL_T,则所有元素位置设置为1;若value小于VL_T,则从第0位开始到第value-1位结束的对应元素位置设置为1。
流水类型
PIPE_V
约束说明
无
调用示例
uint32_t value = 127; vector_bool mask = asc_create_mask_b32(PAT_ALL); // 一共127个元素需要进行计算,即需要2个VL for (int32_t i = 0; i < 2; i++) { mask = asc_update_mask_b32(value); // 使用mask进行一个VL的计算 }【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考