Mask规则说明
如需要控制哪些元素参与计算,可通过配置Mask寄存器实现。每次迭代内可处理的元素个数的最大值取决于操作数的数据类型,最大值为:256 / sizeof(数据类型)。
Mask寄存器共128个控制位,bit位的值为1表示参与计算,0表示不参与。当操作数的数据类型为16位时(如half/uint16_t),全部128个控制位生效;当操作数为32位时(如float/int32_t),低64位生效。
void set_vector_mask(uint64_t mask1, uint64_t mask0);
参数名 |
说明 |
---|---|
mask1 |
Mask寄存器高64位 |
mask0 |
Mask寄存器低64位 |
- 当操作数为16位时,mask0、mask1∈[0, 2^64-1],且mask0和mask1不可同时为0。
- 当操作数为32位时,mask1为0,mask0∈(0, 2^64-1]。
示例:
// 数据类型为int16_t // mask0的二进制值:(高)0101010101010101010101010101010101010101010101010101010101010101 // mask1同mask0,即间隔参与运算 uint64_t mask0 = 6148914691236517205; uint64_t mask1 = 6148914691236517205; set_vector_mask(mask1, mask0); vadd(); // 输入数据(src0Local): [1 2 3 ... 64 ...127 128] // 输入数据(src1Local): [1 2 3 ... 64 ...127 128] // 输出数据(dstLocal): [2 undefined 6 ... undefined ...254 undefined]
父主题: 通用参数说明