---
title: 拓扑模型
description: "在实现通信算子时，由于以下两种原因，需要在控制面提供拓扑查询相关接口："
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/commopdev/hcclopdev_000009.html
sourcePath: /source/zh/canncommercial/900/programug/commopdev/hcclopdev_000009.html
indexId: 2b12235720c3f9acd707c23ebb27fd6cbeca0e54d3a53c949c5678380392dfd471
---
# 拓扑模型

#### 背景

在实现通信算子时，由于以下两种原因，需要在控制面提供拓扑查询相关接口：

- 算子控制面实现需要为数据面创建Channel，那不同rank是否互连，以及通过哪些Endpoint互连，是创建Channel必备的信息，所以需要提供拓扑查询相关控制面接口。
- 不同集群可能具有不同的连接关系，算子实现的性能好坏与拓扑连接强相关。为了算子能够适配不同拓扑形态，且具有较好性能，需要感知拓扑连接关系。

因此，HCCL对通信域内不同rank间的连接关系进行拓扑建模，构成的拓扑图称之为rank graph，并提供了连接关系查询相关的控制面接口，具体见拓扑信息查询。


#### 拓扑模型介绍

HCCL使用传统节点与边的图（Graph）表达方式对拓扑建模。由于大规模AI集群一般会分级组建，比如一个服务器包含多个NPU互连，多台服务器组成一个Rack或SuperNode等。因此HCCL在图表达的基础上增加了拓扑层级的抽象。

下图是一个拓扑模型示例，通过该示例介绍拓扑模型中的概念：

- Node：图（Graph）中的节点，包含两种类型：

  1. 通信对象：在通信域中以rank ID标识的实体。
  2. Fabric：对网络交换/路由的抽象。

    a. Fabric只能与通信对象相连。
    b. Fabric可以是一个交换机，也可以是由多个交换机组成一套网络设施。
    c. 抽象为Fabric节点的网络设施需要满足条件：与它相连的通信对象两两之间都可以通过它互通。
- Endpoint：一个Node的逻辑端口，一个Node可以包含一个或多个Endpoint。
- Edge：图（Graph）中的边，表示不同Node之间的连接关系，Edge两端是两个Node的Endpoint。
- Link：表示两个通信对象之间可以建链的信息，包含两端的Endpoint等。
- 拓扑层级：实际网络拓扑存在分级情况，如下图所示，拓扑分为Layer 0和Layer 1两级，内部包含两个Layer 0拓扑；每一层级的网络拓扑具备自己的拓扑类型，比如Fullmesh、Clos等。

图1 拓扑模型
