* 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.
*/
#ifndef INC_EXTERNAL_GE_GE_PROF_H_
#define INC_EXTERNAL_GE_GE_PROF_H_
#if (defined(_WIN32) || defined(_WIN64) || defined(_MSC_VER))
#define MSVP_PROF_API __declspec(dllexport)
#else
#define MSVP_PROF_API __attribute__((visibility("default")))
#endif
#include <map>
#include <string>
#include <vector>
#include "ge_common/ge_api_error_codes.h"
namespace ge {
enum ProfDataTypeConfig {
kProfTaskTime = 0x0002,
kProfAiCoreMetrics = 0x0004,
kProfAicpu = 0x0008,
kProfL2cache = 0x0010,
kProfHccl = 0x0020,
kProfTrainingTrace = 0x0040,
kProfFwkScheduleL0 = 0x0200,
kProfTaskTimeL0 = 0x0800,
kProfTaskTimeL2 = 0x2000,
kProfFwkScheduleL1 = 0x01000000,
};
enum ProfilingAicoreMetrics {
kAicoreArithmeticUtilization = 0,
kAicorePipeUtilization = 1,
kAicoreMemory = 2,
kAicoreMemoryL0 = 3,
kAicoreResourceConflictRatio = 4,
kAicoreMemoryUB = 5,
kAicoreL2Cache = 6,
kAicorePipelineExecuteUtilization = 7
};
using ProfAicoreEvents = struct ProfAicoreEvents;
using aclgrphProfConfig = struct aclgrphProfConfig;
* @ingroup AscendCL
* @brief Initialize the profiling and set profiling configuration path
* @param [in] profiler_path: configuration path of profiling
* @param [in] length: length of configuration path
* @return Status result of function
*/
MSVP_PROF_API Status aclgrphProfInit(const char *profiler_path, uint32_t length);
* @ingroup AscendCL
* @brief Finalize profiling
* @return Status result of function
*/
MSVP_PROF_API Status aclgrphProfFinalize();
* @ingroup AscendCL
* @brief Create data of type aclgrphProfConfig
* @param [in] deviceid_list: device id list
* @param [in] device_nums: device numbers
* @param [in] aicore_metrics: type of aicore metrics
* @param [in] aicore_events: pointer to aicore events be reserved, only support NULL now
* @param [in] data_type_config: modules need profiling
* @return Status result of function
*/
MSVP_PROF_API aclgrphProfConfig *aclgrphProfCreateConfig(uint32_t *deviceid_list, uint32_t device_nums,
ProfilingAicoreMetrics aicore_metrics, ProfAicoreEvents *aicore_events, uint64_t data_type_config);
* @ingroup AscendCL
* @brief Destroy data of type aclgrphProfConfig
* @param [in] profiler_config: config of profiling
* @return Status result of function
*/
MSVP_PROF_API Status aclgrphProfDestroyConfig(aclgrphProfConfig *profiler_config);
* @ingroup AscendCL
* @brief Start profiling of modules which is configured by profiler config
* @param [in] profiler_config: config of profiling
* @return Status result of function
*/
MSVP_PROF_API Status aclgrphProfStart(aclgrphProfConfig *profiler_config);
* @ingroup AscendCL
* @brief Stop profiling of modules which is configured by profiler config
* @param [in] profiler_config: config of profiling
* @return Status result of function
*/
MSVP_PROF_API Status aclgrphProfStop(aclgrphProfConfig *profiler_config);
}
#endif