Browse Source

!1576 profiling report data add lock

From: @zhengyuanhua
Reviewed-by: @xchu42,@wqtshg,@ji_chen
Signed-off-by: @ji_chen
tags/v1.3.0
mindspore-ci-bot Gitee 3 years ago
parent
commit
50562f39b8
6 changed files with 28 additions and 7 deletions
  1. +2
    -1
      ge/common/profiling/profiling_manager.cc
  2. +1
    -0
      ge/common/profiling/profiling_manager.h
  3. +3
    -5
      ge/ir_build/option_utils.cc
  4. +1
    -0
      inc/external/ge/ge_api_types.h
  5. +15
    -1
      tests/ut/ge/graph_ir/ge_ir_build_unittest.cc
  6. +6
    -0
      tests/ut/ge/profiling/ge_profiling_manager_unittest.cc

+ 2
- 1
ge/common/profiling/profiling_manager.cc View File

@@ -355,6 +355,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::ReportDa
reporter_data.deviceId = device_id;
ret = memcpy_s(reporter_data.tag, MSPROF_ENGINE_MAX_TAG_LEN + 1, tag_name.c_str(), tag_name.size());
GE_IF_BOOL_EXEC(ret != EOK, GELOGE(ret, "Report data tag [%s] memcpy error!", tag_name.c_str()); return;);
std::lock_guard<std::mutex> lock(mutex_report_);
for (size_t i = 0; i < index; ++i) {
reporter_data.data = (unsigned char *)data.c_str() + report_max_len * i;
reporter_data.dataLen = report_max_len;
@@ -375,7 +376,7 @@ FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY void ProfilingManager::ReportDa
reporter_data.dataLen = data.size();
ret = memcpy_s(reporter_data.tag, MSPROF_ENGINE_MAX_TAG_LEN + 1, tag_name.c_str(), tag_name.size());
GE_IF_BOOL_EXEC(ret != EOK, GELOGE(ret, "Report data tag [%s] memcpy error!", tag_name.c_str()); return;);
std::lock_guard<std::mutex> lock(mutex_report_);
cb_ret = CallMsprofReport(reporter_data);
GE_IF_BOOL_EXEC(cb_ret != 0, GELOGE(cb_ret, "Reporter data [%s] failed, ret:%d", tag_name.c_str(), cb_ret);
return;);


+ 1
- 0
ge/common/profiling/profiling_manager.h View File

@@ -118,6 +118,7 @@ class FMK_FUNC_HOST_VISIBILITY FMK_FUNC_DEV_VISIBILITY ProfilingManager {
map<uint32_t, DeviceSubsInfo> subs_dev_module_; // key: device_id, value: profiling on module
uint32_t subscribe_count_;
std::mutex mutex_;
std::mutex mutex_report_;
MsprofCallback prof_cb_;
std::string fp_point_;
std::string bp_point_;


+ 3
- 5
ge/ir_build/option_utils.cc View File

@@ -523,11 +523,9 @@ Status CheckDynamicInputParamValid(string &dynamic_batch_size, string &dynamic_i
}

if (!dynamic_batch_size.empty()) {
if (input_shape_range.find(":") != string::npos) {
if (!CheckDynamicBatchSizeInputShapeValid(shape_map, dynamic_batch_size)) {
GELOGE(ge::PARAM_INVALID, "[Check][DynamicBatchSizeInputShape] input_shape: %s invalid.", input_shape.c_str());
return ge::PARAM_INVALID;
}
if (!CheckDynamicBatchSizeInputShapeValid(shape_map, dynamic_batch_size)) {
GELOGE(ge::PARAM_INVALID, "[Check][DynamicBatchSizeInputShape] input_shape: %s invalid.", input_shape.c_str());
return ge::PARAM_INVALID;
}
}



+ 1
- 0
inc/external/ge/ge_api_types.h View File

@@ -361,6 +361,7 @@ using RunAsyncCallback = std::function<void(Status, std::vector<ge::OutputTensor
namespace ir_option {
static const char *const INPUT_FORMAT = "input_format";
static const char *const INPUT_SHAPE = "input_shape";
static const char *const INPUT_SHAPE_RANGE = ge::INPUT_SHAPE_RANGE;
static const char *const OP_NAME_MAP = "op_name_map";
static const char *const IS_DYNAMIC_INPUT = "is_dynamic_input";
static const char *const IS_INPUT_ADJUST_HW_LAYOUT = "is_input_adjust_hw_layout";


+ 15
- 1
tests/ut/ge/graph_ir/ge_ir_build_unittest.cc View File

@@ -163,7 +163,7 @@ TEST(UtestIrCommon, check_dynamic_input_param_succ) {
string dynamic_batch_size = "1";
string dynamic_image_size;
string dynamic_dims;
string input_shape = "data:1,3,244,244";
string input_shape = "data:-1,3,244,244";
string input_shape_range;
string input_format = "NCHW";
bool is_dynamic_input = false;
@@ -173,6 +173,20 @@ TEST(UtestIrCommon, check_dynamic_input_param_succ) {
EXPECT_EQ(ret, ge::SUCCESS);
}

TEST(UtestIrCommon, check_dynamic_input_param_failed) {
string dynamic_batch_size = "1";
string dynamic_image_size;
string dynamic_dims;
string input_shape = "data:1,3,244,244";
string input_shape_range;
string input_format = "NCHW";
bool is_dynamic_input = false;

Status ret = CheckDynamicInputParamValid(dynamic_batch_size, dynamic_image_size, dynamic_dims,
input_shape, input_shape_range, input_format,is_dynamic_input);
EXPECT_EQ(ret, ge::PARAM_INVALID);
}

TEST(UtestIrCommon, check_compress_weight) {
std::string enable_compress_weight = "true";
std::string compress_weight_conf="./";


+ 6
- 0
tests/ut/ge/profiling/ge_profiling_manager_unittest.cc View File

@@ -78,3 +78,9 @@ TEST_F(UtestGeProfilinganager, plungin_init_) {
EXPECT_EQ(ret, INTERNAL_ERROR);
ProfilingManager::Instance().prof_cb_.msprofReporterCallback = nullptr;
}

TEST_F(UtestGeProfilinganager, report_data_) {
std::string data = "ge is better than tensorflow.";
std::string tag_name = "fmk";
ProfilingManager::Instance().ReportData(0, data, tag_name);
}

Loading…
Cancel
Save