Fix deadlocks during initialization (#167)
- More to come in later commit, below is just tidying some stuff up
- clang-tidy
- mpi_gotcha quiet about not finding funcs
- update to new papi config
- sampling block_samples / unblock_samples
- disable calling component's sample functions within sampler
- release doesn't strip library
- remove HSA and ROCP env variables from modulefile / setup-env
- preliminary support for LD_PRELOAD usage
- default sampling rate is 300 interrupts / second
- fixes various deadlock issues at startup
Tento commit je obsažen v:
@@ -24,10 +24,37 @@
|
||||
#include "library/runtime.hpp"
|
||||
#include "library/state.hpp"
|
||||
|
||||
#include <timemory/log/color.hpp>
|
||||
#include <timemory/utility/filepath.hpp>
|
||||
|
||||
namespace omnitrace
|
||||
{
|
||||
namespace debug
|
||||
{
|
||||
namespace
|
||||
{
|
||||
struct source_location_history
|
||||
{
|
||||
std::array<source_location, 10> data = {};
|
||||
size_t size = 0;
|
||||
};
|
||||
|
||||
auto&
|
||||
get_source_location_history()
|
||||
{
|
||||
static thread_local auto _v = source_location_history{};
|
||||
return _v;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
void
|
||||
set_source_location(source_location&& _v)
|
||||
{
|
||||
auto& _hist = get_source_location_history();
|
||||
auto _idx = _hist.size++;
|
||||
_hist.data.at(_idx % _hist.data.size()) = _v;
|
||||
}
|
||||
|
||||
lock::lock()
|
||||
: m_lk{ tim::type_mutex<decltype(std::cerr)>(), std::defer_lock }
|
||||
{
|
||||
@@ -46,5 +73,16 @@ lock::~lock()
|
||||
pop_thread_state();
|
||||
}
|
||||
}
|
||||
|
||||
FILE*
|
||||
get_file()
|
||||
{
|
||||
static FILE* _v = []() {
|
||||
auto&& _fname = tim::get_env<std::string>("OMNITRACE_LOG_FILE", "");
|
||||
tim::log::colorized() = _fname.empty();
|
||||
return (_fname.empty()) ? stderr : tim::filepath::fopen(_fname, "w");
|
||||
}();
|
||||
return _v;
|
||||
}
|
||||
} // namespace debug
|
||||
} // namespace omnitrace
|
||||
|
||||
Odkázat v novém úkolu
Zablokovat Uživatele