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

RegisterMem

产品支持情况

产品

是否支持

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

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

Atlas A2 训练系列产品

x

Atlas 200I/500 A2 推理产品

x

Atlas 推理系列产品

x

Atlas 训练系列产品

x

函数功能

注册内存地址。用于TransferSync调用指定本地内存地址和远端内存地址,TransferSync指定的地址可以为注册的地址子集,其中本地内存地址需在当前AdxlEngine进行注册,远端内存地址需要在远端AdxlEngine进行注册。

函数原型

1
Status RegisterMem(const MemDesc &mem, MemType type, MemHandle &mem_handle)

参数说明

参数名

输入/输出

描述

mem

输入

需要注册的内存的描述信息。类型为MemDesc

type

输入

需要注册的内存的类型。类型为MemType

mem_handle

输出

注册成功返回的内存handle, 可用于内存解注册。类型为MemHandle

调用示例

请参考adxl_engine_sample

返回值

  • SUCCESS:成功
  • PARAM_INVALID:参数错误
  • 其他:失败

异常处理

约束说明

  • 在调用Connect与对端建链之前需要完成所有local内存的注册。
  • 单进程支持注册的内存个数上限是256。
  • 最大注册50GB的Device内存,20GB的Host内存。注册内存越大,占用的OS内存越多。
  • 注册Host内存需使用aclrtMallocHost进行申请,该接口申请的内存地址自动对齐。
  • 注册Device内存使用aclrtMalloc进行申请,如通过HCCS传输,则内存分配规则需配置为ACL_MEM_MALLOC_HUGE_ONLY。
  • 该接口需要和Initialize运行在同一个线程上,如需切换线程调用该接口,需要在Initialize所在线程调用aclrtGetCurrentContext获取context,并在新线程调用aclrtSetCurrentContext设置context。