diff --git a/torch_npu/csrc/profiler/profiler_mgr.cpp b/torch_npu/csrc/profiler/profiler_mgr.cpp index f3bf158a1428a75c35c64d1d9ebb535693301dcb..3ea5a207c8d207f88b6fb37b36aaf5551b6a40ca 100644 --- a/torch_npu/csrc/profiler/profiler_mgr.cpp +++ b/torch_npu/csrc/profiler/profiler_mgr.cpp @@ -6,6 +6,9 @@ #include "torch_npu/csrc/toolkit/profiler/common/utils.h" #include "torch_npu/csrc/core/npu/NPUFunctions.h" #include "torch_npu/csrc/profiler/feature_mgr.h" +#include +#include +#include namespace torch_npu { namespace profiler { @@ -42,22 +45,38 @@ void ProfilerMgr::Init(const std::string &path, bool npu_trace) { if (npu_trace == true) { at_npu::native::AclProfilingInit(path.c_str(), path.size()); npu_trace_.store(true); + // 获取当前时间点 + auto timeStamp = std::chrono::system_clock::now(); + // 转换为微秒 + auto targetTime = std::chrono::duration_cast(timeStamp.time_since_epoch()).count(); + ASCEND_LOGE("FeatureMgr::GetInstance()->Init() begin, pid:", getpid(), " time: ", targetTime); FeatureMgr::GetInstance()->Init(); + timeStamp = std::chrono::system_clock::now(); + targetTime = std::chrono::duration_cast(timeStamp.time_since_epoch()).count(); + ASCEND_LOGE("FeatureMgr::GetInstance()->Init() end, pid:", getpid(), " time: ", targetTime); } path_ = path; } void ProfilerMgr::EnableMsProfiler(uint32_t *deviceIdList, uint32_t deviceNum, aclprofAicoreMetrics aicMetrics, uint64_t dataTypeConfig) { - profConfig_ = at_npu::native::AclProfilingCreateConfig(deviceIdList, deviceNum, aicMetrics, nullptr, dataTypeConfig); - if (profConfig_ == nullptr) { - NPU_LOGE("Create Prof Config failed."); - return; - } - auto ret = at_npu::native::AclProfilingStart(profConfig_); - if (ret != ACL_ERROR_NONE) { - NPU_LOGE("Profiling start failed."); - return; - } + profConfig_ = at_npu::native::AclProfilingCreateConfig(deviceIdList, deviceNum, aicMetrics, nullptr, dataTypeConfig); + if (profConfig_ == nullptr) { + NPU_LOGE("Create Prof Config failed."); + return; + } + // 获取当前时间点 + auto timeStamp = std::chrono::system_clock::now(); + // 转换为微秒 + auto targetTime = std::chrono::duration_cast(timeStamp.time_since_epoch()).count(); + ASCEND_LOGE("ProfilerMgr::EnableMsProfiler begin, pid:", getpid(), " time: ", targetTime); + auto ret = at_npu::native::AclProfilingStart(profConfig_); + timeStamp = std::chrono::system_clock::now(); + targetTime = std::chrono::duration_cast(timeStamp.time_since_epoch()).count(); + ASCEND_LOGE("ProfilerMgr::EnableMsProfiler end, pid:", getpid(), " time: ", targetTime); + if (ret != ACL_ERROR_NONE) { + NPU_LOGE("Profiling start failed."); + return; + } } void ProfilerMgr::Start(const NpuTraceConfig &npu_config, bool cpu_trace) { diff --git a/torch_npu/profiler/profiler_interface.py b/torch_npu/profiler/profiler_interface.py index 9182f9f7445d7a7a6962e284bc60ab448354b640..57c28eb8307fb3c75b8519ddf97c5662864fda5b 100644 --- a/torch_npu/profiler/profiler_interface.py +++ b/torch_npu/profiler/profiler_interface.py @@ -16,7 +16,8 @@ import os import time from typing import Optional, Iterable, Callable, Dict - +import datetime +import pytz import torch from torch_npu._C._profiler import ( ProfilerActivity, @@ -81,11 +82,16 @@ class ProfInterface: _lazy_init() def init_trace(self): + tz = pytz.timezone('Asia/Hong_Kong') + print("init start, pid: ", os.getpid(), " time: ", datetime.datetime.now(tz)) ProfPathCreator().create_prof_dir() self.prof_path = ProfPathCreator().get_prof_dir() _init_profiler(self.prof_path, self.activities) + print("init end, pid: ", os.getpid(), " time: ", datetime.datetime.now(tz)) def start_trace(self): + tz = pytz.timezone('Asia/Hong_Kong') + print("start start, pid: ", os.getpid(), " time: ", datetime.datetime.now(tz)) prof_config = [self.prof_path, self.record_shapes, self.profile_memory, self.with_stack, self.with_flops, self.with_modules, self.experimental_config()] npu_prof_config = NpuProfilerConfig(*tuple(prof_config)) @@ -96,6 +102,7 @@ class ProfInterface: self.start_monotonic = _get_monotonic() _start_profiler(npu_prof_config, self.activities) self.start_gc_detect() + print("start end, pid: ", os.getpid(), " time: ", datetime.datetime.now(tz)) def stop_trace(self): _stop_profiler()