昇腾社区首页
中文
注册
开发者
下载

TransferSync

产品支持情况

产品

是否支持

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

Atlas 800I A2 推理产品 /A200I A2 Box 异构组件

Atlas A2 训练系列产品

x

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品

x

Atlas 训练系列产品

x

函数功能

与远端AdxlEngine进行内存传输。

函数原型

1
2
3
4
Status TransferSync(const AscendString &remote_engine,
                    TransferOp operation,
                    const std::vector<TransferOpDesc> &op_descs,
                    int32_t timeout_in_millis = 1000)

参数说明

参数名称

输入/输出

取值说明

remote_engine

输入

远端AdxlEngine的唯一标识。

operation

输入

将远端内存读到本地或者将本地内存写到远端。

op_descs

输入

批量操作的本地以及远端地址。

timeout_in_millis

输入

断链的超时时间,单位:ms,默认值:1000。

调用示例

请参考adxl_engine_sample

返回值

  • SUCCESS:成功
  • PARAM_INVALID:参数错误
  • NOT_CONNECTED:没有与对端创建链接
  • TIMEOUT:传输超时
  • 其他:失败

约束说明

  • 调用该接口之前,需要先调用Connect接口完成与对端的建链。
  • 该接口需要和Initialize运行在同一个线程上,如需切换线程调用该接口,需要在Initialize所在线程调用aclrtGetCurrentContext获取context,并在新线程调用aclrtSetCurrentContext设置context。
  • 系统默认开启中转内存池,如果op_desc内包含<256K的,则默认使用中转传输模式来提升性能,否则会通过判断是否有未注册的内存来决定走中转还是直传;
  • 在开启中转内存池情况下,op_desc中本地内存和远端内存有一个未注册就会判断为需要走中转传输模式,且没有注册过的内存判断为Host内存,用户需保证地址合法;
  • 在中转传输模式下,所有op_desc的传输类型需要相同,举例:所有的op_desc都是本地Host内存往远端Host内存写;