* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
* \file mc2_tiling_struct.h
* \brief
*/
#ifndef MC2_TILING_STRUCT_H
#define MC2_TILING_STRUCT_H
#include "kernel_tiling/kernel_tiling.h"
namespace Mc2Tiling {
constexpr uint8_t COMM_ALG_DEFAULT = 0;
constexpr uint8_t COMM_ALG_FULL_MESH = 1;
constexpr uint8_t COMM_ALG_DOUBLE_RING = 2;
constexpr uint8_t COMM_ALG_SWITCH_WING = 3;
constexpr uint32_t DOUBLE_RING_FACTOR = 2;
constexpr int64_t KVALUE_MIN = 256;
constexpr int64_t KVALUE_MAX = 65535;
struct MC2ServerCfg {
uint32_t verseion;
uint8_t debugMode;
uint8_t sendArgIndex;
uint8_t recvArgIndex;
uint8_t commOutArgIndex;
uint8_t reserved[8];
};
struct MC2HcommCfg {
uint8_t skipLocalRankCopy;
uint8_t skipBufferWindowCopy;
uint8_t stepSize;
char reserved[13];
char groupName[128];
char algConfig[128];
uint32_t opType;
uint32_t reduceType;
uint32_t srcDataType;
uint32_t dstDataType;
};
struct Mc2Msg {
uint32_t preparePosition;
uint64_t sendOff;
uint64_t recvOff;
uint64_t tailSendOff;
uint64_t tailRecvOff;
uint64_t sendCnt;
uint64_t recvCnt;
uint64_t tailSendCnt;
uint64_t tailRecvCnt;
uint64_t totalCnt;
uint32_t turnNum;
uint32_t tailNum;
uint32_t stride;
uint32_t workspaceOff;
uint32_t notifyOff;
uint16_t notifyBeginCnt;
uint16_t notifyEndCnt;
uint8_t useBufferType;
uint8_t funID;
uint8_t dataType;
uint8_t groupNum;
uint8_t reuseMode;
uint8_t commType;
uint8_t reduceOp;
uint8_t commOrder;
uint8_t waitPolicy;
uint8_t rspPolicy;
uint8_t exitPolicy;
uint8_t commAlg;
uint8_t taskType;
uint8_t debugMode;
uint8_t stepSize;
uint8_t sendArgIndex;
uint8_t recvArgIndex;
uint8_t commOutArgIndex;
uint8_t hasCommOut;
uint8_t reserve;
uint32_t reserve2;
};
struct RCSTiling {
uint32_t rankDim;
uint32_t rankID;
uint32_t commtype;
uint32_t subtype;
uint32_t tileCnt;
uint32_t tailM;
uint32_t tailCnt;
uint32_t biasLen;
uint32_t isAdd;
uint32_t rankM;
uint32_t rankN;
uint32_t rankK;
uint32_t gatherIndex;
uint32_t isTransposeA;
uint32_t isTransposeB;
uint32_t storageGather;
uint64_t nd2NzWorkLen;
uint64_t cToFloatLen;
uint64_t gatherLen;
uint32_t workspaceAddr4;
uint32_t aicCoreNum;
uint32_t needUbBuffer;
uint32_t addX3UbCnt;
uint32_t commWorkSpaceSize;
uint32_t isInputCommQuantScale;
uint32_t dataType;
uint32_t commInt8WorkSpace;
uint32_t dynamicQuantTempBuffSize;
};
struct TileL2Tiling {
uint32_t mL2TileCnt;
uint32_t nL2TileCnt;
uint32_t mTileBlocks;
uint32_t nTileBlocks;
uint32_t mTailBlocks;
uint32_t nTailBlocks;
uint32_t rankTileNum;
uint32_t calcOrder;
uint32_t enableL2Tile;
};
struct TileInfo {
uint32_t mTailCnt;
uint32_t nTailCnt;
uint32_t kTailCnt;
uint32_t isHf32;
};
struct MC2MatmulV3TilingData {
TCubeTiling matmulTiling;
uint32_t mTailCnt;
uint32_t nTailCnt;
uint32_t kTailCnt;
uint32_t mBaseTailSplitCnt;
uint32_t nBaseTailSplitCnt;
uint32_t mTailMain;
uint32_t nTailMain;
uint32_t isHf32;
uint32_t aswWindowLen;
};
}
#endif