---
title: RegisterMem
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/hixlug/llmcrv2_42_26.html
sourcePath: /source/zh/canncommercial/900/API/hixlug/llmcrv2_42_26.html
indexId: 6dcbff251b0f30e6a4b606e289c85175698a0bc1e6255b52c471d87a7f64a7d859
---
# RegisterMem

#### 产品支持情况

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


说明：针对 Atlas A2 训练系列产品 / Atlas A2 推理系列产品 ，仅支持Atlas 800I A2 推理服务器、A200I A2 Box 异构组件。


#### 函数功能

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


#### 函数原型

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


#### 参数说明

| 参数名 | 输入/输出 | 描述 |
| --- | --- | --- |
| mem | 输入 | 需要注册的内存的描述信息。类型为MemDesc。 |
| type | 输入 | 需要注册的内存的类型。类型为MemType。 |
| mem\_handle | 输出 | 注册成功返回的内存handle, 可用于内存解注册。类型为MemHandle。 |


#### 调用示例

单击Gitcode(https://gitcode.com/cann/hixl)，选择配套版本，从“examples/cpp”目录中获取样例。


#### 返回值

- SUCCESS：成功
- PARAM_INVALID：参数错误
- 其他：失败


#### 异常处理

无


#### 约束说明

- 在调用  Connect
与对端建链之前需要完成所有local内存的注册。
- 单进程支持注册的内存个数上限是256。该约束支持的型号如下：

  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  - Atlas A3 训练系列产品 / Atlas A3 推理系列产品
- 当HDK版本低于25.5.0时，最大注册20GB的Host内存；当HDK版本等于或大于25.5.0时，最大注册1TB的Host内存。注册内存越大，占用的OS内存越多。该约束支持的型号如下：

  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  - Atlas A3 训练系列产品 / Atlas A3 推理系列产品
- 注册Host内存需使用
“aclrtMallocHost(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_0101.html)”进行申请，该接口申请的内存地址自动对齐。该约束支持的型号如下：

  - Atlas A2 训练系列产品 / Atlas A2 推理系列产品
  - Atlas A3 训练系列产品 / Atlas A3 推理系列产品
- 注册Device内存使用“aclrtMalloc(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_0095.html)”进行申请，如通过HCCS传输，则内存分配规则需配置为ACL_MEM_MALLOC_HUGE_ONLY。
- 该接口需要和  Initialize
运行在同一个线程上，如需切换线程调用该接口，需要在  Initialize
所在线程调用“aclrtGetCurrentContext(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_0062.html)”获取context，并在新线程调用“aclrtSetCurrentContext(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_0061.html)”设置context。
