掩码操作
掩码操作API用于开发者在矢量计算API外部手动配置Normal模式和Counter模式,并设置对应模式下的mask掩码。
什么是Normal模式和Counter模式
Normal模式为默认模式,支持开发者配置迭代次数,通用说明中介绍的配置方式为Normal模式。为了简化开发者操作,提供Counter模式,不需要开发者去感知迭代次数、处理非对齐尾块的操作,可直接传入计算数据量,实际迭代次数由Vector计算单元自动推断。
- Counter模式使用更方便,不需要计算尾块,但是不具备单次迭代内的mask能力这种高级功能;
- Normal模式具备单次迭代内的mask能力,但使用不如Counter模式方便,需要开发者感知迭代次数、额外进行尾块的计算。
默认情况下,高维切分计算API内部使用的是Normal模式,tensor前n个数据连续计算API内部使用的是Counter模式。
什么场景需要手动设置Normal模式和Counter模式
既然,高维切分计算API/tensor前n个数据连续计算API内部已经使用了Normal模式/Counter模式,为什么还需要开发者手动配置呢?
如何设置Normal模式和Counter模式
- 调用SetMaskNorm/SetMaskCount接口设置Normal模式或者Counter模式。
- 调用SetVectorMask接口设置mask掩码。
- Normal模式下,mask参数用来控制单次迭代内参与计算的元素个数。
- Counter模式下,mask参数表示整个矢量计算参与计算的元素个数。
- 调用矢量计算高维切分计算API。
- isSetMask模板参数需要设置为false,表示在矢量计算接口外部设置mask;接口入参中的mask值设置为MASK_PLACEHOLDER,用于占位,无实际含义。
- Normal模式下,根据使用场景正确配置repeatTimes、dataBlockStride、repeatStride参数。
- Counter模式下,根据使用场景正确配置dataBlockStride、repeatStride参数。repeatTimes传入固定值即可,建议统一设置为1,该值不生效。
- 设置为Counter模式的场景需要在矢量计算使用完之后调用SetMaskNorm将mask模式恢复为Normal模式。
- 使用ResetMask恢复mask的值为默认值。
父主题: 矢量计算