From ac32e3dd4eb6d06eb8f8ac2cb215134dc66404d4 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 fb2c65ef..6a5e156f 100644 --- a/libkineto/src/CuptiActivityProfiler.cpp +++ b/libkineto/src/CuptiActivityProfiler.cpp @@ -1249,9 +1249,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);