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

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| 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 异构组件。


#### 函数功能

双边建链，通过建立通信域方式建链。（推荐使用更易用的单边建链的link_clusters接口，无需指定ranktable信息）

如果要在单机内且想使用RDMA网卡通信，需要设置HCCL_INTRA_ROCE_ENABLE=1环境变量。


#### 函数原型

```
link(comm_name: str, cluster_rank_info: Dict[int, int], rank_table: str) -> int
```


#### 参数说明

| 参数名称 | 数据类型 | 取值说明 |
| --- | --- | --- |
| comm\_name | str | 通信域名称。 取值范围：小于128个字符。 |
| cluster\_rank\_info | Dict[int, int] | 集群ID到rank ID的映射。 例如：{1: 0, 2: 1}。 |
| rank\_table | str | 开发者可以通过该参数配置参与集合通信的NPU资源信息，具体信息请参见《HCCL集合通信库(https://www.hiascend.com/document/detail/zh/canncommercial/900/API/hcclug/hcclug\_000001.html)》中的“相关参考 > 集群信息配置”章节。 |


rank_table配置示例如下。

```
{
"server_count": "2",
"server_list": [
{
"device": [
{
"device_id": "0",
"device_ip": "x.x.x.x",
"rank_id": "0"
},
],
"server_id": "xxxx"
},{
"device": [
{
"device_id": "0",
"device_ip": "x.x.x.x",
"rank_id": "1"
},
],
"server_id": "xxxx"
}
],
"status": "completed",
"version": "1.0"
}
```


#### 调用示例

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


#### 返回值

正常情况下返回标识通信域的ID。

参数错误可能抛出TypeError或ValueError。


#### 约束说明

- 需要通信域内所有节点同时发起。
- 通信域内节点数量最大支持4。
- 通信域数量建议不超过16，最大支持512。建链数量过多存在内存OOM及cache传输的性能下降风险。
- link底层会在通信域内部交换内存描述符，对于用来传输的cache，需要在link前先配置内存池或者先注册内存。
- 不支持fork子进程方式调用。
- 最多支持16条链路并发建链，超过16条底层会排队。
- 需保证多通信域建链不出现循环依赖。
