Browse Source

modify dump bug

pull/1508/head
wqtshg 4 years ago
parent
commit
f95850b434
3 changed files with 32 additions and 8 deletions
  1. +30
    -6
      ge/graph/load/model_manager/data_dumper.cc
  2. +1
    -1
      metadef
  3. +1
    -1
      parser

+ 30
- 6
ge/graph/load/model_manager/data_dumper.cc View File

@@ -309,12 +309,13 @@ Status DataDumper::DumpRefOutput(const DataDumper::InnerDumpInfo &inner_dump_inf
Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task) {
const auto &output_descs = inner_dump_info.op->GetAllOutputsDesc();
const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op);
if (output_descs.size() != output_addrs.size()) {
REPORT_INNER_ERROR("E19999", "output_desc size:%zu != output addr size:%zu in op:%s(%s)",
output_descs.size(), output_addrs.size(),
inner_dump_info.op->GetName().c_str(), inner_dump_info.op->GetType().c_str());
GELOGE(PARAM_INVALID, "Invalid output desc addrs size %zu, op %s has %zu output desc.", output_addrs.size(),
inner_dump_info.op->GetName().c_str(), output_descs.size());
if (output_descs.size() < output_addrs.size()) {
REPORT_INNER_ERROR("E19999", "The size[%zu] of output descs should not less than the size[%zu] of output addrs "
"in op %s(%s).", output_descs.size(), output_addrs.size(), inner_dump_info.op->GetName().c_str(),
inner_dump_info.op->GetType().c_str());
GELOGE(PARAM_INVALID, "The size[%zu] of output descs should not less than the size[%zu] of output addrs in "
"op %s(%s).", output_descs.size(), output_addrs.size(), inner_dump_info.op->GetName().c_str(),
inner_dump_info.op->GetType().c_str());
return PARAM_INVALID;
}
std::vector<int64_t> v_memory_type;
@@ -324,10 +325,33 @@ Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, aicp
inner_dump_info.op->GetName().c_str(), output_descs.size(),
v_memory_type.size());

size_t no_need_dump_output_num = 0;
for (size_t i = 0; i < output_descs.size(); ++i) {
aicpu::dump::Output output;
std::string node_name_index;
const auto &output_desc = output_descs.at(i);
int32_t calc_type = 0;
bool has_calc_type = ge::AttrUtils::GetInt(output_desc, ATTR_NAME_MEMORY_SIZE_CALC_TYPE, calc_type);
if (has_calc_type && (calc_type == static_cast<int32_t>(ge::MemorySizeCalcType::ALWAYS_EMPTY))) {
GELOGD("Node[%s] output[index:%zu] [name:%s] is an optional output, don't need to dump this output.",
inner_dump_info.op->GetName().c_str(), i, output_desc.GetName().c_str());
++no_need_dump_output_num;
continue;
}

if (output_descs.size() - output_addrs.size() < no_need_dump_output_num) {
REPORT_INNER_ERROR("E19999", "The number of output does not match in op:%s(%s). The size[%zu] of output which is "
"no need to dump should not greater than the size[%zu] of output descs minus the size[%zu] of "
"output which is need to dump.", inner_dump_info.op->GetName().c_str(),
inner_dump_info.op->GetType().c_str(), no_need_dump_output_num, output_descs.size(),
output_addrs.size());
GELOGE(PARAM_INVALID, "The number of output does not match in op:%s(%s). The size[%zu] of output which is no need"
" to dump should not greater than the size[%zu] of output descs minus the size[%zu] of output which is "
"need to dump.", inner_dump_info.op->GetName().c_str(), inner_dump_info.op->GetType().c_str(),
no_need_dump_output_num, output_descs.size(), output_addrs.size());
return PARAM_INVALID;
}

// check dump output tensor desc is redirected by attr ATTR_DATA_DUMP_REF
if (AttrUtils::GetStr(&output_desc, ATTR_DATA_DUMP_REF, node_name_index)) {
GE_CHK_STATUS_RET(DumpRefOutput(inner_dump_info, output, i, node_name_index), "DumpRefOutput failed");


+ 1
- 1
metadef

@@ -1 +1 @@
Subproject commit fcebf37d7428caf4e0bd6e6c3a4f8143f6eac8b7
Subproject commit 366b15574218befa11454311879a4f436eeb67a9

+ 1
- 1
parser

@@ -1 +1 @@
Subproject commit 424ac0609fe17f455865436462a2c62f85aea2b1
Subproject commit d744541c6ca7f6966c1befacc9f83f53b0829e0a

Loading…
Cancel
Save