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)