---
title: 函数：memcpy_async_with_desc
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclpythondevg_01_1062.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_1062.html
indexId: 9f4e022b6eb199745d969358110134181ab221df071ce2af2ac59189e7d2443371
---
# 函数：memcpy_async_with_desc

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 训练系列产品 | x |
| Atlas 推理系列产品 | x |
| Atlas 200I/500 A2 推理产品 | √ |


#### 功能说明

使用内存复制描述符（二级指针方式）进行内存复制。

本接口是异步接口，调用接口成功仅表示任务下发成功，不表示任务执行成功。调用该接口后，需调用同步等待接口（例如，acl.rt.synchronize_stream）确保任务已执行完成，否则可能会导致训练或推理等业务异常、Device断链掉卡等未知情况。

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

- 调用  acl.rt.get_memcpy_desc_size
接口获取内存描述符所需的内存大小。
- 申请Device内存，用于存放内存描述符。
- 申请源内存、目的内存，分别用于存放复制前后的数据。
- 调用  acl.rt.set_memcpy_desc
接口将源内存地址、目的内存地址等信息设置到内存描述符中。
- 调用  acl.rt.memcpy_async_with_desc
接口实现内存复制。


#### 函数原型

- C函数原型
  1 aclError aclrtMemcpyAsyncWithDesc(void *desc, aclrtMemcpyKind kind, aclrtStream stream)

- python函数
  1 ret= acl.rt.memcpy_async_with_desc(desc, kind, stream)


#### 参数说明

| 参数名 | 说明 |
| --- | --- |
| desc | int，内存复制描述符地址指针，Device侧内存地址。此处需先调用acl.rt.set\_memcpy\_desc接口设置内存复制描述符，再将内存复制描述符地址指针作为入参传入本接口。 |
| kind | int，内存复制的类型。当前仅支持ACL\_MEMCPY\_INNER\_DEVICE\_TO\_DEVICE，表示Device内的内存复制。 |
| stream | int，指定stream。 |


#### 返回值说明

| 返回值 | 说明 |
| --- | --- |
| ret | int，错误码，返回0表示成功，返回其它值表示失败。 |
