* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This file is part of the MindStudio project.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* 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 FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* -------------------------------------------------------------------------*/
#ifndef ANALYSIS_PARSER_HOST_CANN_ADDITION_INFO_PARSER_H
#define ANALYSIS_PARSER_HOST_CANN_ADDITION_INFO_PARSER_H
#include <string>
#include <vector>
#include "analysis/csrc/domain/services/parser/host/base_parser.h"
#include "analysis/csrc/infrastructure/utils/prof_common.h"
namespace Analysis {
namespace Domain {
namespace Host {
namespace Cann {
class AdditionInfoParser : public BaseParser<AdditionInfoParser> {
public:
explicit AdditionInfoParser(const std::string &path, const std::string &parserName)
: BaseParser(path, parserName) {}
void Init(const std::vector<std::string> &filePrefix);
template<typename T> std::vector<std::shared_ptr<T>> GetData();
protected:
int ProduceData() override;
protected:
std::vector<std::shared_ptr<MsprofAdditionalInfo>> additionalData_;
std::vector<std::shared_ptr<ConcatTensorInfo>> concatTensorData_;
};
class CtxIdParser final : public AdditionInfoParser {
public:
explicit CtxIdParser(const std::string &path) : AdditionInfoParser(path, "CtxIdParser")
{
Init(filePrefix_);
}
private:
std::vector<std::string> filePrefix_ = {
"unaging.additional.context_id_info.slice",
"aging.additional.context_id_info.slice",
};
};
class FusionOpInfoParser final : public AdditionInfoParser {
public:
explicit FusionOpInfoParser(const std::string &path) : AdditionInfoParser(path, "FusionOpInfoParser")
{
Init(filePrefix_);
}
private:
std::vector<std::string> filePrefix_ = {
"unaging.additional.fusion_op_info.slice",
"aging.additional.fusion_op_info.slice",
};
};
class GraphIdParser final : public AdditionInfoParser {
public:
explicit GraphIdParser(const std::string &path) : AdditionInfoParser(path, "GraphIdParser")
{
Init(filePrefix_);
}
private:
std::vector<std::string> filePrefix_ = {
"unaging.additional.graph_id_map.slice",
"aging.additional.graph_id_map.slice",
};
};
class TensorInfoParser final : public AdditionInfoParser {
public:
explicit TensorInfoParser(const std::string &path) : AdditionInfoParser(path, "TensorInfoParser")
{
Init(filePrefix_);
}
private:
int ProduceData() override;
private:
std::vector<std::string> filePrefix_ = {
"unaging.additional.tensor_info.slice",
"aging.additional.tensor_info.slice",
};
};
class HcclInfoParser final : public AdditionInfoParser {
public:
explicit HcclInfoParser(const std::string &path) : AdditionInfoParser(path, "HcclInfoParser")
{
Init(filePrefix_);
}
private:
std::vector<std::string> filePrefix_ = {
"unaging.additional.hccl_info.slice",
"aging.additional.hccl_info.slice",
};
};
class MemoryApplicationParser final : public AdditionInfoParser {
public:
explicit MemoryApplicationParser(const std::string &path) : AdditionInfoParser(path, "MemoryApplicationParser")
{
Init(filePrefix_);
}
private:
std::vector<std::string> filePrefix_ = {
"unaging.additional.memory_application.slice",
"aging.additional.memory_application.slice",
};
};
class MultiThreadParser final : public AdditionInfoParser {
public:
explicit MultiThreadParser(const std::string &path) : AdditionInfoParser(path, "MultiThreadParser")
{
Init(filePrefix_);
}
private:
std::vector<std::string> filePrefix_ = {
"unaging.additional.Multi_Thread.slice",
"aging.additional.Multi_Thread.slice",
};
};
}
}
}
}
#endif