11-06 CMO 缓存操作【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime本章节描述 CMOCache Maintenance Operations缓存操作接口用于缓存刷新与失效操作。aclError aclrtMemFlush(void *devPtr, size_t size)将Cache中的数据刷新到DDR中并将Cache中的内容设置成无效。aclError aclrtMemInvalidate(void *devPtr, size_t size)将Cache中的数据设置成无效。aclError aclrtCmoAsync(void *src, size_t size, aclrtCmoType cmoType, aclrtStream stream)实现Device上的Cache内存操作。异步接口。aclError aclrtCmoAsyncWithBarrier(void *src, size_t size, aclrtCmoType cmoType, uint32_t barrierId, aclrtStream stream)实现Device上的Cache内存操作同时携带barrierIdbarrierId表示Cache内存操作的屏障标识。异步接口。aclError aclrtCmoWaitBarrier(aclrtBarrierTaskInfo *taskInfo, aclrtStream stream, uint32_t flag)等待具有指定barrierId的Invalid内存操作任务执行完成。异步接口。aclError aclrtCmoGetDescSize(size_t *size)获取当前Device上的Cache内存描述符占用的内存大小。aclError aclrtCmoSetDesc(void *cmoDesc, void *src, size_t size)设置Cache内存描述符此接口调用完成后会将源内存地址、内存大小记录到Cache内存描述符中。aclError aclrtCmoAsyncWithDesc(void *cmoDesc, aclrtCmoType cmoType, aclrtStream stream, const void *reserve)使用内存描述符二级指针方式操作Device上的Cache内存。异步接口。aclrtMemFlushaclError aclrtMemFlush(void *devPtr, size_t size)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明将Cache中的数据刷新到DDR中并将Cache中的内容设置成无效。该版本不需要用户处理CPU与NPU之间的Cache一致性无需调用该接口。参数说明参数名输入/输出说明devPtr输入要Flush的DDR内存起始地址指针。size输入要Flush的DDR内存大小单位Byte。size不能为0。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtMemInvalidateaclError aclrtMemInvalidate(void *devPtr, size_t size)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明将Cache中的数据设置成无效。该版本不需要用户处理CPU与NPU之间的Cache一致性无需调用该接口。参数说明参数名输入/输出说明devPtr输入需要将其中Cache数据置为无效的DDR内存起始地址指针。size输入DDR内存大小单位Byte。size不能为0。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtCmoAsyncaclError aclrtCmoAsync(void *src, size_t size, aclrtCmoType cmoType, aclrtStream stream)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明实现Device上的Cache内存操作。异步接口。参数说明参数名输入/输出说明src输入待操作的Device内存地址。只支持本Device上的Cache内存操作。size输入待操作的Device内存大小单位Byte。cmoType输入Cache内存操作类型。类型定义请参见aclrtCmoType。当前仅支持ACL_RT_CMO_TYPE_PREFETCH内存预取。stream输入执行内存操作任务的Stream。类型定义请参见aclrtStream。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtCmoAsyncWithBarrieraclError aclrtCmoAsyncWithBarrier(void *src, size_t size, aclrtCmoType cmoType, uint32_t barrierId, aclrtStream stream)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明实现Device上的Cache内存操作同时携带barrierIdbarrierId表示Cache内存操作的屏障标识。异步接口。参数说明参数名输入/输出说明src输入待操作的Device内存地址。只支持本Device上的Cache内存操作。size输入待操作的Device内存大小单位Byte。cmoType输入Cache内存操作类型。类型定义请参见aclrtCmoType。barrierId输入屏障标识。当cmoType为ACL_RT_CMO_TYPE_INVALID时barrierId有效支持传入大于0的数字配合aclrtCmoWaitBarrier接口使用等待具有指定barrierId的Invalid内存操作任务执行完成。当cmoType为其它值时barrierId固定传0。stream输入执行内存操作任务的Stream。类型定义请参见aclrtStream。此处只支持与模型绑定过的Stream绑定模型与Stream需调用aclmdlRIBindStream接口。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtCmoWaitBarrieraclError aclrtCmoWaitBarrier(aclrtBarrierTaskInfo *taskInfo, aclrtStream stream, uint32_t flag)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT☓Atlas A3 训练系列产品/Atlas A3 推理系列产品☓Atlas A2 训练系列产品/Atlas A2 推理系列产品☓功能说明等待具有指定barrierId的Invalid内存操作任务执行完成。异步接口。参数说明参数名输入/输出说明taskInfo输入Cache内存操作的任务信息。类型定义请参见aclrtBarrierTaskInfo。任务信息中的cmoType当前仅支持ACL_RT_CMO_TYPE_INVALID。stream输入执行等待任务的Stream。类型定义请参见aclrtStream。此处只支持与模型绑定过的Stream绑定模型与Stream需调用aclmdlRIBindStream接口。flag输入预留参数。当前固定配置为0。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtCmoGetDescSizeaclError aclrtCmoGetDescSize(size_t *size)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明获取当前Device上的Cache内存描述符占用的内存大小。参数说明参数名输入/输出说明size输出Cache内存描述符大小单位Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtCmoSetDescaclError aclrtCmoSetDesc(void *cmoDesc, void *src, size_t size)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明设置Cache内存描述符此接口调用完成后会将源内存地址、内存大小记录到Cache内存描述符中。参数说明参数名输入/输出说明cmoDesc输入Cache内存描述符地址指针。需先调用aclrtCmoGetDescSize接口获取Cache内存描述符所需的内存大小再申请Device内存后例如aclrtMalloc接口将Device内存地址作为入参传入此处。src输入待操作的Device内存地址。只支持本Device上的Cache内存操作。size输入待操作的Device内存大小单位Byte。返回值说明返回0表示成功返回其他值表示失败请参见aclError。aclrtCmoAsyncWithDescaclError aclrtCmoAsyncWithDesc(void *cmoDesc, aclrtCmoType cmoType, aclrtStream stream, const void *reserve)产品支持情况产品是否支持Ascend 950PR/Ascend 950DT√Atlas A3 训练系列产品/Atlas A3 推理系列产品√Atlas A2 训练系列产品/Atlas A2 推理系列产品√功能说明使用内存描述符二级指针方式操作Device上的Cache内存。异步接口。参数说明参数名输入/输出说明cmoDesc输入Cache内存描述符地址指针Device侧内存地址。此处需先调用aclrtCmoSetDesc接口设置内存描述符再将内存描述符地址指针作为入参传入本接口。cmoType输入Cache内存操作类型。类型定义请参见aclrtCmoType。当前仅支持ACL_RT_CMO_TYPE_PREFETCH内存预取。stream输入执行内存操作任务的Stream。类型定义请参见aclrtStream。reserve输入预留参数。当前固定传NULL。返回值说明返回0表示成功返回其他值表示失败请参见aclError。【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考