asc.language.basic.data_cache_clean_and_invalid

asc.language.basic.data_cache_clean_and_invalid(entire_type: CacheLine, dcci_dst: DcciDst, dst: GlobalTensor) → None

asc.language.basic.data_cache_clean_and_invalid(entire_type: CacheLine, dst: GlobalTensor) → None

用来刷新Cache,保证Cache与Global Memory之间的数据一致性。

对应的Ascend C函数原型

template <typename T, CacheLine entireType, DcciDst dcciDst>
__aicore__ inline void DataCacheCleanAndInvalid(const GlobalTensor<T>& dst)
template <typename T, CacheLine entireType, DcciDst dcciDst>
__aicore__ inline void DataCacheCleanAndInvalid(const LocalTensor<T>& dst)
template <typename T, CacheLine entireType>
__aicore__ inline void DataCacheCleanAndInvalid(const GlobalTensor<T>& dst)

参数说明

  • entire_type:指令操作模式,类型为CacheLine枚举值:
    • SINGLE_CACHE_LINE:只刷新传入地址所在的Cache Line(若非64B对齐,仅操作对齐范围内部分)。
    • ENTIRE_DATA_CACHE:刷新整个Data Cache(耗时较大,性能敏感场景慎用)。
  • dcci_dst:指定Data Cache与哪种存储保持一致性,类型为DcciDst枚举类:
    • CACHELINE_ALL:与CACHELINE_OUT效果一致。
    • CACHELINE_UB:预留参数,暂未支持。
    • CACHELINE_OUT:保证Data Cache与Global Memory一致。
    • CACHELINE_ATOMIC:部分Atlas产品上为预留参数,暂未支持。
  • dst: 需要刷新Cache的Tensor。

调用示例

  • 支持通过配置dcciDst确保Data Cache与GM存储的一致性
    asc.data_cache_clean_and_invalid(entire_type=asc.CacheLine.SINGLE_CACHE_LINE,
                                    dcci_dst=asc.DcciDst.CACHELINE_OUT, dst=dst)
    
  • 不支持配置dcciDst,仅支持保证Data Cache与GM的一致性
    asc.data_cache_clean_and_invalid(entire_type=asc.CacheLine.SINGLE_CACHE_LINE, dst=dst)