CheckLocalMemoryIA(ISASI)【免费下载链接】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 训练系列产品不支持功能说明头文件路径为basic_api/kernel_operator_common_intf.h。 check设定范围内的UB读写行为如果有设定范围的读写行为则会出现EXCEPTION报错无设定范围的读写行为则不会报错。函数原型__aicore__ inline void CheckLocalMemoryIA(const CheckLocalMemoryIAParam checkParams)参数说明表1参数说明参数名称输入/输出描述checkParams输入用于配置对UB访问的检查行为类型为CheckLocalMemoryIAParam。具体定义请参考${INSTALL_DIR}/include/ascendc/basic_api/interface/kernel_struct_mm.h${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。参数说明请参考表2。表2CheckLocalMemoryIAParam结构体内参数说明参数名称含义enableBit配置的异常寄存器取值范围enableBit∈[0,3]默认为0。• 0异常寄存器0。• 1异常寄存器1。• 2异常寄存器2。• 3异常寄存器3。startAddrCheck的起始地址32B对齐取值范围startAddr∈[0, 65535]默认值为0。比如可通过LocalTensor.GetPhyAddr()/32来获取startAddr。endAddrCheck的结束地址32B对齐取值范围endAddr∈[0, 65535]。默认值为0。isScalarReadCheck标量读访问。•false不开启默认为false。•true开启。isScalarWriteCheck标量写访问。•false不开启默认为false。•true开启。isVectorReadCheck矢量读访问。•false不开启默认为false。•true开启。isVectorWriteCheck矢量写访问。•false不开启默认为false。•true开启。isMteReadCheck MTE读访问。•false不开启默认为false。•true开启。isMteWriteCheck MTE写访问。•false不开启默认为false。•true开启。isEnable是否使能enableBit参数配置的异常寄存器。•false不使能默认为false。•true使能。reserved预留参数。为后续的功能做保留开发者暂时无需关注使用默认值即可。约束说明startAddr/endAddr的单位是32Bcheck的范围不包含startAddr包含endAddr即(startAddr,endAddr]。每次调用完该接口需要进行复位配置isEnable为false进行复位。操作数地址对齐要求请参见通用地址对齐约束。调用示例该示例check矢量写访问是否在设定的(startAddr, endAddr]范围内。当前示例check到矢量写在设定的范围内结果会报错ACL_ERROR_RT_VECTOR_CORE_EXCEPTION。AscendC::TPipe pipe; AscendC::TQueAscendC::TPosition::VECIN, 1 inQueueSrc0, inQueueSrc1; AscendC::TQueAscendC::TPosition::VECOUT, 1 outQueueDst; pipe.InitBuffer(inQueueSrc0, 1, 512 * sizeof(half)); pipe.InitBuffer(inQueueSrc1, 1, 512 * sizeof(half)); pipe.InitBuffer(outQueueDst, 1, 512 * sizeof(half)); AscendC::LocalTensorhalf src0Local inQueueSrc0.DeQuehalf(); AscendC::LocalTensorhalf src1Local inQueueSrc1.DeQuehalf(); AscendC::LocalTensorhalf dstLocal outQueueDst.AllocTensorhalf(); AscendC::CheckLocalMemoryIA({ 0, (uint32_t)(dstLocal.GetPhyAddr() / 32),(uint32_t)((dstLocal.GetPhyAddr() 512 * sizeof(half)) / 32), false, false, false, true, false, false, true });【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考