CANN/Ascend C:GlobalTensor L2缓存设置

📅 2026/7/16 14:41:03
CANN/Ascend C:GlobalTensor L2缓存设置
SetL2CacheHint【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品AI Core不支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持功能说明设置GlobalTensor是否启用L2 Cache默认启用L2 Cache。函数原型templateCacheRwMode rwMode CacheRwMode::RW __aicore__ inline void SetL2CacheHint(CacheMode mode);参数说明表1模板参数说明参数名描述rwMode设置L2 Cache读写模式。enum CacheRwMode { READ 1, WRITE 2, RW 3 };预留参数。为后续的功能做保留开发者暂时无需关注使用默认值即可。表2参数说明参数名输入/输出描述mode输入用户指定的L2 Cache模式。enum class CacheMode : uint8_t { CACHE_MODE_DISABLE 0, // 不启用L2 Cache CACHE_MODE_NORMAL 1, // 启用L2 Cache CACHE_MODE_PERSISTENT 4, // 启用L2 Cache驻留模式 };当特定GlobalTensor启用L2 Cache后实测性能反而下降时可考虑手动禁用该GlobalTensor的L2 Cache功能。例如若某算子仅对特定GlobalTensor执行单次读取操作将其数据缓存至L2 Cache不仅无法带来性能收益反而可能因数据频繁搬运至L2 Cache而引入额外的开销此时建议关闭该GlobalTensor的L2 Cache。通常情况下L2 Cache可采用CACHE_MODE_NORMAL模式运行。在此模式下当L2 Cache容量耗尽时会触发数据置换机制已存入L2 Cache中的数据可能被替换。若需确保特定GlobalTensor的数据始终保留在L2 Cache中可采用驻留模式。目前该驻留模式功能尚在开发中暂不支持计划于Ascend 950PR/Ascend 950DT产品上提供支持。如果不调用该接口默认为CacheMode::CACHE_MODE_NORMAL即GlobalTensor会启用L2 Cache。返回值说明无。约束说明无调用示例uint64_t dataSize 256; //设置input_global的大小为256 AscendC::GlobalTensorint32_t inputGlobal; // 类型为int32_t inputGlobal.SetGlobalBuffer(reinterpret_cast__gm__ int32_t *(src_gm), dataSize); // 设置源操作数在Global Memory上的起始地址为src_gm所占外部存储的大小为256个int32_t inputGlobal.SetL2CacheHint(AscendC::CacheMode::CACHE_MODE_DISABLE); // 设置GlobalTensor不会写入L2 Cache AscendC::LocalTensorint32_t inputLocal inQueueX.AllocTensorint32_t(); AscendC::DataCopy(inputLocal, inputGlobal, dataSize); // 将Global Memory上的inputGlobal拷贝到Local Memory的inputLocal上【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考