From 0288bad37219fa8a015bb0ca309ccd58289a9ad3 Mon Sep 17 00:00:00 2001 From: fuwenguang Date: Sat, 12 Oct 2024 15:36:06 +0800 Subject: [PATCH 1/3] Fix the issue of incorrect External id for non-PyTorch activities --- libkineto/src/output_json.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/libkineto/src/output_json.cpp b/libkineto/src/output_json.cpp index ab70ab4b2..4b3d17cc9 100644 --- a/libkineto/src/output_json.cpp +++ b/libkineto/src/output_json.cpp @@ -348,12 +348,18 @@ void ChromeTraceLogger::handleActivity(const libkineto::ITraceActivity& op) { duration += 2; // Still need it to end at the original point rounded up. } + int external_id = 0; + if (op.linkedActivity()) { + external_id = op.linkedActivity()->correlationId(); + } else if (op.type() == libkineto::ActivityType::CPU_OP || + op.type() == libkineto::ActivityType::CPU_INSTANT_EVENT || + op.type() == libkineto::ActivityType::USER_ANNOTATION || + op.type() == libkineto::ActivityType::PYTHON_FUNCTION) { + external_id = op.correlationId(); + } std::string arg_values = ""; - if (op.linkedActivity() && op.linkedActivity()->correlationId() != 0) { - arg_values.append(fmt::format( - "\"External id\": {}", op.linkedActivity()->correlationId())); - } else if (op.correlationId() != 0) { - arg_values.append(fmt::format("\"External id\": {}", op.correlationId())); + if (external_id != 0) { + arg_values.append(fmt::format("\"External id\": {}", external_id)); } std::string op_metadata = op.metadataJson(); sanitizeStrForJSON(op_metadata); From d2383435467d0e88c50374106a9b8443aac92e4f Mon Sep 17 00:00:00 2001 From: fuwenguang Date: Mon, 21 Oct 2024 11:09:24 +0800 Subject: [PATCH 2/3] use exclude list --- libkineto/src/output_json.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/libkineto/src/output_json.cpp b/libkineto/src/output_json.cpp index 4b3d17cc9..c834cc2d1 100644 --- a/libkineto/src/output_json.cpp +++ b/libkineto/src/output_json.cpp @@ -351,11 +351,22 @@ void ChromeTraceLogger::handleActivity(const libkineto::ITraceActivity& op) { int external_id = 0; if (op.linkedActivity()) { external_id = op.linkedActivity()->correlationId(); - } else if (op.type() == libkineto::ActivityType::CPU_OP || - op.type() == libkineto::ActivityType::CPU_INSTANT_EVENT || - op.type() == libkineto::ActivityType::USER_ANNOTATION || - op.type() == libkineto::ActivityType::PYTHON_FUNCTION) { - external_id = op.correlationId(); + } else { + // Some runtime events and kernels may not have a linked activity, + // should not set an "External id" for them. Otherwise, these events + // may be incorrectly linked to the other external events. + static const std::set excludedTypes = { + libkineto::ActivityType::GPU_MEMCPY, + libkineto::ActivityType::GPU_MEMSET, + libkineto::ActivityType::CONCURRENT_KERNEL, + libkineto::ActivityType::CUDA_RUNTIME, + libkineto::ActivityType::CUDA_DRIVER, + libkineto::ActivityType::PRIVATEUSE1_RUNTIME, + libkineto::ActivityType::PRIVATEUSE1_DRIVER + }; + if (excludedTypes.find(op.type()) == excludedTypes.end()) { + external_id = op.correlationId(); + } } std::string arg_values = ""; if (external_id != 0) { From c4415e74194c6ad8c99ba9e60f57055389ad2d54 Mon Sep 17 00:00:00 2001 From: Shivam Raikundalia Date: Mon, 21 Oct 2024 10:40:43 -0700 Subject: [PATCH 3/3] lint --- libkineto/src/output_json.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libkineto/src/output_json.cpp b/libkineto/src/output_json.cpp index 49f538015..bd4e10a20 100644 --- a/libkineto/src/output_json.cpp +++ b/libkineto/src/output_json.cpp @@ -365,14 +365,13 @@ void ChromeTraceLogger::handleActivity(const libkineto::ITraceActivity& op) { // should not set an "External id" for them. Otherwise, these events // may be incorrectly linked to the other external events. static const std::set excludedTypes = { - libkineto::ActivityType::GPU_MEMCPY, - libkineto::ActivityType::GPU_MEMSET, - libkineto::ActivityType::CONCURRENT_KERNEL, - libkineto::ActivityType::CUDA_RUNTIME, - libkineto::ActivityType::CUDA_DRIVER, - libkineto::ActivityType::PRIVATEUSE1_RUNTIME, - libkineto::ActivityType::PRIVATEUSE1_DRIVER - }; + libkineto::ActivityType::GPU_MEMCPY, + libkineto::ActivityType::GPU_MEMSET, + libkineto::ActivityType::CONCURRENT_KERNEL, + libkineto::ActivityType::CUDA_RUNTIME, + libkineto::ActivityType::CUDA_DRIVER, + libkineto::ActivityType::PRIVATEUSE1_RUNTIME, + libkineto::ActivityType::PRIVATEUSE1_DRIVER}; if (excludedTypes.find(op.type()) == excludedTypes.end()) { external_id = op.correlationId(); }