Browse Source

Pre Merge pull request !1593 from 赵之轩/my_dev2

pull/1593/MERGE
赵之轩 Gitee 4 years ago
parent
commit
91f4d1de0b
15 changed files with 81 additions and 78 deletions
  1. +1
    -1
      ge/CMakeLists.txt
  2. +10
    -10
      ge/common/dump/dump_op.cc
  3. +5
    -5
      ge/common/dump/dump_op.h
  4. +1
    -1
      ge/common/proto/op_mapping.proto
  5. +1
    -1
      ge/executor/CMakeLists.txt
  6. +1
    -1
      ge/executor/module.mk
  7. +1
    -1
      ge/executor/proto/dump_task.proto
  8. +1
    -1
      ge/executor/proto/op_mapping.proto
  9. +2
    -2
      ge/ge_inference.mk
  10. +1
    -1
      ge/ge_runner.mk
  11. +38
    -36
      ge/graph/load/model_manager/data_dumper.cc
  12. +16
    -15
      ge/graph/load/model_manager/data_dumper.h
  13. +1
    -1
      ge/proto/dump_task.proto
  14. +1
    -1
      ge/proto/op_mapping.proto
  15. +1
    -1
      tests/ut/ge/CMakeLists.txt

+ 1
- 1
ge/CMakeLists.txt View File

@@ -25,7 +25,7 @@ set(PROTO_HEADER_LIST
"${METADEF_DIR}/proto/insert_op.proto" "${METADEF_DIR}/proto/insert_op.proto"
"${METADEF_DIR}/proto/ge_ir.proto" "${METADEF_DIR}/proto/ge_ir.proto"
"${METADEF_DIR}/proto/fwk_adapter.proto" "${METADEF_DIR}/proto/fwk_adapter.proto"
"${METADEF_DIR}/proto/op_mapping_info.proto"
"${METADEF_DIR}/proto/op_mapping.proto"
) )


protobuf_generate(ge PROTO_SRCS PROTO_HDRS ${PROTO_LIST}) protobuf_generate(ge PROTO_SRCS PROTO_HDRS ${PROTO_LIST})


+ 10
- 10
ge/common/dump/dump_op.cc View File

@@ -26,7 +26,7 @@
#include "graph/op_desc.h" #include "graph/op_desc.h"
#include "graph/utils/tensor_utils.h" #include "graph/utils/tensor_utils.h"
#include "proto/ge_ir.pb.h" #include "proto/ge_ir.pb.h"
#include "proto/op_mapping_info.pb.h"
#include "proto/op_mapping.pb.h"
#include "runtime/mem.h" #include "runtime/mem.h"
#include "aicpu/common/aicpu_task_struct.h" #include "aicpu/common/aicpu_task_struct.h"


@@ -64,7 +64,7 @@ void DumpOp::SetDynamicModelInfo(const string &dynamic_model_name, const string
} }


static void SetOpMappingLoopAddr(uintptr_t step_id, uintptr_t loop_per_iter, uintptr_t loop_cond, static void SetOpMappingLoopAddr(uintptr_t step_id, uintptr_t loop_per_iter, uintptr_t loop_cond,
aicpu::dump::OpMappingInfo &op_mapping_info) {
toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
if (step_id != 0) { if (step_id != 0) {
GELOGI("step_id exists."); GELOGI("step_id exists.");
op_mapping_info.set_step_id_addr(static_cast<uint64_t>(step_id)); op_mapping_info.set_step_id_addr(static_cast<uint64_t>(step_id));
@@ -87,11 +87,11 @@ static void SetOpMappingLoopAddr(uintptr_t step_id, uintptr_t loop_per_iter, uin
} }
} }


Status DumpOp::DumpOutput(aicpu::dump::Task &task) {
Status DumpOp::DumpOutput(toolkit::aicpu::dump::Task &task) {
GELOGI("Start dump output in Launch dump op"); GELOGI("Start dump output in Launch dump op");
const auto &output_descs = op_desc_->GetAllOutputsDesc(); const auto &output_descs = op_desc_->GetAllOutputsDesc();
for (size_t i = 0; i < output_descs.size(); ++i) { for (size_t i = 0; i < output_descs.size(); ++i) {
aicpu::dump::Output output;
toolkit::aicpu::dump::Output output;
output.set_data_type(static_cast<int32_t>(DataTypeUtil::GetIrDataType(output_descs.at(i).GetDataType()))); output.set_data_type(static_cast<int32_t>(DataTypeUtil::GetIrDataType(output_descs.at(i).GetDataType())));
output.set_format(static_cast<int32_t>(output_descs.at(i).GetFormat())); output.set_format(static_cast<int32_t>(output_descs.at(i).GetFormat()));
for (auto dim : output_descs.at(i).GetShape().GetDims()) { for (auto dim : output_descs.at(i).GetShape().GetDims()) {
@@ -113,11 +113,11 @@ Status DumpOp::DumpOutput(aicpu::dump::Task &task) {
return SUCCESS; return SUCCESS;
} }


Status DumpOp::DumpInput(aicpu::dump::Task &task) {
Status DumpOp::DumpInput(toolkit::aicpu::dump::Task &task) {
GELOGI("Start dump input in Launch dump op"); GELOGI("Start dump input in Launch dump op");
const auto &input_descs = op_desc_->GetAllInputsDesc(); const auto &input_descs = op_desc_->GetAllInputsDesc();
for (size_t i = 0; i < input_descs.size(); ++i) { for (size_t i = 0; i < input_descs.size(); ++i) {
aicpu::dump::Input input;
toolkit::aicpu::dump::Input input;
input.set_data_type(static_cast<int32_t>(DataTypeUtil::GetIrDataType(input_descs.at(i).GetDataType()))); input.set_data_type(static_cast<int32_t>(DataTypeUtil::GetIrDataType(input_descs.at(i).GetDataType())));
input.set_format(static_cast<int32_t>(input_descs.at(i).GetFormat())); input.set_format(static_cast<int32_t>(input_descs.at(i).GetFormat()));


@@ -149,7 +149,7 @@ void DumpOp::SetDumpInfo(const DumpProperties &dump_properties, const OpDescPtr
stream_ = stream; stream_ = stream;
} }


Status DumpOp::ExecutorDumpOp(aicpu::dump::OpMappingInfo &op_mapping_info) {
Status DumpOp::ExecutorDumpOp(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
std::string proto_msg; std::string proto_msg;
size_t proto_size = op_mapping_info.ByteSizeLong(); size_t proto_size = op_mapping_info.ByteSizeLong();
bool ret = op_mapping_info.SerializeToString(&proto_msg); bool ret = op_mapping_info.SerializeToString(&proto_msg);
@@ -203,7 +203,7 @@ Status DumpOp::ExecutorDumpOp(aicpu::dump::OpMappingInfo &op_mapping_info) {
return SUCCESS; return SUCCESS;
} }


Status DumpOp::SetDumpModelName(aicpu::dump::OpMappingInfo &op_mapping_info) {
Status DumpOp::SetDumpModelName(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
if (dynamic_model_name_.empty() && dynamic_om_name_.empty()) { if (dynamic_model_name_.empty() && dynamic_om_name_.empty()) {
GELOGI("Single op dump, no need set model name"); GELOGI("Single op dump, no need set model name");
return SUCCESS; return SUCCESS;
@@ -242,7 +242,7 @@ Status DumpOp::LaunchDumpOp() {
device_id); device_id);
return ACL_ERROR_GE_INTERNAL_ERROR; return ACL_ERROR_GE_INTERNAL_ERROR;
} }
aicpu::dump::OpMappingInfo op_mapping_info;
toolkit::aicpu::dump::OpMappingInfo op_mapping_info;
auto dump_path = dump_properties_.GetDumpPath() + std::to_string(device_id) + "/"; auto dump_path = dump_properties_.GetDumpPath() + std::to_string(device_id) + "/";
op_mapping_info.set_dump_path(dump_path); op_mapping_info.set_dump_path(dump_path);
op_mapping_info.set_flag(kAicpuLoadFlag); op_mapping_info.set_flag(kAicpuLoadFlag);
@@ -261,7 +261,7 @@ Status DumpOp::LaunchDumpOp() {
if (rt_ret != RT_ERROR_NONE) { if (rt_ret != RT_ERROR_NONE) {
GELOGW("call rtGetTaskIdAndStreamID failed, ret = 0x%X", rt_ret); GELOGW("call rtGetTaskIdAndStreamID failed, ret = 0x%X", rt_ret);
} }
aicpu::dump::Task task;
toolkit::aicpu::dump::Task task;
task.set_task_id(task_id); task.set_task_id(task_id);
task.set_stream_id(stream_id); task.set_stream_id(stream_id);
task.mutable_op()->set_op_name(op_desc_->GetName()); task.mutable_op()->set_op_name(op_desc_->GetName());


+ 5
- 5
ge/common/dump/dump_op.h View File

@@ -21,7 +21,7 @@


#include "common/ge_inner_error_codes.h" #include "common/ge_inner_error_codes.h"
#include "common/properties_manager.h" #include "common/properties_manager.h"
#include "proto/op_mapping_info.pb.h"
#include "proto/op_mapping.pb.h"
#include "runtime/stream.h" #include "runtime/stream.h"


namespace ge { namespace ge {
@@ -37,10 +37,10 @@ class DumpOp {
void SetDynamicModelInfo(const string &dynamic_model_name, const string &dynamic_om_name, uint32_t dynamic_model_id); void SetDynamicModelInfo(const string &dynamic_model_name, const string &dynamic_om_name, uint32_t dynamic_model_id);


private: private:
Status ExecutorDumpOp(aicpu::dump::OpMappingInfo &op_mapping_info);
Status DumpOutput(aicpu::dump::Task &task);
Status DumpInput(aicpu::dump::Task &task);
Status SetDumpModelName(aicpu::dump::OpMappingInfo &op_mapping_info);
Status ExecutorDumpOp(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info);
Status DumpOutput(toolkit::aicpu::dump::Task &task);
Status DumpInput(toolkit::aicpu::dump::Task &task);
Status SetDumpModelName(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info);


DumpProperties dump_properties_; DumpProperties dump_properties_;
OpDescPtr op_desc_; OpDescPtr op_desc_;


ge/common/proto/op_mapping_info.proto → ge/common/proto/op_mapping.proto View File

@@ -1,5 +1,5 @@
syntax = "proto3"; syntax = "proto3";
package aicpu.dump;
package toolkit.aicpu.dump;


message Shape { message Shape {
repeated uint64 dim = 1; repeated uint64 dim = 1;

+ 1
- 1
ge/executor/CMakeLists.txt View File

@@ -3,7 +3,7 @@ set(PROTO_LIST
"${METADEF_DIR}/proto/ge_ir.proto" "${METADEF_DIR}/proto/ge_ir.proto"
"${METADEF_DIR}/proto/insert_op.proto" "${METADEF_DIR}/proto/insert_op.proto"
"${METADEF_DIR}/proto/task.proto" "${METADEF_DIR}/proto/task.proto"
"${METADEF_DIR}/proto/op_mapping_info.proto"
"${METADEF_DIR}/proto/op_mapping.proto"
"${METADEF_DIR}/proto/dump_task.proto" "${METADEF_DIR}/proto/dump_task.proto"
) )




+ 1
- 1
ge/executor/module.mk View File

@@ -152,7 +152,7 @@ local_ge_executor_src_files := \


local_ge_executor_c_include := \ local_ge_executor_c_include := \
proto/insert_op.proto \ proto/insert_op.proto \
proto/op_mapping_info.proto \
proto/op_mapping.proto \
proto/dump_task.proto \ proto/dump_task.proto \
proto/ge_ir.proto \ proto/ge_ir.proto \
proto/task.proto \ proto/task.proto \


+ 1
- 1
ge/executor/proto/dump_task.proto View File

@@ -1,5 +1,5 @@
syntax = "proto3"; syntax = "proto3";
package toolkit.dumpdata;
package toolkit.dump;


enum OutputDataType { enum OutputDataType {
DT_UNDEFINED = 0; DT_UNDEFINED = 0;


ge/executor/proto/op_mapping_info.proto → ge/executor/proto/op_mapping.proto View File

@@ -1,5 +1,5 @@
syntax = "proto3"; syntax = "proto3";
package aicpu.dump;
package toolkit.aicpu.dump;


message Shape { message Shape {
repeated uint64 dim = 1; repeated uint64 dim = 1;

+ 2
- 2
ge/ge_inference.mk View File

@@ -283,7 +283,7 @@ COMMON_LOCAL_C_INCLUDES := \
proto/insert_op.proto \ proto/insert_op.proto \
proto/ge_ir.proto \ proto/ge_ir.proto \
proto/fwk_adapter.proto \ proto/fwk_adapter.proto \
proto/op_mapping_info.proto \
proto/op_mapping.proto \
proto/dump_task.proto \ proto/dump_task.proto \
proto/tensorflow/attr_value.proto \ proto/tensorflow/attr_value.proto \
proto/tensorflow/function.proto \ proto/tensorflow/function.proto \
@@ -342,7 +342,7 @@ DEVICE_LOCAL_C_INCLUDES := \
proto/insert_op.proto \ proto/insert_op.proto \
proto/ge_ir.proto \ proto/ge_ir.proto \
proto/fwk_adapter.proto \ proto/fwk_adapter.proto \
proto/op_mapping_info.proto \
proto/op_mapping.proto \
proto/tensorflow/attr_value.proto \ proto/tensorflow/attr_value.proto \
proto/tensorflow/function.proto \ proto/tensorflow/function.proto \
proto/tensorflow/graph.proto \ proto/tensorflow/graph.proto \


+ 1
- 1
ge/ge_runner.mk View File

@@ -345,7 +345,7 @@ RUNNER_LOCAL_C_INCLUDES := \
proto/ge_ir.proto \ proto/ge_ir.proto \
proto/insert_op.proto \ proto/insert_op.proto \
proto/om.proto \ proto/om.proto \
proto/op_mapping_info.proto \
proto/op_mapping.proto \
proto/dump_task.proto \ proto/dump_task.proto \
proto/task.proto \ proto/task.proto \
proto/tensorflow/attr_value.proto \ proto/tensorflow/attr_value.proto \


+ 38
- 36
ge/graph/load/model_manager/data_dumper.cc View File

@@ -35,7 +35,7 @@
#include "graph/utils/tensor_utils.h" #include "graph/utils/tensor_utils.h"
#include "proto/dump_task.pb.h" #include "proto/dump_task.pb.h"
#include "proto/ge_ir.pb.h" #include "proto/ge_ir.pb.h"
#include "proto/op_mapping_info.pb.h"
#include "proto/op_mapping.pb.h"
#include "runtime/base.h" #include "runtime/base.h"
#include "runtime/mem.h" #include "runtime/mem.h"


@@ -295,7 +295,7 @@ void DataDumper::SaveDumpTask(uint32_t task_id, uint32_t stream_id, const std::s
} }


static void SetOpMappingLoopAddr(uintptr_t step_id, uintptr_t loop_per_iter, uintptr_t loop_cond, static void SetOpMappingLoopAddr(uintptr_t step_id, uintptr_t loop_per_iter, uintptr_t loop_cond,
aicpu::dump::OpMappingInfo &op_mapping_info) {
toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
if (step_id != 0) { if (step_id != 0) {
GELOGI("step_id exists."); GELOGI("step_id exists.");
op_mapping_info.set_step_id_addr(static_cast<uint64_t>(step_id)); op_mapping_info.set_step_id_addr(static_cast<uint64_t>(step_id));
@@ -312,7 +312,8 @@ static void SetOpMappingLoopAddr(uintptr_t step_id, uintptr_t loop_per_iter, uin
} }
} }


Status DataDumper::GenerateOutput(aicpu::dump::Output &output, const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
Status DataDumper::GenerateOutput(toolkit::aicpu::dump::Output &output,
const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
const uintptr_t &addr, size_t index) { const uintptr_t &addr, size_t index) {
output.set_data_type(static_cast<int32_t>(GetIrDataType(tensor_descs.at(index).GetDataType()))); output.set_data_type(static_cast<int32_t>(GetIrDataType(tensor_descs.at(index).GetDataType())));
output.set_format(static_cast<int32_t>(tensor_descs.at(index).GetFormat())); output.set_format(static_cast<int32_t>(tensor_descs.at(index).GetFormat()));
@@ -342,7 +343,8 @@ Status DataDumper::GenerateOutput(aicpu::dump::Output &output, const OpDesc::Vis
return SUCCESS; return SUCCESS;
} }


Status DataDumper::DumpRefOutput(const DataDumper::InnerDumpInfo &inner_dump_info, aicpu::dump::Output &output,
Status DataDumper::DumpRefOutput(const DataDumper::InnerDumpInfo &inner_dump_info,
toolkit::aicpu::dump::Output &output,
size_t i, const std::string &node_name_index) { size_t i, const std::string &node_name_index) {
std::string dump_op_name; std::string dump_op_name;
std::string input_or_output; std::string input_or_output;
@@ -383,7 +385,7 @@ Status DataDumper::DumpRefOutput(const DataDumper::InnerDumpInfo &inner_dump_inf
return SUCCESS; return SUCCESS;
} }


Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task) {
Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Task &task) {
const auto &output_descs = inner_dump_info.op->GetAllOutputsDesc(); const auto &output_descs = inner_dump_info.op->GetAllOutputsDesc();
const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op); const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op);
if (output_descs.size() != output_addrs.size()) { if (output_descs.size() != output_addrs.size()) {
@@ -399,7 +401,7 @@ Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, aicp
v_memory_type.size()); v_memory_type.size());


for (size_t i = 0; i < output_descs.size(); ++i) { for (size_t i = 0; i < output_descs.size(); ++i) {
aicpu::dump::Output output;
toolkit::aicpu::dump::Output output;
std::string node_name_index; std::string node_name_index;
const auto &output_desc = output_descs.at(i); const auto &output_desc = output_descs.at(i);
// check dump output tensor desc is redirected by attr ATTR_DATA_DUMP_REF // check dump output tensor desc is redirected by attr ATTR_DATA_DUMP_REF
@@ -427,14 +429,14 @@ Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, aicp
return SUCCESS; return SUCCESS;
} }


Status DataDumper::DumpOutput(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task) {
Status DataDumper::DumpOutput(const InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Task &task) {
GELOGI("Start dump output"); GELOGI("Start dump output");
if (inner_dump_info.is_task) { if (inner_dump_info.is_task) {
// tbe or aicpu op, these ops are with task // tbe or aicpu op, these ops are with task
return DumpOutputWithTask(inner_dump_info, task); return DumpOutputWithTask(inner_dump_info, task);
} }
// else data, const or variable op // else data, const or variable op
aicpu::dump::Output output;
toolkit::aicpu::dump::Output output;
auto output_tensor = inner_dump_info.op->GetOutputDescPtr(inner_dump_info.output_anchor_index); auto output_tensor = inner_dump_info.op->GetOutputDescPtr(inner_dump_info.output_anchor_index);
const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op); const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op);
if (output_tensor == nullptr) { if (output_tensor == nullptr) {
@@ -472,7 +474,7 @@ Status DataDumper::DumpOutput(const InnerDumpInfo &inner_dump_info, aicpu::dump:
return SUCCESS; return SUCCESS;
} }


Status DataDumper::GenerateInput(aicpu::dump::Input &input, const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
Status DataDumper::GenerateInput(toolkit::aicpu::dump::Input &input, const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
const uintptr_t &addr, size_t index) { const uintptr_t &addr, size_t index) {
input.set_data_type(static_cast<int32_t>(GetIrDataType(tensor_descs.at(index).GetDataType()))); input.set_data_type(static_cast<int32_t>(GetIrDataType(tensor_descs.at(index).GetDataType())));
input.set_format(static_cast<int32_t>(tensor_descs.at(index).GetFormat())); input.set_format(static_cast<int32_t>(tensor_descs.at(index).GetFormat()));
@@ -496,8 +498,8 @@ Status DataDumper::GenerateInput(aicpu::dump::Input &input, const OpDesc::Vistor
return SUCCESS; return SUCCESS;
} }


Status DataDumper::DumpRefInput(const DataDumper::InnerDumpInfo &inner_dump_info, aicpu::dump::Input &input, size_t i,
const std::string &node_name_index) {
Status DataDumper::DumpRefInput(const DataDumper::InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Input &input,
size_t i, const std::string &node_name_index) {
std::string dump_op_name; std::string dump_op_name;
std::string input_or_output; std::string input_or_output;
size_t index; size_t index;
@@ -537,7 +539,7 @@ Status DataDumper::DumpRefInput(const DataDumper::InnerDumpInfo &inner_dump_info
return SUCCESS; return SUCCESS;
} }


Status DataDumper::DumpInput(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task) {
Status DataDumper::DumpInput(const InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Task &task) {
GELOGI("Start dump input"); GELOGI("Start dump input");
const auto &input_descs = inner_dump_info.op->GetAllInputsDesc(); const auto &input_descs = inner_dump_info.op->GetAllInputsDesc();
const std::vector<void *> input_addrs = ModelUtils::GetInputDataAddrs(*runtime_param_, inner_dump_info.op); const std::vector<void *> input_addrs = ModelUtils::GetInputDataAddrs(*runtime_param_, inner_dump_info.op);
@@ -553,7 +555,7 @@ Status DataDumper::DumpInput(const InnerDumpInfo &inner_dump_info, aicpu::dump::
inner_dump_info.op->GetName().c_str(), input_descs.size(), v_memory_type.size()); inner_dump_info.op->GetName().c_str(), input_descs.size(), v_memory_type.size());


for (size_t i = 0; i < input_descs.size(); ++i) { for (size_t i = 0; i < input_descs.size(); ++i) {
aicpu::dump::Input input;
toolkit::aicpu::dump::Input input;
std::string node_name_index; std::string node_name_index;
// check dump input tensor desc is redirected by attr ATTR_DATA_DUMP_REF // check dump input tensor desc is redirected by attr ATTR_DATA_DUMP_REF
if (AttrUtils::GetStr(&input_descs.at(i), ATTR_DATA_DUMP_REF, node_name_index)) { if (AttrUtils::GetStr(&input_descs.at(i), ATTR_DATA_DUMP_REF, node_name_index)) {
@@ -582,15 +584,15 @@ Status DataDumper::DumpInput(const InnerDumpInfo &inner_dump_info, aicpu::dump::
return SUCCESS; return SUCCESS;
} }


void DataDumper::GenerateOpBuffer(const int64_t &size, aicpu::dump::Task &task) {
aicpu::dump::OpBuffer op_buffer;
op_buffer.set_buffer_type(aicpu::dump::BufferType::L1);
void DataDumper::GenerateOpBuffer(const int64_t &size, toolkit::aicpu::dump::Task &task) {
toolkit::aicpu::dump::OpBuffer op_buffer;
op_buffer.set_buffer_type(toolkit::aicpu::dump::BufferType::L1);
op_buffer.set_address(reinterpret_cast<uintptr_t>(l1_fusion_addr_)); op_buffer.set_address(reinterpret_cast<uintptr_t>(l1_fusion_addr_));
op_buffer.set_size(size); op_buffer.set_size(size);
task.mutable_buffer()->Add(std::move(op_buffer)); task.mutable_buffer()->Add(std::move(op_buffer));
} }


Status DataDumper::ExecuteLoadDumpInfo(aicpu::dump::OpMappingInfo &op_mapping_info) {
Status DataDumper::ExecuteLoadDumpInfo(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
std::string proto_str; std::string proto_str;
size_t proto_size = op_mapping_info.ByteSizeLong(); size_t proto_size = op_mapping_info.ByteSizeLong();
bool ret = op_mapping_info.SerializeToString(&proto_str); bool ret = op_mapping_info.SerializeToString(&proto_str);
@@ -628,7 +630,7 @@ Status DataDumper::ExecuteLoadDumpInfo(aicpu::dump::OpMappingInfo &op_mapping_in
return SUCCESS; return SUCCESS;
} }


Status DataDumper::ExecuteUnLoadDumpInfo(aicpu::dump::OpMappingInfo &op_mapping_info) {
Status DataDumper::ExecuteUnLoadDumpInfo(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
std::string proto_str; std::string proto_str;
size_t proto_size = op_mapping_info.ByteSizeLong(); size_t proto_size = op_mapping_info.ByteSizeLong();
bool ret = op_mapping_info.SerializeToString(&proto_str); bool ret = op_mapping_info.SerializeToString(&proto_str);
@@ -673,7 +675,7 @@ Status DataDumper::LoadDumpInfo() {
GELOGD("op_list_ is empty"); GELOGD("op_list_ is empty");
} }


aicpu::dump::OpMappingInfo op_mapping_info;
toolkit::aicpu::dump::OpMappingInfo op_mapping_info;


auto dump_path = dump_properties_.GetDumpPath() + std::to_string(device_id_) + "/"; auto dump_path = dump_properties_.GetDumpPath() + std::to_string(device_id_) + "/";
op_mapping_info.set_dump_path(dump_path); op_mapping_info.set_dump_path(dump_path);
@@ -702,11 +704,11 @@ Status DataDumper::LoadDumpInfo() {
return SUCCESS; return SUCCESS;
} }


Status DataDumper::BuildTaskInfo(aicpu::dump::OpMappingInfo &op_mapping_info) {
Status DataDumper::BuildTaskInfo(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
for (const auto &op_iter : op_list_) { for (const auto &op_iter : op_list_) {
auto op_desc = op_iter.op; auto op_desc = op_iter.op;
GELOGD("Op %s in model begin to add task in op_mapping_info", op_desc->GetName().c_str()); GELOGD("Op %s in model begin to add task in op_mapping_info", op_desc->GetName().c_str());
aicpu::dump::Task task;
toolkit::aicpu::dump::Task task;
task.set_end_graph(false); task.set_end_graph(false);
task.set_task_id(op_iter.task_id); task.set_task_id(op_iter.task_id);
task.set_stream_id(op_iter.stream_id); task.set_stream_id(op_iter.stream_id);
@@ -754,10 +756,10 @@ Status DataDumper::BuildTaskInfo(aicpu::dump::OpMappingInfo &op_mapping_info) {
} }


void DataDumper::SetEndGraphIdToAicpu(uint32_t task_id, uint32_t stream_id, void DataDumper::SetEndGraphIdToAicpu(uint32_t task_id, uint32_t stream_id,
aicpu::dump::OpMappingInfo &op_mapping_info) {
toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
if (dump_properties_.GetDumpMode() == kDumpOutput || dump_properties_.GetDumpMode() == kDumpInput || if (dump_properties_.GetDumpMode() == kDumpOutput || dump_properties_.GetDumpMode() == kDumpInput ||
dump_properties_.GetDumpMode() == kDumpAll) { dump_properties_.GetDumpMode() == kDumpAll) {
aicpu::dump::Task task;
toolkit::aicpu::dump::Task task;
task.set_end_graph(true); task.set_end_graph(true);
task.set_task_id(end_graph_task_id_); task.set_task_id(end_graph_task_id_);
task.set_stream_id(end_graph_stream_id_); task.set_stream_id(end_graph_stream_id_);
@@ -766,7 +768,7 @@ void DataDumper::SetEndGraphIdToAicpu(uint32_t task_id, uint32_t stream_id,
op_mapping_info.mutable_task()->Add(std::move(task)); op_mapping_info.mutable_task()->Add(std::move(task));


is_end_graph_ = true; is_end_graph_ = true;
if (op_mapping_info.model_name_param_case() == aicpu::dump::OpMappingInfo::kModelName) {
if (op_mapping_info.model_name_param_case() == toolkit::aicpu::dump::OpMappingInfo::kModelName) {
GELOGI("Add end_graph_info to aicpu, model_name is %s, task_id is %u, stream_id is %u", GELOGI("Add end_graph_info to aicpu, model_name is %s, task_id is %u, stream_id is %u",
op_mapping_info.model_name().c_str(), end_graph_task_id_, end_graph_stream_id_); op_mapping_info.model_name().c_str(), end_graph_task_id_, end_graph_stream_id_);
return; return;
@@ -776,10 +778,10 @@ void DataDumper::SetEndGraphIdToAicpu(uint32_t task_id, uint32_t stream_id,
} }


void DataDumper::SetOpDebugIdToAicpu(uint32_t task_id, uint32_t stream_id, void *op_debug_addr, void DataDumper::SetOpDebugIdToAicpu(uint32_t task_id, uint32_t stream_id, void *op_debug_addr,
aicpu::dump::OpMappingInfo &op_mapping_info) {
toolkit::aicpu::dump::OpMappingInfo &op_mapping_info) {
if (is_op_debug_) { if (is_op_debug_) {
GELOGI("add op_debug_info to aicpu, task_id is %u, stream_id is %u", task_id, stream_id); GELOGI("add op_debug_info to aicpu, task_id is %u, stream_id is %u", task_id, stream_id);
aicpu::dump::Task task;
toolkit::aicpu::dump::Task task;
task.set_end_graph(false); task.set_end_graph(false);
task.set_task_id(task_id); task.set_task_id(task_id);
task.set_stream_id(stream_id); task.set_stream_id(stream_id);
@@ -787,7 +789,7 @@ void DataDumper::SetOpDebugIdToAicpu(uint32_t task_id, uint32_t stream_id, void
task.mutable_op()->set_op_type(OP_TYPE_OP_DEBUG); task.mutable_op()->set_op_type(OP_TYPE_OP_DEBUG);


// set output // set output
aicpu::dump::Output output;
toolkit::aicpu::dump::Output output;
output.set_data_type(DT_UINT8); output.set_data_type(DT_UINT8);
output.set_format(FORMAT_ND); output.set_format(FORMAT_ND);


@@ -813,12 +815,12 @@ Status DataDumper::UnloadDumpInfo() {
} }


GELOGI("UnloadDumpInfo start."); GELOGI("UnloadDumpInfo start.");
aicpu::dump::OpMappingInfo op_mapping_info;
toolkit::aicpu::dump::OpMappingInfo op_mapping_info;
op_mapping_info.set_model_id(model_id_); op_mapping_info.set_model_id(model_id_);
op_mapping_info.set_flag(kAicpuUnloadFlag); op_mapping_info.set_flag(kAicpuUnloadFlag);


for (const auto &op_iter : op_list_) { for (const auto &op_iter : op_list_) {
aicpu::dump::Task task;
toolkit::aicpu::dump::Task task;
task.set_task_id(op_iter.task_id); task.set_task_id(op_iter.task_id);
task.set_stream_id(op_iter.stream_id); task.set_stream_id(op_iter.stream_id);
op_mapping_info.mutable_task()->Add(std::move(task)); op_mapping_info.mutable_task()->Add(std::move(task));
@@ -902,14 +904,14 @@ Status DataDumper::DumpExceptionInfo(const std::vector<rtExceptionInfo> exceptio
for (const rtExceptionInfo &iter : exception_infos) { for (const rtExceptionInfo &iter : exception_infos) {
OpDescInfo op_desc_info; OpDescInfo op_desc_info;
if (GetOpDescInfo(iter.streamid, iter.taskid, op_desc_info)) { if (GetOpDescInfo(iter.streamid, iter.taskid, op_desc_info)) {
toolkit::dumpdata::DumpData dump_data;
toolkit::dump::DumpData dump_data;
dump_data.set_version("2.0"); dump_data.set_version("2.0");
dump_data.set_dump_time(GetNowTime()); dump_data.set_dump_time(GetNowTime());
dump_data.set_op_name(op_desc_info.op_name); dump_data.set_op_name(op_desc_info.op_name);
for (size_t i = 0; i < op_desc_info.input_format.size(); ++i) { for (size_t i = 0; i < op_desc_info.input_format.size(); ++i) {
toolkit::dumpdata::OpInput input;
input.set_data_type(toolkit::dumpdata::OutputDataType(GetIrDataType(op_desc_info.input_data_type[i])));
input.set_format(toolkit::dumpdata::OutputFormat(op_desc_info.input_format[i]));
toolkit::dump::OpInput input;
input.set_data_type(toolkit::dump::OutputDataType(GetIrDataType(op_desc_info.input_data_type[i])));
input.set_format(toolkit::dump::OutputFormat(op_desc_info.input_format[i]));
for (auto dim : op_desc_info.input_shape[i]) { for (auto dim : op_desc_info.input_shape[i]) {
input.mutable_shape()->add_dim(dim); input.mutable_shape()->add_dim(dim);
} }
@@ -918,9 +920,9 @@ Status DataDumper::DumpExceptionInfo(const std::vector<rtExceptionInfo> exceptio
dump_data.mutable_input()->Add(std::move(input)); dump_data.mutable_input()->Add(std::move(input));
} }
for (size_t j = 0; j < op_desc_info.output_format.size(); ++j) { for (size_t j = 0; j < op_desc_info.output_format.size(); ++j) {
toolkit::dumpdata::OpOutput output;
output.set_data_type(toolkit::dumpdata::OutputDataType(GetIrDataType(op_desc_info.output_data_type[j])));
output.set_format(toolkit::dumpdata::OutputFormat(op_desc_info.output_format[j]));
toolkit::dump::OpOutput output;
output.set_data_type(toolkit::dump::OutputDataType(GetIrDataType(op_desc_info.output_data_type[j])));
output.set_format(toolkit::dump::OutputFormat(op_desc_info.output_format[j]));
for (auto dim : op_desc_info.output_shape[j]) { for (auto dim : op_desc_info.output_shape[j]) {
output.mutable_shape()->add_dim(dim); output.mutable_shape()->add_dim(dim);
} }


+ 16
- 15
ge/graph/load/model_manager/data_dumper.h View File

@@ -27,7 +27,7 @@
#include "graph/node.h" #include "graph/node.h"
#include "graph/compute_graph.h" #include "graph/compute_graph.h"
#include "proto/ge_ir.pb.h" #include "proto/ge_ir.pb.h"
#include "proto/op_mapping_info.pb.h"
#include "proto/op_mapping.pb.h"
#include "runtime/mem.h" #include "runtime/mem.h"
#include "task_info/task_info.h" #include "task_info/task_info.h"
#include "framework/common/ge_types.h" #include "framework/common/ge_types.h"
@@ -136,24 +136,25 @@ class DataDumper {
DumpProperties dump_properties_; DumpProperties dump_properties_;


// Build task info of op mapping info // Build task info of op mapping info
Status BuildTaskInfo(aicpu::dump::OpMappingInfo &op_mapping_info);
Status DumpOutput(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task);
Status DumpRefOutput(const DataDumper::InnerDumpInfo &inner_dump_info, aicpu::dump::Output &output, size_t i,
const std::string &node_name_index);
Status DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task);
Status DumpInput(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task);
Status DumpRefInput(const DataDumper::InnerDumpInfo &inner_dump_info, aicpu::dump::Input &input, size_t i,
Status BuildTaskInfo(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info);
Status DumpOutput(const InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Task &task);
Status DumpRefOutput(const DataDumper::InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Output &output,
size_t i, const std::string &node_name_index);
Status DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Task &task);
Status DumpInput(const InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Task &task);
Status DumpRefInput(const DataDumper::InnerDumpInfo &inner_dump_info, toolkit::aicpu::dump::Input &input, size_t i,
const std::string &node_name_index); const std::string &node_name_index);
Status ExecuteLoadDumpInfo(aicpu::dump::OpMappingInfo &op_mapping_info);
void SetEndGraphIdToAicpu(uint32_t task_id, uint32_t stream_id, aicpu::dump::OpMappingInfo &op_mapping_info);
Status ExecuteLoadDumpInfo(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info);
void SetEndGraphIdToAicpu(uint32_t task_id, uint32_t stream_id,
toolkit::aicpu::dump::OpMappingInfo &op_mapping_info);
void SetOpDebugIdToAicpu(uint32_t task_id, uint32_t stream_id, void *op_debug_addr, void SetOpDebugIdToAicpu(uint32_t task_id, uint32_t stream_id, void *op_debug_addr,
aicpu::dump::OpMappingInfo &op_mapping_info);
Status ExecuteUnLoadDumpInfo(aicpu::dump::OpMappingInfo &op_mapping_info);
Status GenerateInput(aicpu::dump::Input &input, const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
toolkit::aicpu::dump::OpMappingInfo &op_mapping_info);
Status ExecuteUnLoadDumpInfo(toolkit::aicpu::dump::OpMappingInfo &op_mapping_info);
Status GenerateInput(toolkit::aicpu::dump::Input &input, const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
const uintptr_t &addr, size_t index); const uintptr_t &addr, size_t index);
Status GenerateOutput(aicpu::dump::Output &output, const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
Status GenerateOutput(toolkit::aicpu::dump::Output &output, const OpDesc::Vistor<GeTensorDesc> &tensor_descs,
const uintptr_t &addr, size_t index); const uintptr_t &addr, size_t index);
void GenerateOpBuffer(const int64_t &size, aicpu::dump::Task &task);
void GenerateOpBuffer(const int64_t &size, toolkit::aicpu::dump::Task &task);
}; };
struct DataDumper::InnerDumpInfo { struct DataDumper::InnerDumpInfo {
uint32_t task_id; uint32_t task_id;


+ 1
- 1
ge/proto/dump_task.proto View File

@@ -1,5 +1,5 @@
syntax = "proto3"; syntax = "proto3";
package toolkit.dumpdata;
package toolkit.dump;


enum OutputDataType { enum OutputDataType {
DT_UNDEFINED = 0; DT_UNDEFINED = 0;


ge/proto/op_mapping_info.proto → ge/proto/op_mapping.proto View File

@@ -1,5 +1,5 @@
syntax = "proto3"; syntax = "proto3";
package aicpu.dump;
package toolkit.aicpu.dump;


message Shape { message Shape {
repeated uint64 dim = 1; repeated uint64 dim = 1;

+ 1
- 1
tests/ut/ge/CMakeLists.txt View File

@@ -24,7 +24,7 @@ set(PROTO_LIST
"${GE_CODE_DIR}/metadef/proto/insert_op.proto" "${GE_CODE_DIR}/metadef/proto/insert_op.proto"
"${GE_CODE_DIR}/metadef/proto/dump_task.proto" "${GE_CODE_DIR}/metadef/proto/dump_task.proto"
"${GE_CODE_DIR}/metadef/proto/fwk_adapter.proto" "${GE_CODE_DIR}/metadef/proto/fwk_adapter.proto"
"${GE_CODE_DIR}/metadef/proto/op_mapping_info.proto"
"${GE_CODE_DIR}/metadef/proto/op_mapping.proto"
"${GE_CODE_DIR}/metadef/proto/optimizer_priority.proto" "${GE_CODE_DIR}/metadef/proto/optimizer_priority.proto"
"${GE_CODE_DIR}/metadef/proto/ge_api.proto" "${GE_CODE_DIR}/metadef/proto/ge_api.proto"
"${GE_CODE_DIR}/metadef/proto/tensorflow/attr_value.proto" "${GE_CODE_DIR}/metadef/proto/tensorflow/attr_value.proto"


Loading…
Cancel
Save