news 2026/5/9 12:02:30

CANN/runtime内存拷贝设置API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/runtime内存拷贝设置API

11-03 内存拷贝与设置

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

本章节描述 Host-Device 间及 Device-Device 间的内存拷贝与内存设置接口。

  • aclError aclrtMemcpy(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind):实现内存复制。
  • aclError aclrtMemcpyAsync(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream):实现内存复制。
  • aclError aclrtMemcpyAsyncWithCondition(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream):实现内存复制。
  • aclError aclrtMemcpyBatch(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs, size_t *failIndex):实现批量内存复制。
  • aclError aclrtMemcpyBatchAsync(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs, size_t *failIndex, aclrtStream stream):实现批量内存复制。
  • aclError aclrtMemcpyBatchV2(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs):实现批量内存复制。
  • aclError aclrtMemcpyBatchAsyncV2(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs, aclrtStream stream):实现批量内存复制。
  • aclError aclrtMemcpy2d(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, aclrtMemcpyKind kind):实现同步内存复制,主要用于矩阵数据的复制。
  • aclError aclrtMemcpy2dAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, aclrtMemcpyKind kind, aclrtStream stream):实现异步内存复制,主要用于矩阵数据的复制。异步接口。
  • aclError aclrtGetMemcpyDescSize(aclrtMemcpyKind kind, size_t *descSize):获取当前Device的内存复制描述符占用的内存大小。
  • aclError aclrtSetMemcpyDesc(void *desc, aclrtMemcpyKind kind, void *srcAddr, void *dstAddr, size_t count, void *config):设置内存复制描述符,此接口调用完成后,会将源地址,目的地址、内存复制长度记录到内存复制描述符中。
  • aclError aclrtMemcpyAsyncWithDesc(void *desc, aclrtMemcpyKind kind, aclrtStream stream):使用内存复制描述符(二级指针方式)进行内存复制。异步接口。
  • aclError aclrtMemcpyAsyncWithOffset(void **dst, size_t destMax, size_t dstDataOffset, const void **src, size_t count, size_t srcDataOffset, aclrtMemcpyKind kind, aclrtStream stream):实现内存复制,适用于基地址是二级指针、有地址偏移的场景。异步接口。
  • aclError aclrtMemset(void *devPtr, size_t maxCount, int32_t value, size_t count):初始化内存,将内存中的内容设置为指定的值。
  • aclError aclrtMemsetAsync(void *devPtr, size_t maxCount, int32_t value, size_t count, aclrtStream stream):初始化内存,将内存中的内容设置为指定的值。异步接口。

aclrtMemcpy

aclError aclrtMemcpy(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现内存复制。

参数说明

参数名输入/输出说明
dst输入目的内存地址指针。
destMax输入目的内存地址的最大内存长度,单位Byte。
src输入源内存地址指针。
count输入内存复制的长度,单位Byte。
kind输入内存复制的类型,预留参数,配置枚举值中的值无效,系统内部会根据源内存地址指针、目的内存地址指针判断是否可以将源地址的数据复制到目的地址,如果不可以,则系统会返回报错。
类型定义请参见aclrtMemcpyKind。

返回值说明

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

约束说明

  • 本接口会立刻进行内存复制,函数内部不会进行隐式的device同步或流同步。

  • 如果执行两个Device间的内存复制,需先调用aclrtDeviceCanAccessPeer接口查询两个Device间是否支持数据交互、调用aclrtDeviceEnablePeerAccess接口开启两个Device间的数据交互功能,再调用本接口进行内存复制。

    该约束适用以下型号:

    Ascend 950PR/Ascend 950DT

    Atlas A2 训练系列产品/Atlas A2 推理系列产品




aclrtMemcpyAsync

aclError aclrtMemcpyAsync(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现内存复制。

本接口中的Host内存支持锁页内存(例如通过aclrtMallocHost接口申请的内存)、非锁页内存(通过malloc接口申请的内存)。当Host内存是锁页内存时,本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,调用本接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保内存复制的任务已执行完成;当Host内存是非锁页内存时,本接口在内存复制任务完成后才返回。

参数说明

参数名输入/输出说明
dst输入目的内存地址指针。
destMax输入目的内存地址的最大内存长度,单位Byte。
src输入源内存地址指针。
count输入内存复制的长度,单位Byte。
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。
stream输入指定执行内存复制任务的Stream。类型定义请参见aclrtStream。

返回值说明

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

约束说明

  • Ascend EP形态下,本接口不支持异步Host内的内存复制功能,若传入的kind为ACL_MEMCPY_HOST_TO_HOST时,接口返回报错ACL_ERROR_RT_FEATURE_NOT_SUPPORT 。



aclrtMemcpyAsyncWithCondition

aclError aclrtMemcpyAsyncWithCondition(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind, aclrtStream stream)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现内存复制。

本接口中的Host内存支持锁页内存(例如通过aclrtMallocHost接口申请的内存)、非锁页内存(通过malloc接口申请的内存)。当Host内存是非锁页内存时,本接口在内存复制任务完成后才返回;当Host内存是锁页内存时,本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,调用本接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保内存复制的任务已执行完成。

参数说明

参数名输入/输出说明
dst输入目的内存地址指针。
destMax输入目的内存地址的最大内存长度,单位Byte。
src输入源内存地址指针。
count输入内存复制的长度,单位Byte。
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。
stream输入指定执行内存复制任务的Stream。类型定义请参见aclrtStream。

返回值说明

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

约束说明

  • Ascend EP形态下,本接口不支持异步Host内的内存复制功能,若传入的kind为ACL_MEMCPY_HOST_TO_HOST时,接口返回报错ACL_ERROR_RT_FEATURE_NOT_SUPPORT 。



aclrtMemcpyBatch

aclError aclrtMemcpyBatch(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs, size_t *failIndex)

须知:本接口为试验特性,后续版本可能会存在变更,不支持应用于商用产品中。

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现批量内存复制。

本接口中的Host内存支持锁页内存(例如通过aclrtMallocHost接口申请的内存)、非锁页内存(通过malloc接口申请的内存)。

参数说明

参数名输入/输出说明
dsts输入目的内存地址数组。
destMaxs输入内存复制最大长度数组,用于存放每一段要复制的内存的最大长度,单位Byte。
srcs输入源内存地址数组。
sizes输入内存复制长度数组,用于存放每一段要复制的内存大小,单位Byte。
numBatches输入dsts、srcs和sizes数组的长度。
attrs输入内存复制属性数组。类型定义请参见aclrtMemcpyBatchAttr。
attrsIndexes输入内存复制属性索引数组,用于指定attrs数组中每个条目适用的复制范围。attrs[k]中指定的属性将应用于从attrsIndexes[k]到attrsIndexes[k+1] - 1的复制操作,同时attrs[numAttrs-1]将应用于从attrsIndexes[numAttrs-1]到numBatches - 1的复制操作。
numAttrs输入attrs和attrsIndexes数组的长度。
failIndex输出用于发生错误时指示出错的复制项下标(仅支持对内存属性和复制方向的校验)。若错误不涉及特定复制操作,该值将为SIZE_MAX。

返回值说明

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

约束说明

  • 批次内的内存拷贝是无序的,不会按照数组中元素的顺序拷贝。
  • 将srcs中指定的数据复制到dsts中指定的内存区域,每个复制操作的大小由sizes指定,dsts、srcs、sizes这三个数组必须具有numBatches指定的相同长度。
  • 批处理中的每个复制操作必须与attrs数组中指定的属性集相关联,attrs数组中的每个条目可应用于多个复制操作,具体通过attrsIndexes数组指定对应属性条目生效的起始复制索引。attrs和attrsIndexes这两个数组必须具有numAttrs指定的相同长度。例如:若批处理包含dsts/srcs/sizes列出的10个复制操作,其中前6个使用一组属性,后4个使用另一组属性,则numAttrs为2,attrsIndexes为{0,6},attrs包含两组属性。注意,attrsIndexes的首个条目必须为0,且每个条目必须大于前一个条目,最后一个条目应小于numBatches。此外numAttrs必须小于等于numBatches。
  • 批量内存复制的方向仅支持“从Host到Device”或者“从Device到Host”中的一种。



aclrtMemcpyBatchAsync

aclError aclrtMemcpyBatchAsync(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs, size_t *failIndex, aclrtStream stream)

须知:本接口为试验特性,后续版本可能会存在变更,不支持应用于商用产品中。

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现批量内存复制。

本接口中的Host内存支持锁页内存(例如通过aclrtMallocHost接口申请的内存)、非锁页内存(通过malloc接口申请的内存)。当Host内存是非锁页内存时,本接口在内存复制任务完成后才返回;当Host内存是锁页内存时,本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,调用本接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保内存复制的任务已执行完成。

参数说明

参数名输入/输出说明
dsts输入目的内存地址数组。
destMaxs输入内存复制最大长度数组,用于存放每一段要复制的内存的最大长度,单位Byte。
srcs输入源内存地址数组。
sizes输入内存复制长度数组,用于存放每一段要复制的内存大小,单位Byte。
numBatches输入dsts、srcs和sizes数组的长度。
attrs输入内存复制属性数组。类型定义请参见aclrtMemcpyBatchAttr。
attrsIndexes输入内存复制属性索引数组,用于指定attrs数组中每个条目适用的复制范围。attrs[k]中指定的属性将应用于从attrsIndexes[k]到attrsIndexes[k+1] - 1的复制操作,同时attrs[numAttrs-1]将应用于从attrsIndexes[numAttrs-1]到numBatches - 1的复制操作。
numAttrs输入attrs和attrsIndexes数组的长度。
failIndex输出用于发生错误时指示出错的复制项下标(仅支持对内存属性和复制方向的校验)。若错误不涉及特定复制操作,该值将为SIZE_MAX。
stream输入指定执行内存复制任务的Stream。类型定义请参见aclrtStream。

返回值说明

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

约束说明

  • 批次内的内存拷贝是无序的,不会按照数组中元素的顺序拷贝。
  • 将srcs中指定的数据复制到dsts中指定的内存区域,每个复制操作的大小由sizes指定,dsts、srcs、sizes这三个数组必须具有numBatches指定的相同长度。
  • 批处理中的每个复制操作必须与attrs数组中指定的属性集相关联,attrs数组中的每个条目可应用于多个复制操作,具体通过attrsIndexes数组指定对应属性条目生效的起始复制索引。attrs和attrsIndexes这两个数组必须具有numAttrs指定的相同长度。例如:若批处理包含dsts/srcs/sizes列出的10个复制操作,其中前6个使用一组属性,后4个使用另一组属性,则numAttrs为2,attrsIndexes为{0,6},attrs包含两组属性。注意,attrsIndexes的首个条目必须为0,且每个条目必须大于前一个条目,最后一个条目应小于numBatches。此外numAttrs必须小于等于numBatches。
  • 批量内存复制的方向仅支持“从Host到Device”或者“从Device到Host”中的一种。



aclrtMemcpyBatchV2

aclError aclrtMemcpyBatchV2(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs)

须知:本接口为试验特性,后续版本可能会存在变更,不支持应用于商用产品中。

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现批量内存复制。

本接口中的Host内存支持锁页内存(例如通过aclrtMallocHost接口申请的内存)、非锁页内存(通过malloc接口申请的内存)。

与aclrtMemcpyBatch接口相比,本接口不再通过failIndex参数返回失败的复制项下标。

参数说明

参数名输入/输出说明
dsts输入目的内存地址数组。
destMaxs输入内存复制最大长度数组,用于存放每一段要复制的内存的最大长度,单位Byte。
srcs输入源内存地址数组。
sizes输入内存复制长度数组,用于存放每一段要复制的内存大小,单位Byte。
numBatches输入dsts、srcs和sizes数组的长度。
attrs输入内存复制属性数组。类型定义请参见aclrtMemcpyBatchAttr。
attrsIndexes输入内存复制属性索引数组,用于指定attrs数组中每个条目适用的复制范围。attrs[k]中指定的属性将应用于从attrsIndexes[k]到attrsIndexes[k+1] - 1的复制操作,同时attrs[numAttrs-1]将应用于从attrsIndexes[numAttrs-1]到numBatches - 1的复制操作。
numAttrs输入attrs和attrsIndexes数组的长度。

返回值说明

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

约束说明

  • 批次内的内存拷贝是无序的,不会按照数组中元素的顺序拷贝。
  • 将srcs中指定的数据复制到dsts中指定的内存区域,每个复制操作的大小由sizes指定,dsts、srcs、sizes这三个数组必须具有numBatches指定的相同长度。
  • 批处理中的每个复制操作必须与attrs数组中指定的属性集相关联,attrs数组中的每个条目可应用于多个复制操作,具体通过attrsIndexes数组指定对应属性条目生效的起始复制索引。attrs和attrsIndexes这两个数组必须具有numAttrs指定的相同长度。例如:若批处理包含dsts/srcs/sizes列出的10个复制操作,其中前6个使用一组属性,后4个使用另一组属性,则numAttrs为2,attrsIndexes为{0,6},attrs包含两组属性。注意,attrsIndexes的首个条目必须为0,且每个条目必须大于前一个条目,最后一个条目应小于numBatches。此外numAttrs必须小于等于numBatches。
  • 批量内存复制的方向仅支持“从Host到Device”或者“从Device到Host”中的一种。



aclrtMemcpyBatchAsyncV2

aclError aclrtMemcpyBatchAsyncV2(void **dsts, size_t *destMaxs, void **srcs, size_t *sizes, size_t numBatches, aclrtMemcpyBatchAttr *attrs, size_t *attrsIndexes, size_t numAttrs, aclrtStream stream)

须知:本接口为试验特性,后续版本可能会存在变更,不支持应用于商用产品中。

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现批量内存复制。

本接口中的Host内存支持锁页内存(例如通过aclrtMallocHost接口申请的内存)、非锁页内存(通过malloc接口申请的内存)。当Host内存是非锁页内存时,本接口在内存复制任务完成后才返回;当Host内存是锁页内存时,本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,调用本接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保内存复制的任务已执行完成。

与aclrtMemcpyBatchAsync接口相比,本接口不再通过failIndex参数返回失败的复制项下标。

参数说明

参数名输入/输出说明
dsts输入目的内存地址数组。
destMaxs输入内存复制最大长度数组,用于存放每一段要复制的内存的最大长度,单位Byte。
srcs输入源内存地址数组。
sizes输入内存复制长度数组,用于存放每一段要复制的内存大小,单位Byte。
numBatches输入dsts、srcs和sizes数组的长度。
attrs输入内存复制属性数组。类型定义请参见aclrtMemcpyBatchAttr。
attrsIndexes输入内存复制属性索引数组,用于指定attrs数组中每个条目适用的复制范围。attrs[k]中指定的属性将应用于从attrsIndexes[k]到attrsIndexes[k+1] - 1的复制操作,同时attrs[numAttrs-1]将应用于从attrsIndexes[numAttrs-1]到numBatches - 1的复制操作。
numAttrs输入attrs和attrsIndexes数组的长度。
stream输入指定执行内存复制任务的Stream。类型定义请参见aclrtStream。

返回值说明

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

约束说明

  • 批次内的内存拷贝是无序的,不会按照数组中元素的顺序拷贝。
  • 将srcs中指定的数据复制到dsts中指定的内存区域,每个复制操作的大小由sizes指定,dsts、srcs、sizes这三个数组必须具有numBatches指定的相同长度。
  • 批处理中的每个复制操作必须与attrs数组中指定的属性集相关联,attrs数组中的每个条目可应用于多个复制操作,具体通过attrsIndexes数组指定对应属性条目生效的起始复制索引。attrs和attrsIndexes这两个数组必须具有numAttrs指定的相同长度。例如:若批处理包含dsts/srcs/sizes列出的10个复制操作,其中前6个使用一组属性,后4个使用另一组属性,则numAttrs为2,attrsIndexes为{0,6},attrs包含两组属性。注意,attrsIndexes的首个条目必须为0,且每个条目必须大于前一个条目,最后一个条目应小于numBatches。此外numAttrs必须小于等于numBatches。
  • 批量内存复制的方向仅支持“从Host到Device”或者“从Device到Host”中的一种。



aclrtMemcpy2d

aclError aclrtMemcpy2d(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, aclrtMemcpyKind kind)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现同步内存复制,主要用于矩阵数据的复制。

参数说明

参数名输入/输出说明
dst输入目的内存地址指针。
dpitch输入目的内存中相邻两列向量的地址距离。
src输入源内存地址指针。
spitch输入源内存中相邻两列向量的地址距离。
width输入待复制的数据宽度。
height输入待复制的数据高度。
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。

返回值说明

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

约束说明

  • 当前仅支持ACL_MEMCPY_HOST_TO_DEVICE类型和ACL_MEMCPY_DEVICE_TO_HOST类型的内存复制。

参考资源

本接口的内存复制示意图:




aclrtMemcpy2dAsync

aclError aclrtMemcpy2dAsync(void *dst, size_t dpitch, const void *src, size_t spitch, size_t width, size_t height, aclrtMemcpyKind kind, aclrtStream stream)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现异步内存复制,主要用于矩阵数据的复制。异步接口。

本接口中的Host内存支持锁页内存(例如通过aclrtMallocHost接口申请的内存)、非锁页内存(通过malloc接口申请的内存)。当Host内存是非锁页内存时,本接口在内存复制任务完成后才返回;当Host内存是锁页内存时,本接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功,调用本接口后,需调用同步等待接口(例如,aclrtSynchronizeStream)确保内存复制的任务已执行完成。

参数说明

参数名输入/输出说明
dst输入目的内存地址指针。
dpitch输入目的内存中相邻两列向量的地址距离。
src输入源内存地址指针。
spitch输入源内存中相邻两列向量的地址距离。
width输入待复制的数据宽度。
width最大设置为5000000,且必须小于或等于dpitch和spitch。
height输入待复制的数据高度。
height最大设置为510241024=5242880,否则接口返回失败。
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。
stream输入指定执行内存复制任务的Stream。类型定义请参见aclrtStream。

返回值说明

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

约束说明

  • 本接口仅支持ACL_MEMCPY_HOST_TO_DEVICE、ACL_MEMCPY_DEVICE_TO_HOST或ACL_MEMCPY_DEVICE_TO_DEVICE内存复制类型,且不同型号支持的类型不同。对于不支持的内存复制类型,接口返回ACL_ERROR_INVALID_PARAM。
    • ACL_MEMCPY_HOST_TO_DEVICE、ACL_MEMCPY_DEVICE_TO_HOST类型,以下型号支持:

      Ascend 950PR/Ascend 950DT

      Atlas A3 训练系列产品/Atlas A3 推理系列产品

      Atlas A2 训练系列产品/Atlas A2 推理系列产品

    • ACL_MEMCPY_DEVICE_TO_DEVICE类型,以下型号支持:

      Ascend 950PR/Ascend 950DT

      Atlas A3 训练系列产品/Atlas A3 推理系列产品

      Atlas A2 训练系列产品/Atlas A2 推理系列产品

参考资源

本接口的内存复制示意图:




aclrtGetMemcpyDescSize

aclError aclrtGetMemcpyDescSize(aclrtMemcpyKind kind, size_t *descSize)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

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

本接口需与其它关键接口配合使用,以便实现内存复制,详细描述请参见aclrtMemcpyAsyncWithDesc。

参数说明

参数名输入/输出说明
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。
当前仅支持ACL_MEMCPY_INNER_DEVICE_TO_DEVICE,表示Device内的内存复制。
descSize输出内存大小,单位Byte。

返回值说明

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




aclrtSetMemcpyDesc

aclError aclrtSetMemcpyDesc(void *desc, aclrtMemcpyKind kind, void *srcAddr, void *dstAddr, size_t count, void *config)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

设置内存复制描述符,此接口调用完成后,会将源地址,目的地址、内存复制长度记录到内存复制描述符中。

本接口需与其它关键接口配合使用,以便实现内存复制,详细描述请参见aclrtMemcpyAsyncWithDesc。

参数说明

参数名输入/输出说明
desc输出内存复制描述符地址指针。
需先调用aclrtGetMemcpyDescSize接口获取内存描述符所需的内存大小,再申请Device内存后(例如aclrtMalloc接口),将Device内存地址作为入参传入此处。
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。
当前仅支持ACL_MEMCPY_INNER_DEVICE_TO_DEVICE,表示Device内的内存复制。
srcAddr输入源内存地址指针。
由用户申请内存并管理内存。
dstAddr输入目的内存地址指针。
由用户申请内存并管理内存。
count输入内存复制的长度,单位Byte。
config输入预留参数,当前固定传NULL。

返回值说明

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




aclrtMemcpyAsyncWithDesc

aclError aclrtMemcpyAsyncWithDesc(void *desc, aclrtMemcpyKind kind, aclrtStream stream)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

使用内存复制描述符(二级指针方式)进行内存复制。异步接口。

本接口需与以下其它关键接口配合使用,以便实现内存复制:

  1. 调用aclrtGetMemcpyDescSize接口获取内存描述符所需的内存大小。
  2. 申请Device内存,用于存放内存描述符。
  3. 申请源内存、目的内存,分别用于存放复制前后的数据。
  4. 调用aclrtSetMemcpyDesc接口将源内存地址、目的内存地址等信息设置到内存描述符中。
  5. 调用aclrtMemcpyAsyncWithDesc接口实现内存复制。

参数说明

参数名输入/输出说明
desc输入内存复制描述符地址指针,Device侧内存地址。
此处需先调用aclrtSetMemcpyDesc接口设置内存复制描述符,再将内存复制描述符地址指针作为入参传入本接口。
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。
当前仅支持ACL_MEMCPY_INNER_DEVICE_TO_DEVICE,表示Device内的内存复制。
stream输入指定执行内存复制任务的Stream。类型定义请参见aclrtStream。

返回值说明

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




aclrtMemcpyAsyncWithOffset

aclError aclrtMemcpyAsyncWithOffset(void **dst, size_t destMax, size_t dstDataOffset, const void **src, size_t count, size_t srcDataOffset, aclrtMemcpyKind kind, aclrtStream stream)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

实现内存复制,适用于基地址是二级指针、有地址偏移的场景。异步接口。

参数说明

参数名输入/输出说明
dst输入目的内存地址指针。
destMax输入目的内存地址的最大内存长度,单位Byte。
dstDataOffset输入目的内存地址偏移。
src输入源内存地址指针。
count输入内存复制的长度,单位Byte。
srcDataOffset输入源内存地址偏移。
kind输入内存复制的类型。类型定义请参见aclrtMemcpyKind。
当前kind只支持ACL_MEMCPY_INNER_DEVICE_TO_DEVICE(Device内的内存复制)。
stream输入指定执行内存复制任务的Stream。类型定义请参见aclrtStream。

返回值说明

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




aclrtMemset

aclError aclrtMemset(void *devPtr, size_t maxCount, int32_t value, size_t count)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

初始化内存,将内存中的内容设置为指定的值。

要初始化的内存支持在Host侧或Device侧,系统根据地址判定是Host还是Device。如果Host内存不是用acl接口(例如aclrtMallocHost)申请的,将会导致未定义的行为。

参数说明

参数名输入/输出说明
devPtr输入内存起始地址的指针。
maxCount输入内存的最大长度,单位Byte。
value输入设置的值。
count输入需要设置为指定值的内存长度,单位Byte。

返回值说明

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

约束说明

本接口会立刻进行内存初始化,函数内部不会进行隐式的device同步或流同步。




aclrtMemsetAsync

aclError aclrtMemsetAsync(void *devPtr, size_t maxCount, int32_t value, size_t count, aclrtStream stream)

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

初始化内存,将内存中的内容设置为指定的值。异步接口。

要初始化的内存支持在Host侧或Device侧,系统根据地址判定是Host还是Device。如果Host内存不是用acl接口(例如aclrtMallocHost)申请的,将会导致未定义的行为。

参数说明

参数名输入/输出说明
devPtr输入内存起始地址的指针。
maxCount输入内存的最大长度,单位Byte。
value输入设置的值。
count输入需要设置为指定值的内存长度,单位Byte。
stream输入指定执行内存初始化任务的Stream。类型定义请参见aclrtStream。

返回值说明

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

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 11:58:34

综采工作面刮板输送机直线度光纤光栅检测控制方法【附方案】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,可以私信,或者点击《获取方式》 (1)多芯光纤光栅阵列形态重构…

作者头像 李华
网站建设 2026/5/9 11:56:38

CANN/DeepSeek-R1 RL训练优化

DeepSeek-R1 RL训练优化实践样例 【免费下载链接】cann-recipes-train 本项目针对LLM与多模态模型训练业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-train 概述 本样例针对DeepSeek-R1模型&…

作者头像 李华
网站建设 2026/5/9 11:54:45

前端框架使用vue-cli( 第一层:依赖与环境层)

第一层:依赖与环境层 node_modulespackage.jsonpackage-lock.json 介绍: 这个文章主要是说明vue-cli的,对于nodejs的环境安装,以及npm的使用配置,就不多说了 我们将在有nodejs的环境 使用npm安装好对应的依赖 依赖安装…

作者头像 李华
网站建设 2026/5/9 11:51:32

8款主流网盘直链解析工具:彻底告别下载限速,实现高速下载自由

8款主流网盘直链解析工具:彻底告别下载限速,实现高速下载自由 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中…

作者头像 李华
网站建设 2026/5/9 11:48:31

Erin Claire Carson 博士(计算数学科学)

文章目录📊 学术生涯概览🧠 核心研究方向与代表性成果🏆 主要荣誉与奖项🔗 关键互联网链接Erin Claire Carson 博士是数值线性代数与高性能计算领域的杰出青年学者,目前担任布拉格查理大学数学与物理学院数值数学系副教…

作者头像 李华