develop/projects/rocprofiler-systems/source/lib/rocprof-sys-user/rocprofiler-systems/categories.h Source File

develop/projects/rocprofiler-systems/source/lib/rocprof-sys-user/rocprofiler-systems/categories.h Source File#

rocprofiler-systems: develop/projects/rocprofiler-systems/source/lib/rocprof-sys-user/rocprofiler-systems/categories.h Source File
categories.h
Go to the documentation of this file.
1 // MIT License
2 //
3 // Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All Rights Reserved.
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a copy
6 // of this software and associated documentation files (the "Software"), to deal
7 // in the Software without restriction, including without limitation the rights
8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 // copies of the Software, and to permit persons to whom the Software is
10 // furnished to do so, subject to the following conditions:
11 //
12 // The above copyright notice and this permission notice shall be included in all
13 // copies or substantial portions of the Software.
14 //
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 // SOFTWARE.
22 
23 #ifndef ROCPROFSYS_CATEGORIES_H_
24 #define ROCPROFSYS_CATEGORIES_H_
25 
26 #include <stddef.h>
27 #include <stdint.h>
28 
29 #if defined(__cplusplus)
30 extern "C"
31 {
32 #endif
33 
34  /// @typedef rocprofsys_category_t
35  /// @brief Identifier for categories
36  ///
37  typedef enum ROCPROFSYS_CATEGORIES
38  {
39  // Do not use first enum value
41  // arrange these in the order most likely to
42  // be used since they have to be iterated over
114  // the value of below enum is used for iterating
115  // over the enum in C++ templates. It MUST
116  // be the last enumerated id
118 
119  /// @enum ROCPROFSYS_ANNOTATION_TYPE
120  /// @brief Identifier for the data type of the annotation.
121  /// if the data type is not a pointer, pass the address of
122  /// data.
123  /// @typedef ROCPROFSYS_ANNOTATION_TYPE rocprofsys_annotation_type_t
125  {
126  // Do not use first enum value
128  // arrange these in the order most likely to
129  // be used since they have to be iterated over
161  // the value of below enum is used for iterating
162  // over the enum in C++ templates. It MUST
163  // be the last enumerated id
166 
167  /// @struct rocprofsys_annotation
168  /// @brief A struct containing annotation data to be included in the perfetto trace.
169  ///
170  /// @code{.cpp}
171  /// #include <cstddef>
172  /// #include <cstdint>
173  ///
174  /// double
175  /// compute_residual(size_t n, double* data);
176  ///
177  /// double
178  /// compute(size_t n, double* data, size_t nitr, double tolerance)
179  /// {
180  /// rocprofsys_annotation_t _annotations[] = {
181  /// { "iteration", ROCPROFSYS_VALUE_SIZE_T, nullptr },
182  /// { "residual", ROCPROFSYS_VALUE_FLOAT64, nullptr },
183  /// { "data", ROCPROFSYS_VALUE_PTR, data },
184  /// { "size", ROCPROFSYS_VALUE_SIZE_T, &n },
185  /// { "tolerance", ROCPROFSYS_VALUE_FLOAT64, &tolerance },
186  /// nullptr
187  /// };
188  ///
189  /// double residual = tolerance;
190  /// for(size_t i = 0; i < nitr; ++i)
191  /// {
192  /// rocprofsys_user_push_annotated_region("compute", &_annotations);
193  ///
194  /// residual = compute_residual(n, data);
195  ///
196  /// _annotations[0].value = &i;
197  /// _annotations[1].value = &residual;
198  /// rocprofsys_user_pop_annotated_region("compute", &_annotations);
199  /// }
200  ///
201  /// return residual;
202  /// }
203  /// @endcode
204  /// @typedef rocprofsys_annotation rocprofsys_annotation_t
205  typedef struct rocprofsys_annotation
206  {
207  /// label for annotation
208  const char* name;
209  /// rocprofsys_annotation_type_t
210  uintptr_t type;
211  /// data to annotate
212  void* value;
214 
215 #if defined(__cplusplus)
216 }
217 #endif
218 
219 #endif // ROCPROFSYS_TYPES_H_
struct rocprofsys_annotation rocprofsys_annotation_t
const char * name
label for annotation
Definition: categories.h:208
enum ROCPROFSYS_CATEGORIES rocprofsys_category_t
Identifier for categories.
ROCPROFSYS_CATEGORIES
Definition: categories.h:38
@ ROCPROFSYS_CATEGORY_ROCM_SCRATCH_MEMORY
Definition: categories.h:52
@ ROCPROFSYS_CATEGORY_THREAD_CPU_TIME
Definition: categories.h:103
@ ROCPROFSYS_CATEGORY_AMD_SMI_XGMI_READ_DATA
Definition: categories.h:72
@ ROCPROFSYS_CATEGORY_AMD_SMI_AINIC_RX_UCAST_PKTS
Definition: categories.h:83
@ ROCPROFSYS_CATEGORY_KERNEL_HARDWARE_COUNTER
Definition: categories.h:108
@ ROCPROFSYS_CATEGORY_AMD_SMI
Definition: categories.h:61
@ ROCPROFSYS_CATEGORY_ROCM_MEMORY_ALLOCATE
Definition: categories.h:51
@ ROCPROFSYS_CATEGORY_AMD_SMI_AINIC
Definition: categories.h:78
@ ROCPROFSYS_CATEGORY_ROCM_MEMORY_COPY
Definition: categories.h:50
@ ROCPROFSYS_CATEGORY_NONE
Definition: categories.h:40
@ ROCPROFSYS_CATEGORY_HOST
Definition: categories.h:45
@ ROCPROFSYS_CATEGORY_UCX
Definition: categories.h:90
@ ROCPROFSYS_CATEGORY_AMD_SMI_XGMI_LINK_SPEED
Definition: categories.h:71
@ ROCPROFSYS_CATEGORY_AMD_SMI_AINIC_TX_UCAST_BYTES
Definition: categories.h:82
@ ROCPROFSYS_CATEGORY_THREAD_PEAK_MEMORY
Definition: categories.h:105
@ ROCPROFSYS_CATEGORY_AMD_SMI_AINIC_TX_CNP_PKTS
Definition: categories.h:80
@ ROCPROFSYS_CATEGORY_AMD_SMI_POWER
Definition: categories.h:66
@ ROCPROFSYS_CATEGORY_AMD_SMI_PCIE_BANDWIDTH_ACC
Definition: categories.h:76
@ ROCPROFSYS_CATEGORY_ROCM_KERNEL_DISPATCH
Definition: categories.h:49
@ ROCPROFSYS_CATEGORY_ROCM
Definition: categories.h:46
@ ROCPROFSYS_CATEGORY_AMD_SMI_TEMP
Definition: categories.h:65
@ ROCPROFSYS_CATEGORY_LAST
Definition: categories.h:113
@ ROCPROFSYS_CATEGORY_COMM_DATA
Definition: categories.h:92
@ ROCPROFSYS_CATEGORY_OVERFLOW_SAMPLING
Definition: categories.h:112
@ ROCPROFSYS_CATEGORY_PROCESS_SAMPLING
Definition: categories.h:91
@ ROCPROFSYS_CATEGORY_PROCESS_PAGE_FAULT
Definition: categories.h:99
@ ROCPROFSYS_CATEGORY_ROCM_ROCJPEG_API
Definition: categories.h:58
@ ROCPROFSYS_CATEGORY_AMD_SMI_BUSY_MM
Definition: categories.h:64
@ ROCPROFSYS_CATEGORY_PROCESS_VIRT
Definition: categories.h:96
@ ROCPROFSYS_CATEGORY_ROCM_MARKER_API
Definition: categories.h:56
@ ROCPROFSYS_CATEGORY_ROCM_HIP_STREAM
Definition: categories.h:53
@ ROCPROFSYS_CATEGORY_THREAD_WALL_TIME
Definition: categories.h:102
@ ROCPROFSYS_CATEGORY_ROCM_OMPT_API
Definition: categories.h:60
@ ROCPROFSYS_CATEGORY_AMD_SMI_VCN_ACTIVITY
Definition: categories.h:68
@ ROCPROFSYS_CATEGORY_MPI
Definition: categories.h:89
@ ROCPROFSYS_CATEGORY_PROCESS_PAGE
Definition: categories.h:95
@ ROCPROFSYS_CATEGORY_AMD_SMI_XGMI_WRITE_DATA
Definition: categories.h:73
@ ROCPROFSYS_CATEGORY_SAMPLING
Definition: categories.h:86
@ ROCPROFSYS_CATEGORY_ROCM_PAGE_MIGRATION
Definition: categories.h:54
@ ROCPROFSYS_CATEGORY_CAUSAL
Definition: categories.h:93
@ ROCPROFSYS_CATEGORY_ROCM_COUNTER_COLLECTION
Definition: categories.h:55
@ ROCPROFSYS_CATEGORY_AMD_SMI_JPEG_ACTIVITY
Definition: categories.h:69
@ ROCPROFSYS_CATEGORY_TIMER_SAMPLING
Definition: categories.h:111
@ ROCPROFSYS_CATEGORY_ROCM_RCCL
Definition: categories.h:85
@ ROCPROFSYS_CATEGORY_USER
Definition: categories.h:44
@ ROCPROFSYS_CATEGORY_PTHREAD
Definition: categories.h:87
@ ROCPROFSYS_CATEGORY_KOKKOS
Definition: categories.h:88
@ ROCPROFSYS_CATEGORY_PYTHON
Definition: categories.h:43
@ ROCPROFSYS_CATEGORY_AMD_SMI_PCIE_LINK_SPEED
Definition: categories.h:75
@ ROCPROFSYS_CATEGORY_ROCM_ROCDECODE_API
Definition: categories.h:57
@ ROCPROFSYS_CATEGORY_CPU_FREQ
Definition: categories.h:94
@ ROCPROFSYS_CATEGORY_PROCESS_KERNEL_MODE_TIME
Definition: categories.h:101
@ ROCPROFSYS_CATEGORY_THREAD_PAGE_FAULT
Definition: categories.h:104
@ ROCPROFSYS_CATEGORY_ROCM_HIP_API
Definition: categories.h:47
@ ROCPROFSYS_CATEGORY_AMD_SMI_PCIE_BANDWIDTH_INST
Definition: categories.h:77
@ ROCPROFSYS_CATEGORY_AMD_SMI_PCIE_LINK_WIDTH
Definition: categories.h:74
@ ROCPROFSYS_CATEGORY_AMD_SMI_BUSY_GFX
Definition: categories.h:62
@ ROCPROFSYS_CATEGORY_AMD_SMI_AINIC_RX_UCAST_BYTES
Definition: categories.h:81
@ ROCPROFSYS_CATEGORY_AMD_SMI_AINIC_TX_UCAST_PKTS
Definition: categories.h:84
@ ROCPROFSYS_CATEGORY_THREAD_CONTEXT_SWITCH
Definition: categories.h:106
@ ROCPROFSYS_CATEGORY_PROCESS_PEAK
Definition: categories.h:97
@ ROCPROFSYS_CATEGORY_PROCESS_USER_MODE_TIME
Definition: categories.h:100
@ ROCPROFSYS_CATEGORY_ROCM_HSA_API
Definition: categories.h:48
@ ROCPROFSYS_CATEGORY_AMD_SMI_BUSY_UMC
Definition: categories.h:63
@ ROCPROFSYS_CATEGORY_AMD_SMI_AINIC_RX_CNP_PKTS
Definition: categories.h:79
@ ROCPROFSYS_CATEGORY_ROCM_RCCL_API
Definition: categories.h:59
@ ROCPROFSYS_CATEGORY_PROCESS_CONTEXT_SWITCH
Definition: categories.h:98
@ ROCPROFSYS_CATEGORY_THREAD_HARDWARE_COUNTER
Definition: categories.h:107
@ ROCPROFSYS_CATEGORY_VAAPI
Definition: categories.h:110
@ ROCPROFSYS_CATEGORY_AMD_SMI_XGMI_LINK_WIDTH
Definition: categories.h:70
@ ROCPROFSYS_CATEGORY_NUMA
Definition: categories.h:109
@ ROCPROFSYS_CATEGORY_AMD_SMI_MEMORY_USAGE
Definition: categories.h:67
enum ROCPROFSYS_ANNOTATION_TYPE rocprofsys_annotation_type_t
void * value
data to annotate
Definition: categories.h:212
unsigned long type
rocprofsys_annotation_type_t
Definition: categories.h:210
ROCPROFSYS_ANNOTATION_TYPE
Identifier for the data type of the annotation. if the data type is not a pointer,...
Definition: categories.h:125
@ ROCPROFSYS_INT32
Definition: categories.h:147
@ ROCPROFSYS_FP64
Definition: categories.h:142
@ ROCPROFSYS_UINT64
Definition: categories.h:138
@ ROCPROFSYS_VOID_P
Definition: categories.h:144
@ ROCPROFSYS_VALUE_FLOAT32
Definition: categories.h:152
@ ROCPROFSYS_VALUE_UINT16
Definition: categories.h:158
@ ROCPROFSYS_SIZE_T
Definition: categories.h:133
@ ROCPROFSYS_UINT32
Definition: categories.h:150
@ ROCPROFSYS_VALUE_NONE
Definition: categories.h:127
@ ROCPROFSYS_VALUE_FLOAT64
Definition: categories.h:140
@ ROCPROFSYS_UINT16
Definition: categories.h:159
@ ROCPROFSYS_FP32
Definition: categories.h:154
@ ROCPROFSYS_U32
Definition: categories.h:151
@ ROCPROFSYS_VALUE_CSTR
Definition: categories.h:130
@ ROCPROFSYS_VALUE_UINT64
Definition: categories.h:137
@ ROCPROFSYS_U64
Definition: categories.h:139
@ ROCPROFSYS_VALUE_INT64
Definition: categories.h:134
@ ROCPROFSYS_FLOAT64
Definition: categories.h:141
@ ROCPROFSYS_VALUE_LAST
Definition: categories.h:164
@ ROCPROFSYS_VALUE_UINT32
Definition: categories.h:149
@ ROCPROFSYS_INT16
Definition: categories.h:156
@ ROCPROFSYS_VALUE_SIZE_T
Definition: categories.h:132
@ ROCPROFSYS_VALUE_VOID_P
Definition: categories.h:143
@ ROCPROFSYS_I64
Definition: categories.h:136
@ ROCPROFSYS_U16
Definition: categories.h:160
@ ROCPROFSYS_STRING
Definition: categories.h:131
@ ROCPROFSYS_FLOAT32
Definition: categories.h:153
@ ROCPROFSYS_I32
Definition: categories.h:148
@ ROCPROFSYS_VALUE_INT32
Definition: categories.h:146
@ ROCPROFSYS_PTR
Definition: categories.h:145
@ ROCPROFSYS_I16
Definition: categories.h:157
@ ROCPROFSYS_INT64
Definition: categories.h:135
@ ROCPROFSYS_VALUE_INT16
Definition: categories.h:155
A struct containing annotation data to be included in the perfetto trace.
Definition: categories.h:206