20 #ifdef KVIKIO_CUDA_FOUND
21 #include <nvtx3/nvtx3.hpp>
24 #include <kvikio/shim/cuda.hpp>
25 #include <kvikio/utils.hpp>
29 #ifdef KVIKIO_CUDA_FOUND
33 struct libkvikio_domain {
34 static constexpr
char const* name{
"libkvikio"};
37 using nvtx_scoped_range_type = nvtx3::scoped_range_in<libkvikio_domain>;
38 using nvtx_registered_string_type = nvtx3::registered_string_in<libkvikio_domain>;
41 #define KVIKIO_CONCAT_HELPER(x, y) x##y
42 #define KVIKIO_CONCAT(x, y) KVIKIO_CONCAT_HELPER(x, y)
46 #define KVIKIO_REGISTER_STRING(message) \
47 [](const char* a_message) -> auto& { \
48 static kvikio::nvtx_registered_string_type a_reg_str{a_message}; \
53 #define KVIKIO_NVTX_FUNC_RANGE_IMPL() NVTX3_FUNC_RANGE_IN(kvikio::libkvikio_domain)
56 #define KVIKIO_NVTX_SCOPED_RANGE_IMPL_3(message, payload_v, color) \
57 kvikio::nvtx_scoped_range_type KVIKIO_CONCAT(_kvikio_nvtx_range, __LINE__) \
59 nvtx3::event_attributes \
61 KVIKIO_REGISTER_STRING(message), nvtx3::payload{kvikio::convert_to_64bit(payload_v)}, color \
64 #define KVIKIO_NVTX_SCOPED_RANGE_IMPL_2(message, payload) \
65 KVIKIO_NVTX_SCOPED_RANGE_IMPL_3(message, payload, kvikio::NvtxManager::default_color())
66 #define KVIKIO_NVTX_SCOPED_RANGE_SELECTOR(_1, _2, _3, NAME, ...) NAME
67 #define KVIKIO_NVTX_SCOPED_RANGE_IMPL(...) \
68 KVIKIO_NVTX_SCOPED_RANGE_SELECTOR( \
69 __VA_ARGS__, KVIKIO_NVTX_SCOPED_RANGE_IMPL_3, KVIKIO_NVTX_SCOPED_RANGE_IMPL_2) \
73 #define KVIKIO_NVTX_MARKER_IMPL(message, payload_v) \
74 nvtx3::mark_in<kvikio::libkvikio_domain>(nvtx3::event_attributes{ \
75 KVIKIO_REGISTER_STRING(message), nvtx3::payload{kvikio::convert_to_64bit(payload_v)}})
79 #ifdef KVIKIO_CUDA_FOUND
80 using nvtx_color_type = nvtx3::color;
82 using nvtx_color_type = int;
141 #ifdef KVIKIO_CUDA_FOUND
142 #define KVIKIO_NVTX_FUNC_RANGE() KVIKIO_NVTX_FUNC_RANGE_IMPL()
144 #define KVIKIO_NVTX_FUNC_RANGE(...) \
166 #ifdef KVIKIO_CUDA_FOUND
167 #define KVIKIO_NVTX_SCOPED_RANGE(...) KVIKIO_NVTX_SCOPED_RANGE_IMPL(__VA_ARGS__)
169 #define KVIKIO_NVTX_SCOPED_RANGE(message, payload, ...) \
192 #ifdef KVIKIO_CUDA_FOUND
193 #define KVIKIO_NVTX_MARKER(message, payload) KVIKIO_NVTX_MARKER_IMPL(message, payload)
195 #define KVIKIO_NVTX_MARKER(message, payload) \
Utility singleton class for NVTX annotation.
static void rename_current_thread(std::string_view new_name) noexcept
Rename the current thread under the KvikIO NVTX domain.
static const nvtx_color_type & get_color_by_index(std::uint64_t idx) noexcept
Return the color at the given index from the internal color palette whose size n is a power of 2....
static const nvtx_color_type & default_color() noexcept
Return the default color.