60#if !defined(TIMEMORY_COMPONENT_TYPES)
61# define TIMEMORY_COMPONENT_TYPES \
62 component::allinea_map, \
63 component::caliper_marker, \
64 component::caliper_config, \
65 component::caliper_loop_marker, \
66 component::cpu_clock, \
67 component::cpu_roofline_dp_flops, \
68 component::cpu_roofline_flops, \
69 component::cpu_roofline_sp_flops, \
70 component::cpu_util, \
71 component::craypat_counters, \
72 component::craypat_flush_buffer, \
73 component::craypat_heap_stats, \
74 component::craypat_record, \
75 component::craypat_region, \
76 component::cuda_event, \
77 component::cuda_profiler, \
78 component::cupti_activity, \
79 component::cupti_counters, \
80 component::cupti_pcsampling, \
81 component::current_peak_rss, \
82 component::data_tracker_integer, \
83 component::data_tracker_unsigned, \
84 component::data_tracker_floating, \
85 component::gperftools_cpu_profiler, \
86 component::gperftools_heap_profiler, \
87 component::gpu_roofline_dp_flops, \
88 component::gpu_roofline_flops, \
89 component::gpu_roofline_hp_flops, \
90 component::gpu_roofline_sp_flops, \
91 component::hip_event, \
92 component::kernel_mode_time, \
93 component::likwid_marker, \
94 component::likwid_nvmarker, \
95 component::malloc_gotcha, \
96 component::memory_allocations, \
97 component::monotonic_clock, \
98 component::monotonic_raw_clock, \
99 component::network_stats, \
100 component::num_io_in, \
101 component::num_io_out, \
102 component::num_major_page_faults, \
103 component::num_minor_page_faults, \
104 component::nvtx_marker, \
105 component::ompt_native_handle, \
106 component::page_rss, \
107 component::papi_array_t, \
108 component::papi_vector, \
109 component::peak_rss, \
110 component::perfetto_trace, \
111 component::printer, \
112 component::priority_context_switch, \
113 component::process_cpu_clock, \
114 component::process_cpu_util, \
115 component::read_bytes, \
116 component::read_char, \
117 component::roctx_marker, \
118 component::system_clock, \
119 component::tau_marker, \
120 component::thread_cpu_clock, \
121 component::thread_cpu_util, \
122 component::timestamp, \
123 component::trip_count, \
124 component::user_clock, \
125 component::user_global_bundle, \
126 component::user_mode_time, \
127 component::virtual_memory, \
128 component::voluntary_context_switch, \
129 component::vtune_event, \
130 component::vtune_frame, \
131 component::vtune_profiler, \
132 component::wall_clock, \
133 component::written_bytes, \
134 component::written_char
143#if !defined(TIMEMORY_MINIMAL_TUPLE_TYPES)
144# define TIMEMORY_MINIMAL_TUPLE_TYPES \
145 component::wall_clock, component::cpu_clock, component::cpu_util, \
146 component::peak_rss, component::user_global_bundle
151#if !defined(TIMEMORY_FULL_TUPLE_TYPES)
152# define TIMEMORY_FULL_TUPLE_TYPES \
153 component::wall_clock, component::system_clock, component::user_clock, \
154 component::cpu_util, component::peak_rss, component::user_global_bundle
159#if !defined(TIMEMORY_MINIMAL_LIST_TYPES)
160# define TIMEMORY_MINIMAL_LIST_TYPES \
161 component::papi_vector*, component::cuda_event*, component::nvtx_marker*, \
162 component::cupti_activity*, component::cupti_counters*, \
163 component::cpu_roofline_flops*, component::gpu_roofline_flops*
168#if !defined(TIMEMORY_FULL_LIST_TYPES)
169# define TIMEMORY_FULL_LIST_TYPES \
170 component::caliper*, component::tau_marker*, component::papi_vector*, \
171 component::cuda_event*, component::nvtx_marker*, component::cupti_activity*, \
172 component::cupti_counters*, component::cpu_roofline_flops*, \
173 component::gpu_roofline_flops*
179#if defined(DEBUG) && !defined(TIMEMORY_IGNORE_NATIVE_SIZE_MISMATCH)
183 std::tuple_size<std::tuple<TIMEMORY_COMPONENT_TYPES>>::value,
184 "Error! Number of components defined in macro TIMEMORY_COMPONENT_TYPES "
185 "does not equal the enumeration value of TIMEMORY_NATIVE_COMPONENTS_END "
186 "minus TIMEMORY_NATIVE_COMPONENT_INTERNAL_SIZE. It is likely that one of "
187 "these was updated and the other was not");
205template <
typename Tp>
208template <
size_t... Idx>
218template <
typename Tp>
221template <
size_t... Idx>
274#if !defined(TIMEMORY_LIBRARY_TYPE)
275# define TIMEMORY_LIBRARY_TYPE tim::available_component_list_t
280#if !defined(TIMEMORY_BUNDLE_TYPE)
281# define TIMEMORY_BUNDLE_TYPE tim::global_bundle_t
286#if !defined(TIMEMORY_OMPT_BUNDLE_TYPE)
287# define TIMEMORY_OMPT_BUNDLE_TYPE tim::ompt_bundle_t
292#if !defined(TIMEMORY_MPIP_BUNDLE_TYPE)
293# define TIMEMORY_MPIP_BUNDLE_TYPE tim::mpip_bundle_t
This is a variadic component wrapper where all components are allocated on the stack and cannot be di...
Declare the config types.
Declare the containers types.
#define TIMEMORY_NATIVE_COMPONENT_INTERNAL_SIZE
\macro TIMEMORY_NATIVE_COMPONENT_INTERNAL_SIZE
#define TIMEMORY_NATIVE_COMPONENTS_END
impl::filter_false< trait::is_available, T > available_t
impl::filter_true< concepts::is_placeholder, T > non_placeholder_t
convert_t< complete_types_t, component_list<> > complete_component_list_t
convert_t< complete_types_t, std::tuple<> > complete_tuple_t
convert_t< available_types_t, auto_list<> > available_auto_list_t
typename available_types< std::make_index_sequence< TIMEMORY_COMPONENTS_END > >::type available_types_t
convert_t< complete_types_t, component_tuple<> > complete_component_tuple_t
complete_component_list_t complete_list_t
typename complete_types< std::make_index_sequence< TIMEMORY_COMPONENTS_END > >::type complete_types_t
convert_t< available_types_t, auto_tuple<> > available_auto_tuple_t
convert_t< available_types_t, std::tuple<> > available_tuple_t
convert_t< complete_types_t, auto_tuple<> > complete_auto_tuple_t
convert_t< available_types_t, component_tuple<> > available_component_tuple_t
convert_t< complete_types_t, auto_list<> > complete_auto_list_t
convert_t< available_types_t, component_list<> > available_component_list_t
typename impl::convert< T, U >::type convert_t
std::integer_sequence< size_t, Idx... > index_sequence
Alias template index_sequence.
available_component_list_t available_list_t
lightweight tuple-alternative for meta-programming logic
Declare the operations types.
Declare the storage types.