From 1af59c6a177694732345e3de9a8f84bc2523264a Mon Sep 17 00:00:00 2001 From: "augusto.yjh" Date: Wed, 7 Aug 2024 11:11:18 +0800 Subject: [PATCH] do not call collectTrace in main thread --- libkineto/src/CuptiActivityProfiler.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libkineto/src/CuptiActivityProfiler.cpp b/libkineto/src/CuptiActivityProfiler.cpp index 9ef6b91b3..e413768a7 100644 --- a/libkineto/src/CuptiActivityProfiler.cpp +++ b/libkineto/src/CuptiActivityProfiler.cpp @@ -1232,9 +1232,12 @@ const time_point CuptiActivityProfiler::performRunLoopStep( // currentIter > 0 means this is an iteration-based collection, triggered by pytorch main thread, // it should be executed in another thread in case pytorch main thread is blocked - if (currentIter > 0 && !collectTraceThread) { - std::lock_guard guard(mutex_); - collectTraceThread = std::make_unique(&CuptiActivityProfiler::collectTrace, this, collection_done, now); + if (currentIter > 0) { + // if collectTraceThread is already running, there's no need to execute collectTrace twice. + if(!collectTraceThread){ + std::lock_guard guard(mutex_); + collectTraceThread = std::make_unique(&CuptiActivityProfiler::collectTrace, this, collection_done, now); + } break; } collectTrace(collection_done, now);