diff --git a/projects/rocprofiler-systems/source/lib/core/gpu.cpp b/projects/rocprofiler-systems/source/lib/core/gpu.cpp index fdfd70348d5..08cab7fb55d 100644 --- a/projects/rocprofiler-systems/source/lib/core/gpu.cpp +++ b/projects/rocprofiler-systems/source/lib/core/gpu.cpp @@ -31,6 +31,8 @@ } \ } // namespace ::tim::cereal +#include "common/defines.h" + #if !defined(ROCPROFSYS_USE_ROCM) # define ROCPROFSYS_USE_ROCM 0 #endif @@ -40,7 +42,6 @@ #include -#include #include #include "core/agent_manager.hpp" @@ -92,17 +93,6 @@ _amdsmi_is_initialized() return initialized; } -void -prevent_amdsmi_library_unload() -{ - static bool _initialized = false; - if(_initialized) return; - _initialized = true; - - dlopen("libamd_smi.so", RTLD_NOW | RTLD_NOLOAD | RTLD_NODELETE); - dlopen("librocm_smi64.so", RTLD_NOW | RTLD_NOLOAD | RTLD_NODELETE); -} - bool amdsmi_init() { @@ -113,8 +103,6 @@ amdsmi_init() ROCPROFSYS_AMD_SMI_CALL(::amdsmi_init(AMDSMI_INIT_AMD_GPUS)); get_processor_handles(); _amdsmi_is_initialized() = true; // Mark as initialized - - prevent_amdsmi_library_unload(); } catch(std::exception& _e) { LOG_ERROR("Exception thrown initializing amd-smi: {}", _e.what()); diff --git a/projects/rocprofiler-systems/source/lib/rocprof-sys/library/amd_smi.cpp b/projects/rocprofiler-systems/source/lib/rocprof-sys/library/amd_smi.cpp index 136487ecd05..da38dfe77b9 100644 --- a/projects/rocprofiler-systems/source/lib/rocprof-sys/library/amd_smi.cpp +++ b/projects/rocprofiler-systems/source/lib/rocprof-sys/library/amd_smi.cpp @@ -1272,7 +1272,10 @@ shutdown() try { - data::shutdown(); + if(data::shutdown()) + { + ROCPROFSYS_AMD_SMI_CALL(amdsmi_shut_down()); + } } catch(std::runtime_error& _e) { LOG_WARNING("Exception thrown when shutting down amd-smi: {}", _e.what()); diff --git a/projects/rocprofiler-systems/source/lib/rocprof-sys/library/components/exit_gotcha.cpp b/projects/rocprofiler-systems/source/lib/rocprof-sys/library/components/exit_gotcha.cpp index d1dd92a6648..ce8654f2063 100644 --- a/projects/rocprofiler-systems/source/lib/rocprof-sys/library/components/exit_gotcha.cpp +++ b/projects/rocprofiler-systems/source/lib/rocprof-sys/library/components/exit_gotcha.cpp @@ -24,6 +24,7 @@ #include "core/common.hpp" #include "core/config.hpp" #include "core/state.hpp" +#include "core/timemory.hpp" #include "library/runtime.hpp" #include @@ -33,9 +34,7 @@ #include "logger/debug.hpp" #include -#include #include -#include namespace rocprofsys { @@ -89,26 +88,6 @@ void exit_gotcha::operator()(const gotcha_data& _data, exit_func_t _func, int _ec) const { _exit_info = { true, _data.tool_id.find("quick") != std::string::npos, _ec }; - - if(config::get_use_amd_smi()) - { - threading::clear_callbacks(); - - if(get_state() < ::rocprofsys::State::Finalized && !is_child_process()) - { - LOG_DEBUG("Finalizing {} before calling {}({})...", get_exe_name(), - _data.tool_id, _ec); - - rocprofsys_finalize(); - } - - LOG_DEBUG("Calling _exit({}) in {} to avoid AMD SMI cleanup issues...", _ec, - get_exe_name().c_str()); - - std::fflush(nullptr); - _exit(_ec); - } - invoke_exit_gotcha(_data, _func, _ec); }