@@ -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) { | Status DataDumper::DumpOutputWithTask(const InnerDumpInfo &inner_dump_info, 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()) { | ||||
GELOGE(PARAM_INVALID, "Invalid output desc addrs size %zu, op %s has %zu output desc.", 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()); | 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 | // else data, const or variable op | ||||
aicpu::dump::Output output; | 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) { | ||||
GELOGE(PARAM_INVALID, "output_tensor is null, index: %d, size: %zu.", inner_dump_info.output_anchor_index, | GELOGE(PARAM_INVALID, "output_tensor is null, index: %d, size: %zu.", inner_dump_info.output_anchor_index, | ||||
inner_dump_info.op->GetOutputsSize()); | 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) { | Status DataDumper::DumpInput(const InnerDumpInfo &inner_dump_info, 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); | |||||
if (input_descs.size() != input_addrs.size()) { | 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(), | 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()); | inner_dump_info.op->GetName().c_str(), input_descs.size()); | ||||
@@ -36,9 +36,21 @@ | |||||
namespace ge { | namespace ge { | ||||
class DataDumper { | class DataDumper { | ||||
public: | 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(); | ~DataDumper(); | ||||
@@ -93,10 +105,10 @@ class DataDumper { | |||||
// for inference data dump | // for inference data dump | ||||
std::string om_name_; | 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 InnerDumpInfo; | ||||
struct InnerInputMapping; | struct InnerInputMapping; | ||||
@@ -107,12 +119,12 @@ class DataDumper { | |||||
uint32_t end_graph_stream_id_ = 0; | uint32_t end_graph_stream_id_ = 0; | ||||
bool is_end_graph_ = false; | bool is_end_graph_ = false; | ||||
std::multimap<std::string, InnerInputMapping> input_map_; // release after DavinciModel::Init | 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 | std::map<OpDescPtr, void *> ref_info_; // release after DavinciModel::Init | ||||
void *l1_fusion_addr_ = nullptr; | void *l1_fusion_addr_ = nullptr; | ||||
@@ -184,7 +184,7 @@ DavinciModel::DavinciModel(int32_t priority, const std::shared_ptr<ModelListener | |||||
last_execute_mode_(INITIALIZATION), | last_execute_mode_(INITIALIZATION), | ||||
session_id_(0), | session_id_(0), | ||||
device_id_(0), | device_id_(0), | ||||
maxDumpOpNum_(0), data_dumper_(runtime_param_), | |||||
maxDumpOpNum_(0), data_dumper_(&runtime_param_), | |||||
iterator_count_(0), | iterator_count_(0), | ||||
is_l1_fusion_enable_(false), | is_l1_fusion_enable_(false), | ||||
is_first_execute_(true) { | 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(); | runtime_param_.graph_id = compute_graph->GetGraphID(); | ||||
// op debug register | // op debug register | ||||
GE_CHK_STATUS_RET(OpDebugRegister(), "OpDebugRegister failed."); | |||||
GE_CHK_STATUS_RET(OpDebugRegister(), "OpDebugRegister failed"); | |||||
GE_TIMESTAMP_START(TransAllVarData); | 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_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); | GE_TIMESTAMP_START(InitModelMem); | ||||
GELOGD("Known node is %d.", known_node_); | 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_) { | if (!known_node_) { | ||||
GE_CHK_STATUS_RET_NOLOG(InitFeatureMapAndP2PMem(dev_ptr, mem_size)); | GE_CHK_STATUS_RET_NOLOG(InitFeatureMapAndP2PMem(dev_ptr, mem_size)); | ||||
data_inputer_ = new (std::nothrow) DataInputer(); | 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_); | fixed_mem_base_ = reinterpret_cast<uintptr_t>(mem_base_); | ||||
GE_TIMESTAMP_END(InitModelMem, "GraphLoader::InitModelMem"); | GE_TIMESTAMP_END(InitModelMem, "GraphLoader::InitModelMem"); | ||||
@@ -29,7 +29,7 @@ const size_t kMinimumPiplineStages = 2; | |||||
const int kDefaultLoopCount = 10; | const int kDefaultLoopCount = 10; | ||||
} | } | ||||
HybridModelAsyncExecutor::HybridModelAsyncExecutor(HybridModel *model) | HybridModelAsyncExecutor::HybridModelAsyncExecutor(HybridModel *model) | ||||
: model_(model), run_flag_(false) { | |||||
: model_(model), run_flag_(false), data_dumper_(nullptr) { | |||||
} | } | ||||
HybridModelAsyncExecutor::~HybridModelAsyncExecutor() { | HybridModelAsyncExecutor::~HybridModelAsyncExecutor() { | ||||
@@ -31,7 +31,7 @@ TEST_F(UTEST_opdebug_register, register_debug_for_model_success) { | |||||
OpdebugRegister opdebug_register; | OpdebugRegister opdebug_register; | ||||
rtModel_t model_handle = (void*)0x111; | rtModel_t model_handle = (void*)0x111; | ||||
uint32_t op_debug_mode = 1; | uint32_t op_debug_mode = 1; | ||||
DataDumper data_dumper; | |||||
DataDumper data_dumper({}); | |||||
auto ret = opdebug_register.RegisterDebugForModel(model_handle, op_debug_mode, data_dumper); | auto ret = opdebug_register.RegisterDebugForModel(model_handle, op_debug_mode, data_dumper); | ||||
opdebug_register.UnregisterDebugForModel(model_handle); | opdebug_register.UnregisterDebugForModel(model_handle); | ||||
EXPECT_EQ(ret, ge::SUCCESS); | EXPECT_EQ(ret, ge::SUCCESS); | ||||
@@ -41,7 +41,7 @@ TEST_F(UTEST_opdebug_register, register_debug_for_stream_success) { | |||||
OpdebugRegister opdebug_register; | OpdebugRegister opdebug_register; | ||||
rtStream_t stream = (void*)0x111; | rtStream_t stream = (void*)0x111; | ||||
uint32_t op_debug_mode = 1; | uint32_t op_debug_mode = 1; | ||||
DataDumper data_dumper; | |||||
DataDumper data_dumper({}); | |||||
auto ret = opdebug_register.RegisterDebugForStream(stream, op_debug_mode, data_dumper); | auto ret = opdebug_register.RegisterDebugForStream(stream, op_debug_mode, data_dumper); | ||||
opdebug_register.UnregisterDebugForStream(stream); | opdebug_register.UnregisterDebugForStream(stream); | ||||
EXPECT_EQ(ret, ge::SUCCESS); | EXPECT_EQ(ret, ge::SUCCESS); | ||||
@@ -56,7 +56,7 @@ TEST_F(UtestDataDumper, LoadDumpInfo_no_output_addrs_fail) { | |||||
TEST_F(UtestDataDumper, UnloadDumpInfo_success) { | TEST_F(UtestDataDumper, UnloadDumpInfo_success) { | ||||
RuntimeParam rts_param; | RuntimeParam rts_param; | ||||
DataDumper data_dumper(rts_param); | |||||
DataDumper data_dumper(&rts_param); | |||||
data_dumper.SetModelName("test"); | data_dumper.SetModelName("test"); | ||||
data_dumper.SetModelId(2333); | data_dumper.SetModelId(2333); | ||||