From 262f1e9299530bceb8a8be601c72086efa82f356 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Thu, 15 Jun 2023 17:55:38 -0500 Subject: [PATCH] kokkosp update: disable deep copy tracing by default (#286) kokkosp update - disable tracing deep copies by default because inconsistent begin/end corrupts call-stack hierarchy - tracing deep copy operations can be enabled via `OMNITRACE_KOKKOSP_DEEP_COPY` --- source/lib/core/config.cpp | 5 +++++ source/lib/omnitrace/library/kokkosp.cpp | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/source/lib/core/config.cpp b/source/lib/core/config.cpp index 6bc637066a..2be9eae908 100644 --- a/source/lib/core/config.cpp +++ b/source/lib/core/config.cpp @@ -344,6 +344,11 @@ configure_settings(bool _init) "Set to [kokkos] to maintain old naming convention", "", "kokkos", "debugging", "advanced"); + OMNITRACE_CONFIG_SETTING( + bool, "OMNITRACE_KOKKOSP_DEEP_COPY", + "Enable tracking deep copies (warning: may corrupt flamegraph in perfetto)", + false, "kokkos", "advanced"); + OMNITRACE_CONFIG_SETTING(bool, "OMNITRACE_USE_OMPT", "Enable support for OpenMP-Tools", false, "openmp", "ompt", "backend"); diff --git a/source/lib/omnitrace/library/kokkosp.cpp b/source/lib/omnitrace/library/kokkosp.cpp index 6c18be9132..df19b5991e 100644 --- a/source/lib/omnitrace/library/kokkosp.cpp +++ b/source/lib/omnitrace/library/kokkosp.cpp @@ -88,9 +88,10 @@ setup_kernel_logger() namespace { bool _standalone_initialized = false; -std::vector _initialize_arguments = {}; +bool _kp_deep_copy = false; size_t _name_len_limit = 0; std::string _kp_prefix = {}; +std::vector _initialize_arguments = {}; template void @@ -273,6 +274,10 @@ extern "C" _kp_prefix = omnitrace::config::get_setting_value("OMNITRACE_KOKKOSP_PREFIX") .value_or(_kp_prefix); + + _kp_deep_copy = + omnitrace::config::get_setting_value("OMNITRACE_KOKKOSP_DEEP_COPY") + .value_or(_kp_deep_copy); } void kokkosp_finalize_library() @@ -490,8 +495,8 @@ extern "C" const void* dst_ptr, SpaceHandle src_handle, const char* src_name, const void* src_ptr, uint64_t size) { + if(!_kp_deep_copy || omnitrace::config::get_use_causal()) return; if(violates_name_rules(dst_name, src_name)) return; - if(omnitrace::config::get_use_causal()) return; OMNITRACE_SCOPED_THREAD_STATE(ThreadState::Internal); kokkosp::logger_t{}.mark(1, __FUNCTION__, dst_handle.name, dst_name, @@ -512,7 +517,8 @@ extern "C" void kokkosp_end_deep_copy() { - if(omnitrace::config::get_use_causal()) return; + if(!_kp_deep_copy || omnitrace::config::get_use_causal()) return; + OMNITRACE_SCOPED_THREAD_STATE(ThreadState::Internal); kokkosp::logger_t{}.mark(-1, __FUNCTION__); auto& _data = kokkosp::get_profiler_stack();