---
title: HcclCommMemReg
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/commopdev/hcclopdevapi_07_0060.html
sourcePath: /source/zh/canncommercial/900/programug/commopdev/hcclopdevapi_07_0060.html
indexId: a0c26a8959d8d1838f586c4848cdf0ff4b8417aac7ec378d7d42b513a9a21f4c75
---
# HcclCommMemReg

#### 产品支持情况

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


#### 功能说明

向通信域注册已申请的内存，并获取对应的注册句柄。


#### 函数原型

```
HcclResult HcclCommMemReg(HcclComm comm, const char *memTag, const CommMem *mem, HcclMemHandle *memHandle)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |  |  |
| --- | --- | --- | --- | --- |
| comm | 输入 | 通信域句柄。 HcclComm类型的定义如下： 1 typedef void \*HcclComm; | 1 | typedef void \*HcclComm; |
| 1 | typedef void \*HcclComm; |  |  |  |
| memTag | 输入 | 内存字符串标签，最大字符长度为HCCL\_OP\_TAG\_LEN\_MAX。 const uint32\_t HCCL\_OP\_TAG\_LEN\_MAX = 255; |  |  |
| mem | 输入 | 内存信息，CommMem类型的定义可参见CommMem。 |  |  |
| memHandle | 输出 | 内存句柄。 HcclMemHandle类型的定义如下： 1 typedef void \*HcclMemHandle; | 1 | typedef void \*HcclMemHandle; |
| 1 | typedef void \*HcclMemHandle; |  |  |  |


#### 返回值

HcclResult：接口成功返回HCCL_SUCCESS，其他失败。


#### 约束说明

- 一个通信域内，同一个memTag，只允许注册一块内存。
- 一个通信域内，相同memTag和mem重复注册，会复用已有的注册内存句柄。
- 一个通信域内，内存注册不允许有交集。


#### 调用示例

```
HcclComm comm; // 通信域句柄，省略获取
char* memTag = "memTag"; // 内存标签
CommMem memInfo; // 内存信息
memInfo.addr = 0x00; // 配置已申请的内存地址     
memInfo.size = 1024; // 配置已申请的内存大小
memInfo.type = COMM_MEM_TYPE_DEVICE; // 配置已申请的内存类型
HcclMemHandle memHandle; // 内存句柄
HcclCommMemReg(comm, memTag, &memInfo, &memHandle);
```
