Line data Source code
1 : /**
2 : * Copyright (c) 2025 Huawei Technologies Co., Ltd.
3 : * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
4 : * CANN Open Software License Agreement Version 2.0 (the "License").
5 : * Please refer to the License for details. You may not use this file except in compliance with the License.
6 : * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
7 : * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8 : * See LICENSE in the root of the software repository for the full text of the License.
9 : */
10 :
11 : #ifndef HCCL_NSLBDP_PUB_H
12 : #define HCCL_NSLBDP_PUB_H
13 :
14 : #include <vector>
15 : #include <memory>
16 : #include <map>
17 : #include <mutex>
18 : #include <hccl/hccl_types.h>
19 : #include <hccl/hccl_comm.h>
20 : #include <hccl/hccl_inner.h>
21 :
22 : #include "hccl/base.h"
23 : #include "hccl_common.h"
24 : #include "hccl_comm_pub.h"
25 : #include "mem_device_pub.h"
26 : #include "topoinfo_struct.h"
27 : #include "sal_pub.h"
28 : #include "comm.h"
29 : #include "topoinfo_exchange_agent.h"
30 : #include "transport_heterog_def.h"
31 : #include "../common/src/topo/topoinfo_detect.h"
32 : #include "coll_alg_param.h"
33 :
34 : namespace hccl {
35 :
36 : const u32 COMM_DESC_MAX_LENGTH = 128; // group name max length
37 :
38 : const u32 COMM_MAX_GLOABLE_ROOTRANK = 256; // group name max length
39 :
40 : // 通信域信息表RankInfo
41 : struct NslbDpRankInfo {
42 : u32 deviceIp;
43 : u32 serverIp;
44 : u16 podId;
45 : u16 rev;
46 : };
47 :
48 : struct NslbDeviceIp {
49 : u32 deviceIp;
50 : };
51 :
52 : // 表4 RankInfo
53 : struct TableFourRankInfo {
54 : u32 deviceIp;
55 : u32 serverIp;
56 : };
57 :
58 : // 分表1-通信域信息表val
59 36 : struct NslbDpCommConfigVal {
60 : u64 taskId;
61 : char commDesc[COMM_DESC_MAX_LENGTH];
62 : u64 commInitTime;
63 : u16 rankTotalNum;
64 : u8 commMd5Sum[16];
65 : std::vector<NslbDpRankInfo> rankInfo;
66 : };
67 :
68 : // 分表1-通信域信息表
69 : struct NslbDpCommConfigInfo {
70 : u64 taskId;
71 : char commDesc[COMM_DESC_MAX_LENGTH];
72 : u64 commInitTime;
73 : u16 packetId;
74 : u16 rev;
75 : u16 packetNum;
76 : u16 revSecond;
77 : NslbDeviceIp sendRankInfo[4];
78 : u8 commMd5Sum[16];
79 : u16 rankTotalNum;
80 : u16 rankNum;
81 : std::vector<NslbDpRankInfo> rankInfo;
82 : };
83 :
84 : // 分表2-算子信息表
85 : struct NslbDpOperatorInfo {
86 : u64 taskId; // 配置结构体大小
87 : char commDesc[COMM_DESC_MAX_LENGTH];
88 : u64 commInitTime;
89 : u8 oper;
90 : u8 algorithm;
91 : u16 rootRank;
92 : u64 trafficCnt;
93 : u16 l4SPortId;
94 : u16 maskLen;
95 : u32 sedFlag;
96 : };
97 :
98 : /*
99 : // 算法信息表AdjInfo
100 : struct NslbDpAdjInfo {
101 : u16 dstLocalRankId;
102 : u8 phaseId;
103 : u8 rev;
104 : };
105 :
106 : // 算法信息表AdjInfo
107 : struct AdjInfo {
108 : u16 dstRankNum;
109 : u16 rev;
110 : std::vector<NslbDpAdjInfo> nsAdjInfo;
111 : };
112 : */
113 :
114 : // 分表3-算法邻接表
115 2 : struct NslbDpAlgorithmTlv {
116 : u64 taskId;
117 : char commDesc[COMM_DESC_MAX_LENGTH];
118 : u8 commMd5Sum[16];
119 : u16 srcLocalRankId;
120 : u8 oper;
121 : u8 algorithm;
122 : u16 rootRank;
123 : u16 rev;
124 : u16 dstRankNum;
125 : u16 revsecond;
126 : std::vector<NslbDpAdjInfo> AdjInfo;
127 : };
128 :
129 18 : struct NslbDpAlgorithmInfo {
130 : u64 taskId;
131 : char commDesc[COMM_DESC_MAX_LENGTH];
132 : u8 commMd5Sum[16];
133 : u16 srcLocalRankId;
134 : u8 oper;
135 : u8 algorithm;
136 : u16 rootRank;
137 : u16 dstRankNum;
138 : std::vector<NslbDpAdjInfo> AdjInfo;
139 : u32 sedFlag;
140 : };
141 :
142 : // 分表4-全局Rank表val
143 : struct NslbDpGlobalRankVal {
144 : u64 taskId;
145 : char commDesc[COMM_DESC_MAX_LENGTH];
146 : u64 commInitTime;
147 : u32 rankTotalNum;
148 : u8 commMd5Sum[16];
149 : std::vector<TableFourRankInfo> rankInfo;
150 : };
151 :
152 : // 分表4-全局Rank表
153 : struct NslbDpGlobalRankInfo {
154 : u64 taskId;
155 : char commDesc[COMM_DESC_MAX_LENGTH];
156 : u64 commInitTime;
157 : u16 packetId;
158 : u16 rev;
159 : u16 packetNum;
160 : u16 rev2;
161 : NslbDeviceIp sendRankInfo[COMM_MAX_GLOABLE_ROOTRANK];
162 : u8 commMd5Sum[16];
163 : u32 rankTotalNum;
164 : u16 rankNum;
165 : u16 rev3;
166 : std::vector<TableFourRankInfo> rankInfo;
167 : };
168 :
169 : // 分表5-全局Rank分布式信息val
170 : struct NslbDpGlobalDisRankVal {
171 : u64 taskId;
172 : u32 npuIp;
173 : u32 serverIp;
174 : u32 nodeId;
175 : u8 localRankNum;
176 : u8 rev[3];
177 : u32 rankTotalNum;
178 : };
179 :
180 : struct NslbDpGlobalCommInfo {
181 : u64 taskId;
182 : u32 nodeId;
183 : u8 localRankNum;
184 : u32 rankTotalNum;
185 : };
186 :
187 : struct NslbDpRankId {
188 : u16 rankID;
189 : };
190 :
191 : // 分表6-Root Rank分布式信息
192 : struct NslbDpRootRank {
193 : u64 taskId;
194 : char commDesc[COMM_DESC_MAX_LENGTH];
195 : u64 commInitTime;
196 : u8 oper;
197 : u8 algorithm;
198 : u16 revfir;
199 : u16 rootRankNum;
200 : u16 revsec;
201 : std::vector<NslbDpRankId> rankId;
202 : };
203 :
204 : constexpr unsigned int TLV_SEND_TYPE_NETCO_INIT = 0;
205 : constexpr unsigned int TLV_SEND_TYPE_NETCO_DEINIT = 1;
206 : constexpr unsigned int TLV_SEND_TYPE_TBL_COMM_INFO = 2;
207 : constexpr unsigned int TLV_SEND_TYPE_TBL_OPER = 3;
208 : constexpr unsigned int TLV_SEND_TYPE_TBL_ADJ = 4;
209 : constexpr unsigned int TLV_SEND_TYPE_TBL_RANK = 5;
210 : constexpr unsigned int TLV_SEND_TYPE_TBL_RANK_DIST = 6;
211 : constexpr unsigned int TLV_SEND_TYPE_TBL_ROOT_RANK = 7;
212 :
213 : // typedef void *NslbdpCommHandle;
214 :
215 : struct nslb_inithccp_info {
216 : s32 version;
217 : u32 phyId;
218 : u32 nic_posion;
219 : u32 reserved[16U];
220 : };
221 :
222 : } // namespace hccl
223 :
224 : #endif /* HCCL_NSLB_DP_PUB_H */
|