11-06 CMO 缓存操作

本章节描述 CMO(Cache Maintenance Operations)缓存操作接口,用于缓存刷新与失效操作。

aclrtCmoAsync

aclError aclrtCmoAsync(void *src, size_t size, aclrtCmoType cmoType, aclrtStream stream)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

实现Device上的Cache内存操作。异步接口。

参数说明

参数名 输入/输出 说明
src 输入 待操作的Device内存地址。
只支持本Device上的Cache内存操作。
size 输入 待操作的Device内存大小,单位Byte。
cmoType 输入 Cache内存操作类型。类型定义请参见aclrtCmoType
当前仅支持ACL_RT_CMO_TYPE_PREFETCH(内存预取)。
stream 输入 执行内存操作任务的Stream。类型定义请参见aclrtStream

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError




aclrtCmoAsyncWithBarrier

aclError 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 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

实现Device上的Cache内存操作,同时携带barrierId,barrierId表示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




aclrtCmoWaitBarrier

aclError aclrtCmoWaitBarrier(aclrtBarrierTaskInfo *taskInfo, aclrtStream stream, uint32_t flag)

产品支持情况

  • Ascend 950PR/Ascend 950DT:不支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:不支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:不支持
  • Atlas 200I/500 A2 推理产品:支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

等待具有指定barrierId的Invalid内存操作任务执行完成。异步接口。

参数说明

参数名 输入/输出 说明
taskInfo 输入 Cache内存操作的任务信息。类型定义请参见aclrtBarrierTaskInfo
任务信息中的cmoType当前仅支持ACL_RT_CMO_TYPE_INVALID。
stream 输入 执行等待任务的Stream。类型定义请参见aclrtStream
此处只支持与模型绑定过的Stream,绑定模型与Stream需调用aclmdlRIBindStream接口。
flag 输入 预留参数。当前固定配置为0。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError




aclrtCmoGetDescSize

aclError aclrtCmoGetDescSize(size_t *size)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

获取当前Device上的Cache内存描述符占用的内存大小。

参数说明

参数名 输入/输出 说明
size 输出 Cache内存描述符大小,单位Byte。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError




aclrtCmoSetDesc

aclError aclrtCmoSetDesc(void *cmoDesc, void *src, size_t size)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

设置Cache内存描述符,此接口调用完成后,会将源内存地址、内存大小记录到Cache内存描述符中。

参数说明

参数名 输入/输出 说明
cmoDesc 输入 Cache内存描述符地址指针。
需先调用aclrtCmoGetDescSize接口获取Cache内存描述符所需的内存大小,再申请Device内存后(例如aclrtMalloc接口),将Device内存地址作为入参传入此处。
src 输入 待操作的Device内存地址。
只支持本Device上的Cache内存操作。
size 输入 待操作的Device内存大小,单位Byte。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError




aclrtCmoAsyncWithDesc

aclError aclrtCmoAsyncWithDesc(void *cmoDesc, aclrtCmoType cmoType, aclrtStream stream, const void *reserve)

产品支持情况

  • Ascend 950PR/Ascend 950DT:支持
  • Atlas A3 训练系列产品/Atlas A3 推理系列产品:支持
  • Atlas A2 训练系列产品/Atlas A2 推理系列产品:支持
  • Atlas 200I/500 A2 推理产品:不支持
  • Atlas 推理系列产品:不支持
  • Atlas 训练系列产品:不支持
  • IPV350:不支持

功能说明

使用内存描述符(二级指针方式)操作Device上的Cache内存。异步接口。

参数说明

参数名 输入/输出 说明
cmoDesc 输入 Cache内存描述符地址指针,Device侧内存地址。
此处需先调用aclrtCmoSetDesc接口设置内存描述符,再将内存描述符地址指针作为入参传入本接口。
cmoType 输入 Cache内存操作类型。类型定义请参见aclrtCmoType
当前仅支持ACL_RT_CMO_TYPE_PREFETCH(内存预取)。
stream 输入 执行内存操作任务的Stream。类型定义请参见aclrtStream
reserve 输入 预留参数。当前固定传NULL。

返回值说明

返回0表示成功,返回其他值表示失败,请参见aclError