Browse Source

!1680 check field whether exist when parse profiling json

From: @zhengyuanhua
Reviewed-by: @wqtshg,@ji_chen
Signed-off-by: @ji_chen
tags/v1.3.0
mindspore-ci-bot Gitee 3 years ago
parent
commit
f18934c067
2 changed files with 50 additions and 9 deletions
  1. +16
    -7
      ge/common/profiling/profiling_manager.cc
  2. +34
    -2
      tests/ut/ge/profiling/ge_profiling_manager_unittest.cc

+ 16
- 7
ge/common/profiling/profiling_manager.cc View File

@@ -184,7 +184,10 @@ ge::Status ProfilingManager::ParseOptions(const std::string &options) {
if (options.find(kTrainingTrace) == std::string::npos) { if (options.find(kTrainingTrace) == std::string::npos) {
return ge::SUCCESS; return ge::SUCCESS;
} }
const std::string training_trace = prof_options[kTrainingTrace];
std::string training_trace;
if (prof_options.contains(kTrainingTrace)) {
training_trace = prof_options[kTrainingTrace];
}
if (training_trace.empty()) { if (training_trace.empty()) {
GELOGI("Training trace will not take effect."); GELOGI("Training trace will not take effect.");
return ge::SUCCESS; return ge::SUCCESS;
@@ -196,8 +199,12 @@ ge::Status ProfilingManager::ParseOptions(const std::string &options) {
REPORT_INNER_ERROR("E19999", "Training trace param:%s is invalid.", training_trace.c_str()); REPORT_INNER_ERROR("E19999", "Training trace param:%s is invalid.", training_trace.c_str());
return ge::PARAM_INVALID; return ge::PARAM_INVALID;
} }
fp_point_ = prof_options[kFpPoint];
bp_point_ = prof_options[kBpPoint];
if (prof_options.contains(kFpPoint)) {
fp_point_ = prof_options[kFpPoint];
}
if (prof_options.contains(kBpPoint)) {
bp_point_ = prof_options[kBpPoint];
}
if (!fp_point_.empty() && !bp_point_.empty()) { if (!fp_point_.empty() && !bp_point_.empty()) {
GELOGI("Training trace bp fp is set, bp_point:%s, fp_point:%s.", bp_point_.c_str(), fp_point_.c_str()); GELOGI("Training trace bp fp is set, bp_point:%s, fp_point:%s.", bp_point_.c_str(), fp_point_.c_str());
} }
@@ -1014,10 +1021,12 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::GetFpBpP
if (is_profiling_valid) { if (is_profiling_valid) {
try { try {
Json prof_options = Json::parse(profiling_options); Json prof_options = Json::parse(profiling_options);

fp_point_ = prof_options[kFpPoint];
bp_point_ = prof_options[kBpPoint];

if (prof_options.contains(kFpPoint)) {
fp_point_ = prof_options[kFpPoint];
}
if (prof_options.contains(kBpPoint)) {
bp_point_ = prof_options[kBpPoint];
}
fp_point = fp_point_; fp_point = fp_point_;
bp_point = bp_point_; bp_point = bp_point_;
if (!fp_point_.empty() && !bp_point_.empty()) { if (!fp_point_.empty() && !bp_point_.empty()) {


+ 34
- 2
tests/ut/ge/profiling/ge_profiling_manager_unittest.cc View File

@@ -24,6 +24,7 @@
#define protected public #define protected public
#define private public #define private public
#include "common/profiling/profiling_manager.h" #include "common/profiling/profiling_manager.h"
#include "graph/ge_local_context.h"
#undef protected #undef protected
#undef private #undef private


@@ -64,11 +65,12 @@ TEST_F(UtestGeProfilinganager, ParseOptions) {
options.profiling_mode = "1"; options.profiling_mode = "1";
options.profiling_options = R"({"result_path":"/data/profiling","training_trace":"on","task_trace":"on","aicpu_trace":"on","fp_point":"Data_0","bp_point":"addn","ai_core_metrics":"ResourceConflictRatio"})"; options.profiling_options = R"({"result_path":"/data/profiling","training_trace":"on","task_trace":"on","aicpu_trace":"on","fp_point":"Data_0","bp_point":"addn","ai_core_metrics":"ResourceConflictRatio"})";



struct MsprofGeOptions prof_conf = {{ 0 }}; struct MsprofGeOptions prof_conf = {{ 0 }};

Status ret = ProfilingManager::Instance().ParseOptions(options.profiling_options); Status ret = ProfilingManager::Instance().ParseOptions(options.profiling_options);
EXPECT_EQ(ret, ge::SUCCESS); EXPECT_EQ(ret, ge::SUCCESS);
EXPECT_EQ(ProfilingManager::Instance().is_training_trace_, true);
EXPECT_EQ(ProfilingManager::Instance().fp_point_, "Data_0");
EXPECT_EQ(ProfilingManager::Instance().bp_point_, "addn");
} }


TEST_F(UtestGeProfilinganager, plungin_init_) { TEST_F(UtestGeProfilinganager, plungin_init_) {
@@ -83,4 +85,34 @@ TEST_F(UtestGeProfilinganager, report_data_) {
std::string data = "ge is better than tensorflow."; std::string data = "ge is better than tensorflow.";
std::string tag_name = "fmk"; std::string tag_name = "fmk";
ProfilingManager::Instance().ReportData(0, data, tag_name); ProfilingManager::Instance().ReportData(0, data, tag_name);
}

TEST_F(UtestGeProfilinganager, get_fp_bp_point_) {
map<std::string, string> options_map = {
{OPTION_EXEC_PROFILING_OPTIONS,
R"({"result_path":"/data/profiling","training_trace":"on","task_trace":"on","aicpu_trace":"on","fp_point":"Data_0","bp_point":"addn","ai_core_metrics":"ResourceConflictRatio"})"}};
GEThreadLocalContext &context = GetThreadLocalContext();
context.SetGraphOption(options_map);

std::string fp_point;
std::string bp_point;
ProfilingManager::Instance().GetFpBpPoint(fp_point, bp_point);
EXPECT_EQ(fp_point, "Data_0");
EXPECT_EQ(bp_point, "addn");
}

TEST_F(UtestGeProfilinganager, get_fp_bp_point_empty) {
// fp bp empty
map<std::string, string> options_map = {
{ OPTION_EXEC_PROFILING_OPTIONS,
R"({"result_path":"/data/profiling","training_trace":"on","task_trace":"on","aicpu_trace":"on","ai_core_metrics":"ResourceConflictRatio"})"}};
GEThreadLocalContext &context = GetThreadLocalContext();
context.SetGraphOption(options_map);
std::string fp_point = "fp";
std::string bp_point = "bp";
ProfilingManager::Instance().bp_point_ = "";
ProfilingManager::Instance().fp_point_ = "";
ProfilingManager::Instance().GetFpBpPoint(fp_point, bp_point);
EXPECT_EQ(fp_point, "");
EXPECT_EQ(bp_point, "");
} }

Loading…
Cancel
Save