LCOV - code coverage report
Current view: top level - legacy/ascend950/service/collective/alg/coll_alg_factory/alg_template/ins_alg_template - alg_data_trans_wrapper.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 59 0
Test Date: 2026-08-18 17:47:01 Functions: 0.0 % 13 0

            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 HCCLV2_ALG_DATA_TRANS_WRAPPER
      12              : #define HCCLV2_ALG_DATA_TRANS_WRAPPER
      13              : 
      14              : #include <vector>
      15              : #include "data_type.h"
      16              : #include "reduce_op.h"
      17              : 
      18              : #include "coll_alg_params.h"
      19              : #include "virtual_topo.h"
      20              : #include "connected_link_mgr.h"
      21              : #include "dev_capability.h"
      22              : #include "primitive.h"
      23              : #include "prim_queue.h"
      24              : #include "instruction.h"
      25              : #include "ins_queue.h"
      26              : 
      27              : namespace Hccl {
      28              : using InsQuePtr = std::shared_ptr<InsQueue>;
      29              : 
      30              : using SlicesList = struct SlicesListDef {
      31              :     std::vector<DataSlice> srcSlices_;
      32              :     std::vector<DataSlice> dstSlices_;
      33              : 
      34            0 :     SlicesListDef(const std::vector<DataSlice>& srcSlices, const std::vector<DataSlice>& dstSlices)
      35            0 :         : srcSlices_(srcSlices),
      36            0 :           dstSlices_(dstSlices)
      37            0 :     {}
      38              : };
      39              : 
      40              : using ReduceSlicesList = struct ReduceSlicesListDef {
      41              :     std::vector<DataSlice> srcSlices_;
      42              :     std::vector<DataSlice> dstSlices_;
      43              :     DataType dataType_;
      44              :     ReduceOp reduceOp_;
      45              : 
      46              :     ReduceSlicesListDef(
      47              :         const std::vector<DataSlice>& srcSlices, const std::vector<DataSlice>& dstSlices, const DataType& dataType,
      48              :         const ReduceOp& reduceOp)
      49              :         : srcSlices_(srcSlices),
      50              :           dstSlices_(dstSlices),
      51              :           dataType_(dataType),
      52              :           reduceOp_(reduceOp)
      53              :     {}
      54            0 :     ReduceSlicesListDef(const SlicesList& slices, const DataType& dataType, const ReduceOp& reduceOp)
      55            0 :         : srcSlices_(slices.srcSlices_),
      56            0 :           dstSlices_(slices.dstSlices_),
      57            0 :           dataType_(dataType),
      58            0 :           reduceOp_(reduceOp)
      59            0 :     {}
      60              : };
      61              : 
      62              : using TxRxSlicesList = struct TxRxSlicesListDef {
      63              :     SlicesList txSlicesList_;
      64              :     SlicesList rxSlicesList_;
      65              : 
      66            0 :     TxRxSlicesListDef(const SlicesList& txSlicesList, const SlicesList& rxSlicesList)
      67            0 :         : txSlicesList_(txSlicesList),
      68            0 :           rxSlicesList_(rxSlicesList)
      69            0 :     {}
      70              : };
      71              : 
      72              : using TxRxReduceSlicesList = struct TxRxReduceSliceInfoDef {
      73              :     SlicesList txSlicesList_;
      74              :     SlicesList rxSlicesList_;
      75              :     DataType dataType_;
      76              :     ReduceOp reduceOp_;
      77              : 
      78              :     TxRxReduceSliceInfoDef(
      79              :         const SlicesList& txSlicesList, const SlicesList& rxSlicesList, const DataType dataType,
      80              :         const ReduceOp reduceOp)
      81              :         : txSlicesList_(txSlicesList),
      82              :           rxSlicesList_(rxSlicesList),
      83              :           dataType_(dataType),
      84              :           reduceOp_(reduceOp)
      85              :     {}
      86              : 
      87            0 :     TxRxReduceSliceInfoDef(const TxRxSlicesList& slices, const DataType dataType, const ReduceOp reduceOp)
      88            0 :         : txSlicesList_(slices.txSlicesList_),
      89            0 :           rxSlicesList_(slices.rxSlicesList_),
      90            0 :           dataType_(dataType),
      91            0 :           reduceOp_(reduceOp)
      92            0 :     {}
      93              : };
      94              : 
      95              : using TxRxLinks = struct TxRxLinkDef {
      96              :     LinkData txLink_;
      97              :     LinkData rxLink_;
      98              : 
      99            0 :     TxRxLinkDef(const LinkData& txLink, const LinkData& rxLink) : txLink_(txLink), rxLink_(rxLink) {}
     100              : };
     101              : 
     102              : using DataInfo = struct DataInfoDef {
     103              :     LinkData link_;
     104              :     SlicesList slices_;
     105              : 
     106            0 :     DataInfoDef(const LinkData& link, const SlicesList& slices) : link_(link), slices_(slices) {}
     107              : };
     108              : 
     109              : using SendRecvInfo = struct SendRecvInfoDef {
     110              :     TxRxLinks sendRecvLinks_;
     111              :     TxRxSlicesList sendRecvSlices_;
     112              : 
     113            0 :     SendRecvInfoDef(const TxRxLinks& sendRecvLinks, const TxRxSlicesList& sendRecvSlices)
     114            0 :         : sendRecvLinks_(sendRecvLinks),
     115            0 :           sendRecvSlices_(sendRecvSlices)
     116            0 :     {}
     117              : };
     118              : 
     119              : using DataReduceInfo = struct DataReduceInfoDef {
     120              :     LinkData link_;
     121              :     SlicesList slices_;
     122              :     DataType dataType_;
     123              :     ReduceOp reduceOp_;
     124              : 
     125              :     DataReduceInfoDef(const LinkData& link, const SlicesList& slices, const DataType dataType, const ReduceOp reduceOp)
     126              :         : link_(link),
     127              :           slices_(slices),
     128              :           dataType_(dataType),
     129              :           reduceOp_(reduceOp)
     130              :     {}
     131              : };
     132              : 
     133              : using SendRecvReduceInfo = struct SendRecvReduceInfoDef {
     134              :     TxRxLinks sendRecvLinks_;
     135              :     TxRxSlicesList sendRecvSlices_;
     136              :     DataType dataType_;
     137              :     ReduceOp reduceOp_;
     138              : 
     139            0 :     SendRecvReduceInfoDef(
     140              :         const TxRxLinks& sendRecvLinks, const TxRxSlicesList& sendRecvSlices, const DataType dataType,
     141              :         const ReduceOp reduceOp)
     142            0 :         : sendRecvLinks_(sendRecvLinks),
     143            0 :           sendRecvSlices_(sendRecvSlices),
     144            0 :           dataType_(dataType),
     145            0 :           reduceOp_(reduceOp)
     146            0 :     {}
     147              : };
     148              : 
     149              : using MultiDataInfo = struct MultiDataInfoDef {
     150              :     std::vector<LinkData>& links_;
     151              :     std::vector<SlicesList>& slices_;
     152              : 
     153              :     MultiDataInfoDef(std::vector<LinkData>& links, std::vector<SlicesList>& slices) : links_(links), slices_(slices) {}
     154              : };
     155              : 
     156              : using MultiSendRecvInfo = struct MultiSendRecvInfoDef {
     157              :     std::vector<TxRxLinks>& txRxLinks_;
     158              :     std::vector<TxRxSlicesList>& txRxSlices_;
     159              : 
     160              :     MultiSendRecvInfoDef(std::vector<TxRxLinks>& txRxLinks, std::vector<TxRxSlicesList>& txRxSlices)
     161              :         : txRxLinks_(txRxLinks),
     162              :           txRxSlices_(txRxSlices)
     163              :     {}
     164              : };
     165              : 
     166              : using MultiDataReduceInfo = struct MultiDataReduceInfoDef {
     167              :     std::vector<LinkData>& links_;
     168              :     std::vector<ReduceSlicesList>& slices_;
     169              : 
     170              :     MultiDataReduceInfoDef(std::vector<LinkData>& links, std::vector<ReduceSlicesList>& slices)
     171              :         : links_(links),
     172              :           slices_(slices)
     173              :     {}
     174              : };
     175              : 
     176              : using MultiSendRecvReduceInfo = struct MultiSendRecvReduceInfoDef {
     177              :     std::vector<TxRxLinks>& txRxLinks_;
     178              :     std::vector<TxRxReduceSlicesList>& txRxSlices_;
     179              : 
     180              :     MultiSendRecvReduceInfoDef(std::vector<TxRxLinks>& txRxLinks, std::vector<TxRxReduceSlicesList>& txRxSlices)
     181              :         : txRxLinks_(txRxLinks),
     182              :           txRxSlices_(txRxSlices)
     183              :     {}
     184              : };
     185              : 
     186              : using SlicePair = struct SlicePairDef {
     187              :     DataSlice srcSlice_;
     188              :     DataSlice dstSlice_;
     189              :     DataType dataType_;
     190              :     ReduceOp reduceOp_;
     191              : 
     192            0 :     SlicePairDef(const DataSlice& srcSlice, const DataSlice& dstSlice) : srcSlice_(srcSlice), dstSlice_(dstSlice) {}
     193              : };
     194              : 
     195              : using TransSlicesInfo = struct TransSlicesInfoDef {
     196              :     bool reduceFlag;
     197              : 
     198              :     std::vector<DataSlice> srcSlices;
     199              :     std::vector<DataSlice> dstSlices;
     200              :     DataType dataType_;
     201              :     ReduceOp reduceOp_;
     202              : 
     203              :     bool enableCounterNotify_;
     204              : 
     205            0 :     explicit TransSlicesInfoDef(const SlicesList& slices, const bool enableCounterNotify = false)
     206            0 :         : reduceFlag(false),
     207            0 :           srcSlices(slices.srcSlices_),
     208            0 :           dstSlices(slices.dstSlices_),
     209            0 :           enableCounterNotify_(enableCounterNotify)
     210            0 :     {}
     211              : 
     212            0 :     TransSlicesInfoDef(
     213              :         const SlicesList& slices, const DataType dataType, const ReduceOp reduceOp,
     214              :         const bool enableCounterNotify = false)
     215            0 :         : reduceFlag(true),
     216            0 :           srcSlices(slices.srcSlices_),
     217            0 :           dstSlices(slices.dstSlices_),
     218            0 :           dataType_(dataType),
     219            0 :           reduceOp_(reduceOp),
     220            0 :           enableCounterNotify_(enableCounterNotify)
     221            0 :     {}
     222              : 
     223            0 :     explicit TransSlicesInfoDef(const ReduceSlicesList& slices, const bool enableCounterNotify = false)
     224            0 :         : reduceFlag(true),
     225            0 :           srcSlices(slices.srcSlices_),
     226            0 :           dstSlices(slices.dstSlices_),
     227            0 :           dataType_(slices.dataType_),
     228            0 :           reduceOp_(slices.reduceOp_),
     229            0 :           enableCounterNotify_(enableCounterNotify)
     230            0 :     {}
     231              : };
     232              : 
     233              : using MultiDataLinksDmaModeInfo = struct MultiDataLinksDmaModeInfoDef {
     234              :     DmaMode modeNeedSync_;
     235              :     DmaMode modeSet_;
     236              : 
     237            0 :     MultiDataLinksDmaModeInfoDef(const DmaMode modeNeedSync, const DmaMode modeSet)
     238            0 :         : modeNeedSync_(modeNeedSync),
     239            0 :           modeSet_(modeSet)
     240            0 :     {}
     241              : };
     242              : 
     243              : // mid-level
     244              : // sync
     245              : HcclResult TxReady(const LinkData& link, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     246              : HcclResult RxReady(const LinkData& link, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     247              : HcclResult TxFin(const LinkData& link, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     248              : HcclResult RxFin(const LinkData& link, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     249              : HcclResult TxFinAck(const LinkData& link, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     250              : HcclResult RxFinAck(const LinkData& link, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     251              : 
     252              : // data
     253              : HcclResult TxData(const LinkData& link, InsQuePtr queue, const SlicesList& slices, DmaMode dmaMode = DmaMode::DEFAULT);
     254              : HcclResult RxData(const LinkData& link, InsQuePtr queue, const SlicesList& slices, DmaMode dmaMode = DmaMode::DEFAULT);
     255              : HcclResult
     256              : TxReduce(const LinkData& link, InsQuePtr queue, const ReduceSlicesList& slices, DmaMode dmaMode = DmaMode::DEFAULT);
     257              : HcclResult
     258              : RxReduce(const LinkData& link, InsQuePtr queue, const ReduceSlicesList& slices, DmaMode dmaMode = DmaMode::DEFAULT);
     259              : 
     260              : // data with sync
     261              : HcclResult TxDataWithFin(
     262              :     const LinkData& link, InsQuePtr queue, const SlicesList& slices, u32 topicId = 0,
     263              :     DmaMode dmaMode = DmaMode::DEFAULT);
     264              : HcclResult RxDataWithFin(
     265              :     const LinkData& link, InsQuePtr queue, const SlicesList& slices, u32 topicId = 0,
     266              :     DmaMode dmaMode = DmaMode::DEFAULT);
     267              : HcclResult TxReduceWithFin(
     268              :     const LinkData& link, InsQuePtr queue, const ReduceSlicesList& slices, u32 topicId = 0,
     269              :     DmaMode dmaMode = DmaMode::DEFAULT);
     270              : HcclResult RxReduceWithFin(
     271              :     const LinkData& link, InsQuePtr queue, const ReduceSlicesList& slices, u32 topicId = 0,
     272              :     DmaMode dmaMode = DmaMode::DEFAULT);
     273              : 
     274              : // data with sync in counterNotify mode
     275              : HcclResult MultiTxDataWithFinCounter(
     276              :     const std::vector<LinkData>& links, const std::vector<InsQuePtr>& queues, const std::vector<SlicesList>& slices,
     277              :     u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     278              : HcclResult MultiRxDataWithFinCounter(
     279              :     const std::vector<LinkData>& links, const std::vector<InsQuePtr>& queues, const std::vector<SlicesList>& slices,
     280              :     u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     281              : HcclResult MultiTxReduceWithFinCounter(
     282              :     const std::vector<LinkData>& links, const std::vector<InsQuePtr>& queues,
     283              :     const std::vector<ReduceSlicesList>& slices, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     284              : HcclResult MultiRxReduceWithFinCounter(
     285              :     const std::vector<LinkData>& links, const std::vector<InsQuePtr>& queues,
     286              :     const std::vector<ReduceSlicesList>& slices, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     287              : 
     288              : // sync
     289              : HcclResult TxRxReady(const TxRxLinks& txRxlinks, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     290              : HcclResult TxRxFin(const TxRxLinks& txRxlinks, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     291              : HcclResult TxRxFinAck(const TxRxLinks& txRxlinks, InsQuePtr queue, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     292              : 
     293              : // data
     294              : HcclResult TxRxData(
     295              :     const TxRxLinks& txRxlinks, InsQuePtr queue, const TxRxSlicesList& txRxSlices, DmaMode dmaMode = DmaMode::DEFAULT);
     296              : HcclResult TxRxReduce(
     297              :     const TxRxLinks& txRxlinks, InsQuePtr queue, const TxRxReduceSlicesList& txRxSlices,
     298              :     DmaMode dmaMode = DmaMode::DEFAULT);
     299              : 
     300              : // data with sync
     301              : HcclResult TxRxDataWithFin(
     302              :     const TxRxLinks& txRxlinks, InsQuePtr queue, const TxRxSlicesList& txRxSlices, u32 topicId = 0,
     303              :     DmaMode dmaMode = DmaMode::DEFAULT);
     304              : HcclResult TxRxReduceWithFin(
     305              :     const TxRxLinks& txRxlinks, InsQuePtr queue, const TxRxReduceSlicesList& txRxSlices, u32 topicId = 0,
     306              :     DmaMode dmaMode = DmaMode::DEFAULT);
     307              : 
     308              : HcclResult MultiTxRxDataWithFinCounter(
     309              :     const std::vector<TxRxLinks>& links, const std::vector<InsQuePtr>& queues,
     310              :     const std::vector<TxRxSlicesList>& slices, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     311              : HcclResult MultiTxRxReduceWithFinCounter(
     312              :     const std::vector<TxRxLinks>& links, const std::vector<InsQuePtr>& queues,
     313              :     const std::vector<TxRxReduceSlicesList>& slices, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     314              : 
     315              : // else
     316              : HcclResult LocalCopy(InsQuePtr queue, const DataSlice& srcSlice, const DataSlice& dstSlice);
     317              : HcclResult LocalCopySlices(
     318              :     InsQuePtr queue, const std::vector<DataSlice>& srcSlices,
     319              :     const std::vector<DataSlice>& dstSlices); // 支持连续数据片融合,未来支持strideCount
     320              : HcclResult LocalReduce(
     321              :     InsQuePtr queue, const DataSlice& srcSlice, const DataSlice& dstSlice, const DataType dataType,
     322              :     const ReduceOp reduceOp);
     323              : HcclResult LocalReduceSlices(
     324              :     InsQuePtr queue, const std::vector<DataSlice>& srcSlices, const std::vector<DataSlice>& dstSlices,
     325              :     const DataType dataType, const ReduceOp reduceOp);
     326              : HcclResult AicpuReduce(
     327              :     InsQuePtr queue, const DataSlice& srcSlice, const DataSlice& dstSlice, const DataType dataType,
     328              :     const ReduceOp reduceOp);
     329              : HcclResult AicpuReduceSlices(
     330              :     InsQuePtr queue, const std::vector<DataSlice>& srcSlices, const std::vector<DataSlice>& dstSlices,
     331              :     const DataType dataType, const ReduceOp reduceOp);
     332              : 
     333              : HcclResult StreamSync(std::vector<InsQuePtr>& queues);
     334              : 
     335              : HcclResult PreSyncQues(
     336              :     const std::vector<InsQuePtr>& syncQueues, const u32 postQueIdx, u32 topicId = 0, bool enableCounterNotify = false);
     337              : HcclResult PostSyncQues(
     338              :     const std::vector<InsQuePtr>& syncQueues, const u32 waitQueIdx, u32 topicId = 0, bool enableCounterNotify = false);
     339              : 
     340              : // high-level
     341              : HcclResult Send(
     342              :     const DataInfo& sendInfo, InsQuePtr queue, u32 topicId = 0, bool needNetFinAck = true,
     343              :     DmaMode dmaMode = DmaMode::DEFAULT);
     344              : HcclResult Recv(
     345              :     const DataInfo& recvInfo, InsQuePtr queue, u32 topicId = 0, bool needNetFinAck = true,
     346              :     DmaMode dmaMode = DmaMode::DEFAULT);
     347              : HcclResult SendRecv(
     348              :     const SendRecvInfo& sendRecvInfo, InsQuePtr queue, u32 topicId = 0, bool needNetFinAck = true,
     349              :     DmaMode dmaMode = DmaMode::DEFAULT);
     350              : 
     351              : HcclResult SendReduce(
     352              :     const DataReduceInfo& sendReduceInfo, InsQuePtr queue, u32 topicId = 0, bool needNetFinAck = true,
     353              :     DmaMode dmaMode = DmaMode::DEFAULT);
     354              : HcclResult RecvReduce(
     355              :     const DataReduceInfo& recvReduceInfo, InsQuePtr queue, u32 topicId = 0, bool needNetFinAck = true,
     356              :     DmaMode dmaMode = DmaMode::DEFAULT);
     357              : HcclResult SendRecvReduce(
     358              :     const SendRecvReduceInfo& sendRecvReduceInfo, InsQuePtr queue, u32 topicId = 0, bool needNetFinAck = true,
     359              :     DmaMode dmaMode = DmaMode::DEFAULT);
     360              : 
     361              : // Inter-rank CounterNotify is supported when device supports poll cqe
     362              : HcclResult MultiSendCounter(
     363              :     const MultiDataInfo& sendInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     364              : HcclResult MultiRecvCounter(
     365              :     const MultiDataInfo& recvInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0, DmaMode dmaMode = DmaMode::DEFAULT);
     366              : HcclResult MultiSendRecvCounter(
     367              :     const MultiSendRecvInfo& sendRecvInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     368              :     DmaMode dmaMode = DmaMode::DEFAULT);
     369              : 
     370              : HcclResult MultiSendReduceCounter(
     371              :     const MultiDataReduceInfo& sendInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     372              :     DmaMode dmaMode = DmaMode::DEFAULT);
     373              : HcclResult MultiRecvReduceCounter(
     374              :     const MultiDataReduceInfo& recvInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     375              :     DmaMode dmaMode = DmaMode::DEFAULT);
     376              : HcclResult MultiSendRecvReduceCounter(
     377              :     const MultiSendRecvReduceInfo& sendRecvInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     378              :     DmaMode dmaMode = DmaMode::DEFAULT);
     379              : 
     380              : // send/recv through multi links (support detour case)
     381              : HcclResult SendThruMultiLinks(
     382              :     const std::vector<DataInfo>& sendInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0, bool needNetFinAck = true,
     383              :     DmaMode dmaMode = DmaMode::DEFAULT);
     384              : HcclResult RecvThruMultiLinks(
     385              :     const std::vector<DataInfo>& recvInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0, bool needNetFinAck = true,
     386              :     DmaMode dmaMode = DmaMode::DEFAULT);
     387              : HcclResult SendRecvThruMultiLinks(
     388              :     const std::vector<SendRecvInfo>& sendRecvInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     389              :     bool needNetFinAck = true, DmaMode dmaMode = DmaMode::DEFAULT);
     390              : 
     391              : HcclResult SendReduceThruMultiLinks(
     392              :     const std::vector<DataReduceInfo>& sendReduceInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     393              :     bool needNetFinAck = true, DmaMode dmaMode = DmaMode::DEFAULT);
     394              : HcclResult RecvReduceThruMultiLinks(
     395              :     const std::vector<DataReduceInfo>& recvReduceInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     396              :     bool needNetFinAck = true, DmaMode dmaMode = DmaMode::DEFAULT);
     397              : HcclResult SendRecvReduceThruMultiLinks(
     398              :     const std::vector<SendRecvReduceInfo>& sendRecvReduceInfo, std::vector<InsQuePtr>& queues, u32 topicId = 0,
     399              :     bool needNetFinAck = true, DmaMode dmaMode = DmaMode::DEFAULT);
     400              : 
     401              : // auxiliary functions
     402              : HcclResult GetDMAMode(const DmaMode setMode, const PortDeploymentType linkPortType, DmaMode& mode);
     403              : bool IsContinuousSlice(const DataSlice& nxtSlice, const DataSlice& currSlice);
     404              : 
     405              : void TransSlice(const LinkData& link, InsQuePtr queue, const SlicePair& txRxSlice, DmaMode dmaMode, bool reduceFlag);
     406              : HcclResult TransSlicesLists(const LinkData& link, InsQuePtr queue, const TransSlicesInfo& slices, DmaMode dmaMode);
     407              : 
     408              : HcclResult WriteSlicesListsWithFin(const LinkData& link, InsQuePtr queue, const TransSlicesInfo& slices, u32 topicId);
     409              : 
     410              : // for high-level wrapper function
     411              : HcclResult ProceedMultiLinks(
     412              :     const std::vector<DataInfo>& dataInfo, const std::vector<InsQuePtr>& queues,
     413              :     const MultiDataLinksDmaModeInfo& dmaModeInfo, std::vector<InsQuePtr>& syncQues, bool& hasDiffDmaMode);
     414              : HcclResult ProceedMultiLinks(
     415              :     const std::vector<DataReduceInfo>& dataInfo, const std::vector<InsQuePtr>& queues,
     416              :     const MultiDataLinksDmaModeInfo& dmaModeInfo, std::vector<InsQuePtr>& syncQues, bool& hasDiffDmaMode);
     417              : } // namespace Hccl
     418              : 
     419              : #endif // !HCCLV2_ALG_DATA_TRANS_WRAPPER
        

Generated by: LCOV version 2.0-1