掩码操作

掩码操作API用于开发者在矢量计算API外部手动配置Normal模式和Counter模式,并设置对应模式下的mask掩码。

什么是Normal模式和Counter模式

Normal模式为默认模式,支持开发者配置迭代次数,通用说明中介绍的配置方式为Normal模式。为了简化开发者操作,提供Counter模式,不需要开发者去感知迭代次数、处理非对齐尾块的操作,可直接传入计算数据量,实际迭代次数由Vector计算单元自动推断。

默认情况下,高维切分计算API内部使用的是Normal模式,tensor前n个数据连续计算API内部使用的是Counter模式。

什么场景需要手动设置Normal模式和Counter模式

既然,高维切分计算API/tensor前n个数据连续计算API内部已经使用了Normal模式/Counter模式,为什么还需要开发者手动配置呢?

如何手动设置Normal模式

Normal模式的设置和使用流程如下:

  1. 调用SetMaskNorm接口设置Normal模式。
  2. 调用SetVectorMask接口设置mask掩码。Normal模式下,mask参数用来控制单次迭代内参与计算的元素个数。
  3. 调用tensor高维切分计算API。
    • isSetMask模板参数需要设置为false,表示在矢量计算接口外部设置mask;接口入参中的mask值设置为MASK_PLACEHOLDER,用于占位,无实际含义。
    • Normal模式下,根据使用场景正确配置repeatTimes、dataBlockStride、repeatStride参数。
  4. 使用ResetMask恢复mask的值为默认值。

如何手动设置Counter模式

  1. 调用SetMaskCount接口设置Counter模式。
  2. 调用SetVectorMask接口设置mask掩码。Counter模式下,mask参数表示整个矢量计算参与计算的元素个数。
  3. 调用矢量计算API
    • 针对tensor高维切分计算API。
      • isSetMask模板参数需要设置为false,表示在矢量计算接口外部设置mask;接口入参中的mask值设置为MASK_PLACEHOLDER,用于占位,无实际含义。
      • 根据使用场景正确配置dataBlockStride、repeatStride参数。repeatTimes传入固定值即可,建议统一设置为1,该值不生效。
    • 针对tensor前n个数据计算API(当前仅部分API支持isSetMask模板参数)。isSetMask模板参数需要设置为false,表示在矢量计算接口外部设置mask;接口入参中的calCount不生效,建议设置成1。
  4. 设置为Counter模式的场景需要在矢量计算使用完之后调用SetMaskNorm将mask模式恢复为Normal模式。
  5. 使用ResetMask恢复mask的值为默认值。