tracing#
This module provides the HPX tracing abstraction: a compile-time-dispatched API that annotates HPX runtime events (task lifecycle, futures, parcels, work stealing, worker sleep, and more) and routes those annotations to a single profiler backend selected at build time.
Three profiler backends are supported, with a no-op fallback when none is
enabled. HPX_SetupTracing.cmake errors out at configure time if more
than one of HPX_WITH_APEX, HPX_WITH_ITTNOTIFY or
HPX_WITH_TRACY is enabled.
tracy — the Tracy profiler, enabled with
HPX_WITH_TRACY.Intel ITT API, enabled with
HPX_WITH_ITTNOTIFY.APEX, enabled with
HPX_WITH_APEX.an empty backend when none of the above is enabled — the C++ hooks are
constexprno-ops and the tracing macros expand to nothing, so the hooks compile away when tracing is disabled.
Include hpx/modules/tracing.hpp to get the public API; it dispatches
at compile time to one of the per-backend headers under
hpx/tracing/backends/. Entries are declared in the hpx::tracing
namespace and the dispatch macros (HPX_TRACING_MARK_EVENT,
HPX_TRACING_ZONE, HPX_TRACING_PAUSE, HPX_TRACING_RESUME) live
in hpx/tracing/macros.hpp.
See Tracy integration for how to build HPX against Tracy and attach the profiler.