@@ -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()); | |||
@@ -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; | |||
@@ -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"); | |||
@@ -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() { | |||
@@ -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); | |||
@@ -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); | |||