rank table配置资源信息(Atlas 350 加速卡)
对Atlas 350 加速卡,rank table文件需要配合拓扑文件初始化HCCL通信域。
- rank table文件大小最大支持1GB。
- rank table文件为JSON格式,本节所示JSON文件示例中的注释仅为方便理解,实际使用时,请删除JSON文件中的注释。
拓扑文件配置
{
"version": "2.0",
"peer_count": 2,
"peer_list":[
{ "local_id": 0},
{ "local_id": 1}
],
"edge_count": 3,
"edge_list": [
{
"net_layer": 0, // Server内连接
"link_type": "PEER2PEER",
"protocols": ["UB_CTP"],
"local_a": 0, // 上图所示的NPU0
"local_a_ports": ["1/0"], // Server内连接端口为Die1的0号端口
"local_b": 1, // 上图所示的NPU1
"local_b_ports": ["1/0"], // Server内连接端口为Die1的0号端口
"topo_instance_id": 0,
"topo_type": "1DMESH",
"position": "DEVICE"
},{
"net_layer": 1, // Server间连接
"link_type": "PEER2NET",
"protocols": ["UB_CTP"],
"local_a": 0, // 上图所示的NPU0
"local_a_ports": ["0/4","0/5","0/6","0/7","1/5","1/6"], // Server间连接端口为Die0的4、5、6、7号端口,Die1的5、6号端口
"topo_instance_id": 0,
"topo_type": "CLOS",
"position": "DEVICE"
},{
"net_layer": 1,
"link_type": "PEER2NET",
"protocols": ["UB_CTP"],
"local_a": 1, // Server间连接
"local_a_ports": ["0/4","0/5","0/6","0/7","1/5","1/6"], // Server间连接端口为Die0的4、5、6、7号端口,Die1的5、6号端口
"topo_instance_id": 0,
"topo_type": "CLOS",
"position": "DEVICE"
}
]
}
|
一级配置项 |
二级配置项 |
配置说明 |
|---|---|---|
|
version |
必选。 拓扑文件模板版本信息。 固定配置为:2.0。 |
|
|
peer_count |
必选。 当前AI Server包含的NPU个数,取值范围:[1,65]。 |
|
|
peer_list |
必选。 当前AI Server包含的NPU列表。 |
|
|
local_id |
必选。 NPU的物理ID,取值范围:[0,64]。 |
|
|
edge_count |
必选。 物理连接边数,取值范围:[0, UINT32_MAX]。 |
|
|
edge_list |
必选。 物理连接边列表。 |
|
|
net_layer |
必选。 当前物理链路所属的网络层次,取值范围:[0,7]。 |
|
|
link_type |
必选。
当前物理链路的连接类型,支持以下取值:
|
|
|
protocols |
必选。
当前链路支持的协议列表,支持以下取值:
|
|
|
local_a |
必选。 通信链路一端NPU的物理ID。 该ID须存在于“peer_list”中。 |
|
|
local_a_ports |
必选。 当前层次的通信链路在“local_a”对应的NPU中使用的端口列表,字符串类型,长度为1~32,列表中每个值的格式为:Die ID/端口ID。 例如:"local_a_ports": ["1/0"],代表Die1的0号端口。 |
|
|
local_b |
必选。 通信链路另一端NPU的物理ID。 该ID须存在于“peer_list”中。 |
|
|
local_b_ports |
必选。 当前层次的通信链路在“local_b”对应的NPU中使用的端口列表,字符串类型,长度为1~32,每个端口的配置格式为:Die ID/端口ID,多个端口之间用“,”分隔。 例如:"local_a_ports": ["1/0"],代表Die1的0号端口。 |
|
|
topo_instance_id |
可选。 拓扑实例ID,取值范围:[0, UINT32_MAX]。 |
|
|
topo_type |
可选。 拓扑实例的拓扑类型,当前仅支持以下取值: CLOS(默认值):所有节点均可通,例如通过交换机连接的胖树结构。 |
|
|
position |
可选。
通信链路使用的网卡所属位置,支持以下取值:
|
rank table文件配置
以两个AI Server,每个AI Server中两个NPU为例,配置示例如下:
{
"status": "completed", // rank table可用标识,completed为可用
"version": "2.0",
"rank_count": 4,
"rank_list": [
{
"rank_id": 0,
"local_id": 0,
"device_id": 0,
"device_port": 16666,
"level_list": [
{
"net_layer": 0, // Server内连接
"net_instance_id": "az0-rack0-pod0",
"net_type": "TOPO_FILE_DESC",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.0.10",
"ports": ["1/0"] // 连接端口为Die1的0号端口
}
]
},{
"net_layer": 1, // Server间连接
"net_instance_id": "az0",
"net_type": "CLOS",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.0.15",
"ports": ["0/4","0/5","0/6","0/7"], // 连接端口为Die0的4、5、6、7号端口
"plane_id": "plane0"
},{
"addr_type": "IPV4",
"addr": "172.16.0.5",
"ports": ["1/5","1/6"], // 连接端口为Die1的5、6号端口
"plane_id": "plane1"
}
]
}
]
},
{
"rank_id": 1,
"local_id": 1,
"device_id": 1,
"device_port": 16667,
"level_list": [
{
"net_layer": 0,
"net_instance_id" : "az0-rack0-pod0",
"net_type": "TOPO_FILE_DESC",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.0.28",
"ports": ["1/0"]
}
]
},{
"net_layer": 1,
"net_instance_id": "az0",
"net_type": "CLOS",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.0.33",
"ports": ["0/4","0/5","0/6","0/7"],
"plane_id": "plane2"
},{
"addr_type": "IPV4",
"addr": "172.16.0.23",
"ports": ["1/5","1/6"],
"plane_id": "plane3"
}
]
}
]
},{
"rank_id": 2,
"local_id": 0,
"device_id": 0,
"device_port": 16668,
"level_list": [
{
"net_layer": 0,
"net_instance_id": "az0-rack0-pod1",
"net_type": "TOPO_FILE_DESC",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.1.10",
"ports": ["1/0"]
}
]
},{
"net_layer": 1,
"net_instance_id": "az0",
"net_type": "CLOS",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.1.15",
"ports": ["0/4","0/5","0/6","0/7"],
"plane_id": "plane0"
},{
"addr_type": "IPV4",
"addr": "172.16.1.5",
"ports": ["1/5","1/6"],
"plane_id": "plane1"
}
]
}
]
},
{
"rank_id": 3,
"local_id": 1,
"device_id": 1,
"device_port": 16669,
"level_list": [
{
"net_layer": 0,
"net_instance_id": "az0-rack0-pod1",
"net_type": "TOPO_FILE_DESC",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.1.28",
"ports": ["1/0"]
}
]
},{
"net_layer": 1,
"net_instance_id": "az0",
"net_type": "CLOS",
"net_attr": "",
"rank_addr_list": [
{
"addr_type": "IPV4",
"addr": "172.16.1.33",
"ports": ["0/4","0/5","0/6","0/7"],
"plane_id": "plane2"
},{
"addr_type": "IPV4",
"addr": "172.16.1.23",
"ports": ["1/5","1/6"],
"plane_id": "plane3"
}
]
}
]
}
]
}
|
一级配置项 |
二级配置项 |
三级配置项 |
四级配置项 |
配置说明 |
|---|---|---|---|---|
|
status |
必选,rank table可用标识。
|
|||
|
version |
必选。 rank table模板版本信息。 固定配置为:2.0。 |
|||
|
rank_count |
必选。 参与集合通信的rank数量,即NPU数量,取值范围:[1, 65536]。 |
|||
|
rank_list |
必选。 参与集合通信的rank列表。 |
|||
|
rank_id |
必选。 rank唯一标识,请配置为整数,从0开始配置,且全局唯一,取值范围:[0, NPU总数-1]。 为方便管理,建议rank_id按照NPU物理连接顺序进行排序,即将物理连接上较近的NPU编排在一起。 |
|||
|
local_id |
必选。 NPU在当前AI Server中的唯一标识。请从0开始配置,取值范围:[0,64]。 |
|||
|
device_id |
必选。 NPU的物理ID,取值范围:[0,64]。 |
|||
|
device_port |
可选。 Device网卡的通信端口,取值范围为[1,65535],需要确保指定的端口未被其他进程占用。需要注意,[1,1023]为系统保留端口,应避免使用这些端口。 单卡多进程的业务场景下,建议配置此字段,并且不同的业务进程需要设置不同的端口号,否则业务可能会因为端口冲突运行失败。 |
|||
|
level_list |
必选。 rank在每个网络层次的资源信息。 此列表下数组长度不能超过8。 |
|||
|
net_layer |
必选。 网络层次,取值范围:[0,7]。 net_layer需要从0开始编号,以升序的形式排列。 |
|||
|
net_instance_id |
必选。 该网络层次下的实例ID,用户自定义,同一个net_layer下保持唯一,长度不超过1024。 |
|||
|
net_type |
可选。
该网络层次的网络类型,支持以下取值:
|
|||
|
net_attr |
可选。 预留字段,表示该网络层次的其他额外信息。 |
|||
|
rank_addr_list |
必选。 当前rank在该网络层次使用的网络地址信息。 此列表下数组长度不能超过24,每个Die需要单独配置。 |
|||
|
addr_type |
必选。
当前rank的地址类型,支持以下取值:
|
|||
|
addr |
必选。 当前rank的IP地址,字符串类型,长度范围1~256,地址需要符合“addr_type”指定的地址格式。 |
|||
|
ports |
必选。 “addr”绑定的端口列表,一个地址可以绑定到多个端口,每个端口的配置格式为:Die ID/端口ID,多个端口之间用“,”分隔。 注意:一个端口在同一个网络层次下,只能映射到一个地址。最多支持配置16个端口,支持的最大字符串长度为32。 |
|||
|
plane_id |
可选。 网络平面ID,默认值为“0”。 |