CANN/asc-devkit的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 推理产品xAtlas 推理系列产品 AI CorexAtlas 推理系列产品 Vector CorexAtlas 训练系列产品x功能说明设置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 };如果用户在写算子时相比不使能L2 Cache某GlobalTensor使能L2 Cache反而会导致实测性能下降可以手动禁止该GlobalTensor使能L2 Cache。比如某算子仅会读一次某个GlobalTensor数据数据进L2 Cache并不会对算子产生收益反而会因为数据频繁的搬入L2 Cache造成性能损耗可以考虑不使能该GlobalTensor L2 Cache能力。如果不调用该接口默认为CacheMode::CACHE_MODE_NORMAL即GlobalTensor会使能L2 Cache。返回值说明无。约束说明使用mssanitizer工具时默认使能L2 Cache无法通过本接口设置L2 Cache模式为CACHE_MODE_DISABLE。调用示例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),仅供参考