diff --git a/paddle/fluid/platform/profiler/CMakeLists.txt b/paddle/fluid/platform/profiler/CMakeLists.txt old mode 100755 new mode 100644 diff --git a/paddle/fluid/platform/profiler/dump/test_serialization_logger.cc b/paddle/fluid/platform/profiler/dump/test_serialization_logger.cc index dee1019da2b52f93a2c2383f8f38c2c1662e63cb..d294bfee58c2b5327ed709a795e756144ae1f3c1 100644 --- a/paddle/fluid/platform/profiler/dump/test_serialization_logger.cc +++ b/paddle/fluid/platform/profiler/dump/test_serialization_logger.cc @@ -152,7 +152,7 @@ TEST(SerializationLoggerTest, dump_case1) { TEST(DeserializationReaderTest, restore_case0) { DeserializationReader reader("test_serialization_logger_case0.pb"); auto profiler_result = reader.Parse(); - auto& tree = profiler_result->GetNodeTrees(); + auto tree = profiler_result->GetNodeTrees(); std::map> nodes = tree->Traverse(true); EXPECT_EQ(nodes[10].size(), 4u); @@ -179,7 +179,7 @@ TEST(DeserializationReaderTest, restore_case0) { TEST(DeserializationReaderTest, restore_case1) { DeserializationReader reader("test_serialization_logger_case1.pb"); auto profiler_result = reader.Parse(); - auto& tree = profiler_result->GetNodeTrees(); + auto tree = profiler_result->GetNodeTrees(); std::map> nodes = tree->Traverse(true); EXPECT_EQ(nodes[10].size(), 1u); diff --git a/paddle/fluid/platform/profiler/event_node.h b/paddle/fluid/platform/profiler/event_node.h index dd8dfd32df4f7c075106e58019615eaeac567967..3e589b0be2e047e6d1005aebeabedd188e9c7973 100644 --- a/paddle/fluid/platform/profiler/event_node.h +++ b/paddle/fluid/platform/profiler/event_node.h @@ -103,7 +103,7 @@ class CudaRuntimeTraceEventNode { device_node_ptrs_.push_back(node); } void LogMe(BaseLogger* logger) { logger->LogRuntimeTraceEventNode(*this); } - std::vector& GetDeviceTraceEventNodes() { + const std::vector& GetDeviceTraceEventNodes() const { return device_node_ptrs_; } @@ -139,8 +139,11 @@ class HostTraceEventNode { void AddCudaRuntimeNode(CudaRuntimeTraceEventNode* node) { runtime_node_ptrs_.push_back(node); } - std::vector& GetChildren() { return children_; } - std::vector& GetRuntimeTraceEventNodes() { + const std::vector& GetChildren() const { + return children_; + } + const std::vector& GetRuntimeTraceEventNodes() + const { return runtime_node_ptrs_; } void LogMe(BaseLogger* logger) { logger->LogHostTraceEventNode(*this); } @@ -188,7 +191,7 @@ class NodeTrees { void HandleTrees(std::function, std::function, std::function); - std::map GetNodeTrees() { + const std::map& GetNodeTrees() const { return thread_event_trees_map_; } std::map> Traverse(bool bfs) const; diff --git a/paddle/fluid/platform/profiler/event_python.cc b/paddle/fluid/platform/profiler/event_python.cc index 1a6f19d2f93aff104e2100b7591982a7a1d6400f..5c42c8e8bf61ebcd798ed4203fbeb7eb0c47f621 100644 --- a/paddle/fluid/platform/profiler/event_python.cc +++ b/paddle/fluid/platform/profiler/event_python.cc @@ -81,7 +81,7 @@ HostPythonNode* ProfilerResult::CopyTree(HostTraceEventNode* root) { ProfilerResult::ProfilerResult(std::unique_ptr tree, const ExtraInfo& extra_info) - : tree_(std::move(tree)), extra_info_(extra_info) { + : tree_(tree.release()), extra_info_(extra_info) { if (tree_ != nullptr) { std::map nodetrees = tree_->GetNodeTrees(); for (auto it = nodetrees.begin(); it != nodetrees.end(); ++it) { diff --git a/paddle/fluid/platform/profiler/event_python.h b/paddle/fluid/platform/profiler/event_python.h index 12ecb9fde32aa0aedf9bf70e8e5bdf3d6c34b69f..172116dbb0edd745530cac6a5ef210a7c7d90475 100644 --- a/paddle/fluid/platform/profiler/event_python.h +++ b/paddle/fluid/platform/profiler/event_python.h @@ -82,11 +82,11 @@ class ProfilerResult { void Save(const std::string& file_name, const std::string format = std::string("json")); - std::unique_ptr& GetNodeTrees() { return tree_; } + std::shared_ptr GetNodeTrees() { return tree_; } private: std::map thread_event_trees_map_; - std::unique_ptr tree_; + std::shared_ptr tree_; ExtraInfo extra_info_; HostPythonNode* CopyTree(HostTraceEventNode* root); }; diff --git a/paddle/fluid/platform/profiler/profiler_test.cc b/paddle/fluid/platform/profiler/profiler_test.cc index 32310b9e86228468a0b7e1e94f302a35bb834f8a..f2c867ffff21790719e3e70f9a9e9c86168f2a37 100644 --- a/paddle/fluid/platform/profiler/profiler_test.cc +++ b/paddle/fluid/platform/profiler/profiler_test.cc @@ -46,7 +46,7 @@ TEST(ProfilerTest, TestHostTracer) { 3); } auto profiler_result = profiler->Stop(); - auto& nodetree = profiler_result->GetNodeTrees(); + auto nodetree = profiler_result->GetNodeTrees(); std::set host_events; for (const auto pair : nodetree->Traverse(true)) { for (const auto evt : pair.second) { @@ -79,7 +79,7 @@ TEST(ProfilerTest, TestCudaTracer) { hipStreamSynchronize(stream); #endif auto profiler_result = profiler->Stop(); - auto& nodetree = profiler_result->GetNodeTrees(); + auto nodetree = profiler_result->GetNodeTrees(); std::vector runtime_events; for (const auto pair : nodetree->Traverse(true)) { for (const auto host_node : pair.second) {