Browse Source

modify data dumper

tags/v1.2.0
zhou_chao1993 3 years ago
parent
commit
684093d759
6 changed files with 37 additions and 25 deletions
  1. +3
    -3
      ge/graph/load/model_manager/data_dumper.cc
  2. +25
    -13
      ge/graph/load/model_manager/data_dumper.h
  3. +5
    -5
      ge/graph/load/model_manager/davinci_model.cc
  4. +1
    -1
      ge/hybrid/executor/hybrid_model_async_executor.cc
  5. +2
    -2
      tests/ut/ge/common/opdebug_register_unittest.cc
  6. +1
    -1
      tests/ut/ge/graph/load/data_dumper_unittest.cc

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

@@ -385,7 +385,7 @@ 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);
const std::vector<void *> output_addrs = ModelUtils::GetOutputDataAddrs(*runtime_param_, inner_dump_info.op);
if (output_descs.size() != output_addrs.size()) {
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());
@@ -436,7 +436,7 @@ Status DataDumper::DumpOutput(const InnerDumpInfo &inner_dump_info, aicpu::dump:
// else data, const or variable op
aicpu::dump::Output output;
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) {
GELOGE(PARAM_INVALID, "output_tensor is null, index: %d, size: %zu.", inner_dump_info.output_anchor_index,
inner_dump_info.op->GetOutputsSize());
@@ -540,7 +540,7 @@ Status DataDumper::DumpRefInput(const DataDumper::InnerDumpInfo &inner_dump_info
Status DataDumper::DumpInput(const InnerDumpInfo &inner_dump_info, aicpu::dump::Task &task) {
GELOGI("Start dump input");
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);
if (input_descs.size() != input_addrs.size()) {
GELOGE(PARAM_INVALID, "Invalid input desc addrs size %zu, op %s has %zu input desc.", input_addrs.size(),
inner_dump_info.op->GetName().c_str(), input_descs.size());


+ 25
- 13
ge/graph/load/model_manager/data_dumper.h View File

@@ -36,9 +36,21 @@
namespace ge {
class DataDumper {
public:
DataDumper() : runtime_param_{} {}

explicit DataDumper(const RuntimeParam &rsh) : runtime_param_(rsh) {}
explicit DataDumper(RuntimeParam *rsh)
: model_name_(),
model_id_(0),
runtime_param_(rsh),
dev_mem_load_(nullptr),
dev_mem_unload_(nullptr),
op_list_(),
input_map_(),
load_flag_(false),
device_id_(0),
global_step_(0),
loop_per_iter_(0),
loop_cond_(0),
compute_graph_(nullptr),
ref_info_() {}

~DataDumper();

@@ -93,10 +105,10 @@ class DataDumper {
// for inference data dump
std::string om_name_;

uint32_t model_id_ = 0;
const RuntimeParam &runtime_param_;
void *dev_mem_load_ = nullptr;
void *dev_mem_unload_ = nullptr;
uint32_t model_id_;
RuntimeParam *runtime_param_;
void *dev_mem_load_;
void *dev_mem_unload_;

struct InnerDumpInfo;
struct InnerInputMapping;
@@ -107,12 +119,12 @@ class DataDumper {
uint32_t end_graph_stream_id_ = 0;
bool is_end_graph_ = false;
std::multimap<std::string, InnerInputMapping> input_map_; // release after DavinciModel::Init
bool load_flag_ = false;
uint32_t device_id_ = 0;
uintptr_t global_step_ = 0;
uintptr_t loop_per_iter_ = 0;
uintptr_t loop_cond_ = 0;
ComputeGraphPtr compute_graph_ = nullptr; // release after DavinciModel::Init
bool load_flag_;
uint32_t device_id_;
uintptr_t global_step_;
uintptr_t loop_per_iter_;
uintptr_t loop_cond_;
ComputeGraphPtr compute_graph_; // release after DavinciModel::Init
std::map<OpDescPtr, void *> ref_info_; // release after DavinciModel::Init
void *l1_fusion_addr_ = nullptr;



+ 5
- 5
ge/graph/load/model_manager/davinci_model.cc View File

@@ -184,7 +184,7 @@ DavinciModel::DavinciModel(int32_t priority, const std::shared_ptr<ModelListener
last_execute_mode_(INITIALIZATION),
session_id_(0),
device_id_(0),
maxDumpOpNum_(0), data_dumper_(runtime_param_),
maxDumpOpNum_(0), data_dumper_(&runtime_param_),
iterator_count_(0),
is_l1_fusion_enable_(false),
is_first_execute_(true) {
@@ -654,12 +654,12 @@ Status DavinciModel::Init(void *dev_ptr, size_t mem_size, void *weight_ptr, size
runtime_param_.graph_id = compute_graph->GetGraphID();

// op debug register
GE_CHK_STATUS_RET(OpDebugRegister(), "OpDebugRegister failed.");
GE_CHK_STATUS_RET(OpDebugRegister(), "OpDebugRegister failed");

GE_TIMESTAMP_START(TransAllVarData);
GE_CHK_STATUS_RET(TransAllVarData(compute_graph, runtime_param_.graph_id), "TransAllVarData failed.");
GE_CHK_STATUS_RET(TransAllVarData(compute_graph, runtime_param_.graph_id), "TransAllVarData failed");
GE_TIMESTAMP_END(TransAllVarData, "GraphLoader::TransAllVarData");
GE_CHK_STATUS_RET(TransVarDataUtils::CopyVarData(compute_graph, session_id_, device_id_), "copy var data failed.");
GE_CHK_STATUS_RET(TransVarDataUtils::CopyVarData(compute_graph, session_id_, device_id_), "copy var data failed");

GE_TIMESTAMP_START(InitModelMem);
GELOGD("Known node is %d.", known_node_);
@@ -667,7 +667,7 @@ Status DavinciModel::Init(void *dev_ptr, size_t mem_size, void *weight_ptr, size
if (!known_node_) {
GE_CHK_STATUS_RET_NOLOG(InitFeatureMapAndP2PMem(dev_ptr, mem_size));
data_inputer_ = new (std::nothrow) DataInputer();
GE_CHK_BOOL_RET_STATUS(data_inputer_ != nullptr, MEMALLOC_FAILED, "data_inputer_ is nullptr.");
GE_CHK_BOOL_RET_STATUS(data_inputer_ != nullptr, MEMALLOC_FAILED, "data_inputer_ is nullptr");
}
fixed_mem_base_ = reinterpret_cast<uintptr_t>(mem_base_);
GE_TIMESTAMP_END(InitModelMem, "GraphLoader::InitModelMem");


+ 1
- 1
ge/hybrid/executor/hybrid_model_async_executor.cc View File

@@ -29,7 +29,7 @@ const size_t kMinimumPiplineStages = 2;
const int kDefaultLoopCount = 10;
}
HybridModelAsyncExecutor::HybridModelAsyncExecutor(HybridModel *model)
: model_(model), run_flag_(false) {
: model_(model), run_flag_(false), data_dumper_(nullptr) {
}

HybridModelAsyncExecutor::~HybridModelAsyncExecutor() {


+ 2
- 2
tests/ut/ge/common/opdebug_register_unittest.cc View File

@@ -31,7 +31,7 @@ TEST_F(UTEST_opdebug_register, register_debug_for_model_success) {
OpdebugRegister opdebug_register;
rtModel_t model_handle = (void*)0x111;
uint32_t op_debug_mode = 1;
DataDumper data_dumper;
DataDumper data_dumper({});
auto ret = opdebug_register.RegisterDebugForModel(model_handle, op_debug_mode, data_dumper);
opdebug_register.UnregisterDebugForModel(model_handle);
EXPECT_EQ(ret, ge::SUCCESS);
@@ -41,7 +41,7 @@ TEST_F(UTEST_opdebug_register, register_debug_for_stream_success) {
OpdebugRegister opdebug_register;
rtStream_t stream = (void*)0x111;
uint32_t op_debug_mode = 1;
DataDumper data_dumper;
DataDumper data_dumper({});
auto ret = opdebug_register.RegisterDebugForStream(stream, op_debug_mode, data_dumper);
opdebug_register.UnregisterDebugForStream(stream);
EXPECT_EQ(ret, ge::SUCCESS);


+ 1
- 1
tests/ut/ge/graph/load/data_dumper_unittest.cc View File

@@ -56,7 +56,7 @@ TEST_F(UtestDataDumper, LoadDumpInfo_no_output_addrs_fail) {

TEST_F(UtestDataDumper, UnloadDumpInfo_success) {
RuntimeParam rts_param;
DataDumper data_dumper(rts_param);
DataDumper data_dumper(&rts_param);
data_dumper.SetModelName("test");
data_dumper.SetModelId(2333);



Loading…
Cancel
Save