26#include <rocprofiler-sdk/agent.h>
27#include <rocprofiler-sdk/buffer.h>
28#include <rocprofiler-sdk/buffer_tracing.h>
29#include <rocprofiler-sdk/callback_tracing.h>
30#include <rocprofiler-sdk/context.h>
31#include <rocprofiler-sdk/counter_config.h>
32#include <rocprofiler-sdk/counters.h>
33#include <rocprofiler-sdk/device_counting_service.h>
34#include <rocprofiler-sdk/dispatch_counting_service.h>
35#include <rocprofiler-sdk/external_correlation.h>
36#include <rocprofiler-sdk/fwd.h>
37#include <rocprofiler-sdk/hip.h>
38#include <rocprofiler-sdk/hsa.h>
39#include <rocprofiler-sdk/intercept_table.h>
40#include <rocprofiler-sdk/internal_threading.h>
41#include <rocprofiler-sdk/marker.h>
42#include <rocprofiler-sdk/pc_sampling.h>
43#include <rocprofiler-sdk/cxx/container/c_array.hpp>
44#include <rocprofiler-sdk/cxx/name_info.hpp>
45#include <rocprofiler-sdk/cxx/utility.hpp>
47#include <cereal/archives/binary.hpp>
48#include <cereal/archives/json.hpp>
49#include <cereal/archives/portable_binary.hpp>
50#include <cereal/cereal.hpp>
51#include <cereal/types/array.hpp>
52#include <cereal/types/atomic.hpp>
53#include <cereal/types/bitset.hpp>
54#include <cereal/types/chrono.hpp>
55#include <cereal/types/common.hpp>
56#include <cereal/types/complex.hpp>
57#include <cereal/types/deque.hpp>
58#include <cereal/types/functional.hpp>
59#include <cereal/types/list.hpp>
60#include <cereal/types/map.hpp>
61#include <cereal/types/optional.hpp>
62#include <cereal/types/queue.hpp>
63#include <cereal/types/set.hpp>
64#include <cereal/types/stack.hpp>
65#include <cereal/types/string.hpp>
66#include <cereal/types/unordered_map.hpp>
67#include <cereal/types/unordered_set.hpp>
68#include <cereal/types/utility.hpp>
69#include <cereal/types/variant.hpp>
70#include <cereal/types/vector.hpp>
77#define ROCP_SDK_SAVE_DATA_FIELD(FIELD) ar(make_nvp(#FIELD, data.FIELD))
78#define ROCP_SDK_SAVE_DATA_VALUE(NAME, VALUE) ar(make_nvp(NAME, data.VALUE))
79#define ROCP_SDK_SAVE_VALUE(NAME, VALUE) ar(make_nvp(NAME, VALUE))
80#define ROCP_SDK_SAVE_DATA_CSTR(FIELD) \
81 ar(make_nvp(#FIELD, std::string{data.FIELD ? data.FIELD : ""}))
82#define ROCP_SDK_SAVE_DATA_BITFIELD(NAME, VALUE) \
84 auto _val = data.VALUE; \
85 ar(make_nvp(NAME, _val)); \
88#if !defined(ROCPROFILER_SDK_CEREAL_NAMESPACE_BEGIN)
89# define ROCPROFILER_SDK_CEREAL_NAMESPACE_BEGIN \
94#if !defined(ROCPROFILER_SDK_CEREAL_NAMESPACE_END)
95# define ROCPROFILER_SDK_CEREAL_NAMESPACE_END }
102namespace serialization
104struct buffer_tracing_args
106 std::string type = {};
107 std::string name = {};
108 std::string value = {};
111template <
typename Tp>
113get_buffer_tracing_args(Tp& data)
120 const char* arg_type,
121 const char* arg_name,
122 const char* arg_value_str,
123 void* cb_data) ->
int {
124 if(!cb_data)
return 1;
126 auto* vec =
static_cast<std::vector<buffer_tracing_args>*
>(cb_data);
127 auto sz = std::max<size_t>(arg_number + 1, vec->size());
128 vec->resize(sz, buffer_tracing_args{});
129 vec->at(arg_number) = buffer_tracing_args{arg_type, arg_name, arg_value_str};
134 auto ret = std::vector<buffer_tracing_args>{};
137 rocprofiler_record_header_compute_hash(ROCPROFILER_BUFFER_CATEGORY_TRACING, data.kind);
138 record.payload = &data;
140 rocprofiler_iterate_buffer_tracing_record_args(record, populate_args_array, &ret);
148ROCPROFILER_SDK_CEREAL_NAMESPACE_BEGIN
150namespace sdk = ::rocprofiler::sdk;
152template <
typename ArchiveT>
154save(ArchiveT& ar,
const sdk::serialization::buffer_tracing_args& data)
156 ROCP_SDK_SAVE_DATA_FIELD(type);
157 ROCP_SDK_SAVE_DATA_FIELD(name);
158 ROCP_SDK_SAVE_DATA_FIELD(value);
161template <
typename ArchiveT>
165 ROCP_SDK_SAVE_DATA_FIELD(handle);
168template <
typename ArchiveT>
172 ROCP_SDK_SAVE_DATA_FIELD(handle);
175template <
typename ArchiveT>
177save(ArchiveT& ar, hsa_agent_t data)
179 ROCP_SDK_SAVE_DATA_FIELD(handle);
182template <
typename ArchiveT>
186 ROCP_SDK_SAVE_DATA_FIELD(handle);
189template <
typename ArchiveT>
193 ROCP_SDK_SAVE_DATA_FIELD(handle);
196template <
typename ArchiveT>
200 ROCP_SDK_SAVE_DATA_FIELD(handle);
203template <
typename ArchiveT>
207 ROCP_SDK_SAVE_DATA_FIELD(internal);
208 ROCP_SDK_SAVE_DATA_VALUE(
"external", external.value);
209 ROCP_SDK_SAVE_DATA_VALUE(
"ancestor", ancestor);
212template <
typename ArchiveT>
216 ROCP_SDK_SAVE_DATA_FIELD(internal);
217 ROCP_SDK_SAVE_DATA_VALUE(
"external", external.value);
220template <
typename ArchiveT>
224 ROCP_SDK_SAVE_DATA_FIELD(x);
225 ROCP_SDK_SAVE_DATA_FIELD(y);
226 ROCP_SDK_SAVE_DATA_FIELD(z);
229template <
typename ArchiveT>
233 ROCP_SDK_SAVE_DATA_FIELD(handle);
236template <
typename ArchiveT>
240 ROCP_SDK_SAVE_DATA_FIELD(size);
241 ROCP_SDK_SAVE_DATA_FIELD(code_object_id);
242 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
243 ROCP_SDK_SAVE_DATA_CSTR(uri);
244 ROCP_SDK_SAVE_DATA_FIELD(load_base);
245 ROCP_SDK_SAVE_DATA_FIELD(load_size);
246 ROCP_SDK_SAVE_DATA_FIELD(load_delta);
247 ROCP_SDK_SAVE_DATA_FIELD(storage_type);
248 if(data.
storage_type == ROCPROFILER_CODE_OBJECT_STORAGE_TYPE_FILE)
250 ROCP_SDK_SAVE_DATA_FIELD(storage_file);
252 else if(data.
storage_type == ROCPROFILER_CODE_OBJECT_STORAGE_TYPE_MEMORY)
254 ROCP_SDK_SAVE_DATA_FIELD(memory_base);
255 ROCP_SDK_SAVE_DATA_FIELD(memory_size);
259template <
typename ArchiveT>
263 ROCP_SDK_SAVE_DATA_FIELD(size);
264 ROCP_SDK_SAVE_DATA_FIELD(kernel_id);
265 ROCP_SDK_SAVE_DATA_FIELD(code_object_id);
266 ROCP_SDK_SAVE_DATA_CSTR(kernel_name);
267 ROCP_SDK_SAVE_DATA_FIELD(kernel_object);
268 ROCP_SDK_SAVE_DATA_FIELD(kernarg_segment_size);
269 ROCP_SDK_SAVE_DATA_FIELD(kernarg_segment_alignment);
270 ROCP_SDK_SAVE_DATA_FIELD(group_segment_size);
271 ROCP_SDK_SAVE_DATA_FIELD(private_segment_size);
272 ROCP_SDK_SAVE_DATA_FIELD(sgpr_count);
273 ROCP_SDK_SAVE_DATA_FIELD(arch_vgpr_count);
274 ROCP_SDK_SAVE_DATA_FIELD(accum_vgpr_count);
275 ROCP_SDK_SAVE_DATA_FIELD(kernel_code_entry_byte_offset);
276 ROCP_SDK_SAVE_DATA_FIELD(kernel_address);
279template <
typename ArchiveT>
281save(ArchiveT& ar, rocprofiler_callback_tracing_code_object_host_kernel_symbol_register_data_t data)
283 ROCP_SDK_SAVE_DATA_FIELD(size);
284 ROCP_SDK_SAVE_DATA_FIELD(host_function_id);
285 ROCP_SDK_SAVE_DATA_FIELD(kernel_id);
286 ROCP_SDK_SAVE_DATA_FIELD(code_object_id);
287 ROCP_SDK_SAVE_DATA_FIELD(host_function);
288 ROCP_SDK_SAVE_DATA_FIELD(modules);
289 ROCP_SDK_SAVE_DATA_CSTR(device_function);
290 ROCP_SDK_SAVE_DATA_FIELD(thread_limit);
291 ROCP_SDK_SAVE_DATA_FIELD(thread_ids);
292 ROCP_SDK_SAVE_DATA_FIELD(block_ids);
293 ROCP_SDK_SAVE_DATA_FIELD(block_dims);
294 ROCP_SDK_SAVE_DATA_FIELD(grid_dims);
295 ROCP_SDK_SAVE_DATA_FIELD(workgroup_size);
298template <
typename ArchiveT>
300save(ArchiveT& ar, rocprofiler_hsa_api_retval_t data)
302 ROCP_SDK_SAVE_DATA_FIELD(uint64_t_retval);
305template <
typename ArchiveT>
307save(ArchiveT& ar,
const hsa_queue_t& data)
309 ar(make_nvp(
"queue_id", data.id));
312template <
typename ArchiveT>
314save(ArchiveT& ar, hsa_amd_event_scratch_alloc_start_t data)
316 ar(make_nvp(
"queue_id", *data.queue));
317 ROCP_SDK_SAVE_DATA_FIELD(dispatch_id);
320template <
typename ArchiveT>
322save(ArchiveT& ar, hsa_amd_event_scratch_alloc_end_t data)
324 ar(make_nvp(
"queue_id", *data.queue));
325 ROCP_SDK_SAVE_DATA_FIELD(dispatch_id);
326 ROCP_SDK_SAVE_DATA_FIELD(size);
327 ROCP_SDK_SAVE_DATA_FIELD(num_slots);
328 ROCP_SDK_SAVE_DATA_FIELD(flags);
331template <
typename ArchiveT>
333save(ArchiveT& ar, hsa_amd_event_scratch_free_start_t data)
335 ar(make_nvp(
"queue_id", *data.queue));
338template <
typename ArchiveT>
340save(ArchiveT& ar, hsa_amd_event_scratch_free_end_t data)
342 ar(make_nvp(
"queue_id", *data.queue));
343 ROCP_SDK_SAVE_DATA_FIELD(flags);
346template <
typename ArchiveT>
348save(ArchiveT& ar, hsa_amd_event_scratch_async_reclaim_start_t data)
350 ar(make_nvp(
"queue_id", *data.queue));
353template <
typename ArchiveT>
355save(ArchiveT& ar, hsa_amd_event_scratch_async_reclaim_end_t data)
357 ar(make_nvp(
"queue_id", *data.queue));
358 ROCP_SDK_SAVE_DATA_FIELD(flags);
361template <
typename ArchiveT>
363save(ArchiveT& ar, rocprofiler_marker_api_retval_t data)
365 ROCP_SDK_SAVE_DATA_FIELD(int64_t_retval);
368template <
typename ArchiveT>
372 ROCP_SDK_SAVE_DATA_FIELD(size);
374 ROCP_SDK_SAVE_DATA_FIELD(retval);
377template <
typename ArchiveT>
381 ROCP_SDK_SAVE_DATA_FIELD(size);
383 ROCP_SDK_SAVE_DATA_FIELD(retval);
386template <
typename ArchiveT>
388save(ArchiveT& ar, rocprofiler_hip_api_retval_t data)
390 ROCP_SDK_SAVE_DATA_FIELD(uint64_t_retval);
393template <
typename ArchiveT>
397 ROCP_SDK_SAVE_DATA_FIELD(size);
399 ROCP_SDK_SAVE_DATA_FIELD(retval);
402template <
typename ArchiveT>
406 ROCP_SDK_SAVE_DATA_FIELD(size);
407 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
408 ROCP_SDK_SAVE_DATA_FIELD(queue_id);
409 ROCP_SDK_SAVE_DATA_FIELD(flags);
410 ROCP_SDK_SAVE_DATA_FIELD(args_kind);
413template <
typename ArchiveT>
417 ROCP_SDK_SAVE_DATA_FIELD(size);
418 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
419 ROCP_SDK_SAVE_DATA_FIELD(queue_id);
420 ROCP_SDK_SAVE_DATA_FIELD(kernel_id);
421 ROCP_SDK_SAVE_DATA_FIELD(dispatch_id);
422 ROCP_SDK_SAVE_DATA_FIELD(private_segment_size);
423 ROCP_SDK_SAVE_DATA_FIELD(group_segment_size);
424 ROCP_SDK_SAVE_DATA_FIELD(workgroup_size);
425 ROCP_SDK_SAVE_DATA_FIELD(grid_size);
428template <
typename ArchiveT>
432 ROCP_SDK_SAVE_DATA_FIELD(size);
433 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
434 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
435 ROCP_SDK_SAVE_DATA_FIELD(dispatch_info);
438template <
typename ArchiveT>
442 ROCP_SDK_SAVE_DATA_FIELD(size);
443 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
444 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
445 ROCP_SDK_SAVE_DATA_FIELD(dst_agent_id);
446 ROCP_SDK_SAVE_DATA_FIELD(src_agent_id);
447 ROCP_SDK_SAVE_DATA_FIELD(bytes);
450template <
typename ArchiveT>
454 ROCP_SDK_SAVE_DATA_FIELD(size);
455 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
456 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
457 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
458 ROCP_SDK_SAVE_VALUE(
"address", rocprofiler::sdk::utility::as_hex(data.
address.
handle, 16));
459 ROCP_SDK_SAVE_DATA_FIELD(allocation_size);
462template <
typename ArchiveT>
464save(ArchiveT& ar, rocprofiler_rccl_api_retval_t data)
466 ROCP_SDK_SAVE_DATA_FIELD(ncclResult_t_retval);
469template <
typename ArchiveT>
473 ROCP_SDK_SAVE_DATA_FIELD(size);
475 ROCP_SDK_SAVE_DATA_FIELD(retval);
478template <
typename ArchiveT>
480save(ArchiveT& ar, rocprofiler_rocdecode_api_retval_t data)
482 ROCP_SDK_SAVE_DATA_FIELD(uint64_t_retval);
485template <
typename ArchiveT>
489 ROCP_SDK_SAVE_DATA_FIELD(size);
490 ROCP_SDK_SAVE_DATA_FIELD(retval);
493template <
typename ArchiveT>
495save(ArchiveT& ar, rocprofiler_rocjpeg_api_retval_t data)
497 ROCP_SDK_SAVE_DATA_FIELD(rocJpegStatus_retval);
500template <
typename ArchiveT>
504 ROCP_SDK_SAVE_DATA_FIELD(size);
505 ROCP_SDK_SAVE_DATA_FIELD(retval);
508template <
typename ArchiveT>
512 ROCP_SDK_SAVE_DATA_FIELD(size);
516template <
typename ArchiveT>
520 ROCP_SDK_SAVE_DATA_FIELD(size);
521 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
522 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
523 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
524 ROCP_SDK_SAVE_DATA_FIELD(dispatch_info);
527template <
typename ArchiveT>
531 ROCP_SDK_SAVE_DATA_FIELD(size);
532 ROCP_SDK_SAVE_DATA_FIELD(num_records);
533 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
534 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
535 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
536 ROCP_SDK_SAVE_DATA_FIELD(dispatch_info);
539template <
typename ArchiveT>
543 ROCP_SDK_SAVE_DATA_FIELD(context_id);
544 ROCP_SDK_SAVE_DATA_FIELD(thread_id);
545 ROCP_SDK_SAVE_DATA_FIELD(kind);
546 ROCP_SDK_SAVE_DATA_FIELD(operation);
547 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
548 ROCP_SDK_SAVE_DATA_FIELD(phase);
551template <
typename ArchiveT,
typename Tp>
553save_buffer_tracing_api_record(ArchiveT& ar, Tp data)
555 ROCP_SDK_SAVE_DATA_FIELD(size);
556 ROCP_SDK_SAVE_DATA_FIELD(kind);
557 ROCP_SDK_SAVE_DATA_FIELD(operation);
558 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
559 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
560 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
561 ROCP_SDK_SAVE_DATA_FIELD(thread_id);
564template <
typename ArchiveT>
568 save_buffer_tracing_api_record(ar, data);
571template <
typename ArchiveT>
575 ROCP_SDK_SAVE_DATA_FIELD(
id);
576 ROCP_SDK_SAVE_DATA_FIELD(counter_value);
577 ROCP_SDK_SAVE_DATA_FIELD(dispatch_id);
580template <
typename ArchiveT>
584 save_buffer_tracing_api_record(ar, data);
587template <
typename ArchiveT>
591 save_buffer_tracing_api_record(ar, data);
592 auto args = sdk::serialization::get_buffer_tracing_args(data);
593 ROCP_SDK_SAVE_VALUE(
"args", args);
594 ROCP_SDK_SAVE_DATA_FIELD(retval);
597template <
typename ArchiveT>
601 save_buffer_tracing_api_record(ar, data);
604template <
typename ArchiveT>
608 save_buffer_tracing_api_record(ar, data);
611template <
typename ArchiveT>
615 save_buffer_tracing_api_record(ar, data);
618template <
typename ArchiveT>
622 save_buffer_tracing_api_record(ar, data);
623 auto args = sdk::serialization::get_buffer_tracing_args(data);
624 ROCP_SDK_SAVE_VALUE(
"args", args);
625 ROCP_SDK_SAVE_DATA_FIELD(retval);
628template <
typename ArchiveT>
632 save_buffer_tracing_api_record(ar, data);
635template <
typename ArchiveT>
639 ROCP_SDK_SAVE_DATA_VALUE(
"kind", kind);
640 ROCP_SDK_SAVE_DATA_VALUE(
"device", device_num);
641 ROCP_SDK_SAVE_DATA_VALUE(
"task_id", task_id);
642 ROCP_SDK_SAVE_DATA_VALUE(
"target_id", target_id);
645template <
typename ArchiveT>
647save(ArchiveT& ar, rocprofiler_buffer_tracing_ompt_target_data_op_t data)
649 ROCP_SDK_SAVE_DATA_VALUE(
"host_op_id", host_op_id);
650 ROCP_SDK_SAVE_DATA_VALUE(
"optype", optype);
651 ROCP_SDK_SAVE_DATA_VALUE(
"src_device_num", src_device_num);
652 ROCP_SDK_SAVE_DATA_VALUE(
"dst_device_num", dst_device_num);
653 ROCP_SDK_SAVE_DATA_VALUE(
"bytes", bytes);
656template <
typename ArchiveT>
658save(ArchiveT& ar, rocprofiler_buffer_tracing_ompt_target_kernel_t data)
660 ROCP_SDK_SAVE_DATA_VALUE(
"host_op_id", host_op_id);
661 ROCP_SDK_SAVE_DATA_VALUE(
"device_num", device_num);
662 ROCP_SDK_SAVE_DATA_VALUE(
"requested_num_teams", requested_num_teams);
665template <
typename ArchiveT>
669 save_buffer_tracing_api_record(ar, data);
671 if(data.
operation == ROCPROFILER_OMPT_ID_target_emi)
673 ROCP_SDK_SAVE_DATA_FIELD(target);
675 else if(data.
operation == ROCPROFILER_OMPT_ID_target_data_op_emi)
677 ROCP_SDK_SAVE_DATA_FIELD(target_data_op);
679 else if(data.
operation == ROCPROFILER_OMPT_ID_target_submit_emi)
681 ROCP_SDK_SAVE_DATA_FIELD(target_kernel);
685template <
typename ArchiveT>
689 ROCP_SDK_SAVE_DATA_FIELD(size);
690 ROCP_SDK_SAVE_DATA_FIELD(kind);
691 ROCP_SDK_SAVE_DATA_FIELD(operation);
692 ROCP_SDK_SAVE_DATA_FIELD(thread_id);
693 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
694 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
695 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
696 ROCP_SDK_SAVE_DATA_FIELD(dispatch_info);
699template <
typename ArchiveT>
703 ROCP_SDK_SAVE_DATA_FIELD(size);
704 ROCP_SDK_SAVE_DATA_FIELD(kind);
705 ROCP_SDK_SAVE_DATA_FIELD(operation);
706 ROCP_SDK_SAVE_DATA_FIELD(thread_id);
707 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
708 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
709 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
710 ROCP_SDK_SAVE_DATA_FIELD(dst_agent_id);
711 ROCP_SDK_SAVE_DATA_FIELD(src_agent_id);
712 ROCP_SDK_SAVE_DATA_FIELD(bytes);
715template <
typename ArchiveT>
719 ROCP_SDK_SAVE_DATA_FIELD(size);
720 ROCP_SDK_SAVE_DATA_FIELD(kind);
721 ROCP_SDK_SAVE_DATA_FIELD(operation);
722 ROCP_SDK_SAVE_DATA_FIELD(thread_id);
723 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
724 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
725 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
726 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
727 ROCP_SDK_SAVE_VALUE(
"address", rocprofiler::sdk::utility::as_hex(data.
address.
handle, 16));
728 ROCP_SDK_SAVE_DATA_FIELD(allocation_size);
731template <
typename ArchiveT>
735 ROCP_SDK_SAVE_DATA_FIELD(size);
736 ROCP_SDK_SAVE_DATA_FIELD(operation);
737 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
738 ROCP_SDK_SAVE_DATA_FIELD(pid);
739 ROCP_SDK_SAVE_DATA_FIELD(start_address);
740 ROCP_SDK_SAVE_DATA_FIELD(end_address);
741 ROCP_SDK_SAVE_DATA_FIELD(src_agent);
742 ROCP_SDK_SAVE_DATA_FIELD(dst_agent);
743 ROCP_SDK_SAVE_DATA_FIELD(prefetch_agent);
744 ROCP_SDK_SAVE_DATA_FIELD(preferred_agent);
745 ROCP_SDK_SAVE_DATA_FIELD(error_code);
748template <
typename ArchiveT>
752 ROCP_SDK_SAVE_DATA_FIELD(size);
753 ROCP_SDK_SAVE_DATA_FIELD(operation);
754 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
755 ROCP_SDK_SAVE_DATA_FIELD(pid);
756 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
757 ROCP_SDK_SAVE_DATA_FIELD(address);
760template <
typename ArchiveT>
764 ROCP_SDK_SAVE_DATA_FIELD(size);
765 ROCP_SDK_SAVE_DATA_FIELD(operation);
766 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
767 ROCP_SDK_SAVE_DATA_FIELD(pid);
768 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
771template <
typename ArchiveT>
775 ROCP_SDK_SAVE_DATA_FIELD(size);
776 ROCP_SDK_SAVE_DATA_FIELD(operation);
777 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
778 ROCP_SDK_SAVE_DATA_FIELD(pid);
779 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
780 ROCP_SDK_SAVE_DATA_FIELD(start_address);
781 ROCP_SDK_SAVE_DATA_FIELD(end_address);
784template <
typename ArchiveT>
788 ROCP_SDK_SAVE_DATA_FIELD(size);
789 ROCP_SDK_SAVE_DATA_FIELD(operation);
790 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
791 ROCP_SDK_SAVE_DATA_FIELD(pid);
792 ROCP_SDK_SAVE_DATA_FIELD(count);
795template <
typename ArchiveT>
799 ROCP_SDK_SAVE_DATA_FIELD(size);
800 ROCP_SDK_SAVE_DATA_FIELD(operation);
801 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
802 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
803 ROCP_SDK_SAVE_DATA_FIELD(pid);
804 ROCP_SDK_SAVE_DATA_FIELD(start_address);
805 ROCP_SDK_SAVE_DATA_FIELD(end_address);
806 ROCP_SDK_SAVE_DATA_FIELD(src_agent);
807 ROCP_SDK_SAVE_DATA_FIELD(dst_agent);
808 ROCP_SDK_SAVE_DATA_FIELD(prefetch_agent);
809 ROCP_SDK_SAVE_DATA_FIELD(preferred_agent);
810 ROCP_SDK_SAVE_DATA_FIELD(error_code);
813template <
typename ArchiveT>
817 ROCP_SDK_SAVE_DATA_FIELD(size);
818 ROCP_SDK_SAVE_DATA_FIELD(operation);
819 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
820 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
821 ROCP_SDK_SAVE_DATA_FIELD(pid);
822 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
823 ROCP_SDK_SAVE_DATA_FIELD(address);
826template <
typename ArchiveT>
830 ROCP_SDK_SAVE_DATA_FIELD(size);
831 ROCP_SDK_SAVE_DATA_FIELD(operation);
832 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
833 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
834 ROCP_SDK_SAVE_DATA_FIELD(pid);
835 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
838template <
typename ArchiveT>
842 ROCP_SDK_SAVE_DATA_FIELD(size);
843 ROCP_SDK_SAVE_DATA_FIELD(kind);
844 ROCP_SDK_SAVE_DATA_FIELD(operation);
845 ROCP_SDK_SAVE_DATA_FIELD(agent_id);
846 ROCP_SDK_SAVE_DATA_FIELD(queue_id);
847 ROCP_SDK_SAVE_DATA_FIELD(thread_id);
848 ROCP_SDK_SAVE_DATA_FIELD(start_timestamp);
849 ROCP_SDK_SAVE_DATA_FIELD(end_timestamp);
850 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
851 ROCP_SDK_SAVE_DATA_FIELD(flags);
852 ROCP_SDK_SAVE_DATA_FIELD(allocation_size);
855template <
typename ArchiveT>
859 ROCP_SDK_SAVE_DATA_FIELD(size);
860 ROCP_SDK_SAVE_DATA_FIELD(kind);
861 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
862 ROCP_SDK_SAVE_DATA_FIELD(internal_correlation_id);
865template <
typename ArchiveT>
867save(ArchiveT& ar, HsaCacheType data)
869 ROCP_SDK_SAVE_DATA_BITFIELD(
"Data", ui32.Data);
870 ROCP_SDK_SAVE_DATA_BITFIELD(
"Instruction", ui32.Instruction);
871 ROCP_SDK_SAVE_DATA_BITFIELD(
"CPU", ui32.CPU);
872 ROCP_SDK_SAVE_DATA_BITFIELD(
"HSACU", ui32.HSACU);
875template <
typename ArchiveT>
877save(ArchiveT& ar, HSA_LINKPROPERTY data)
879 ROCP_SDK_SAVE_DATA_BITFIELD(
"Override", ui32.Override);
880 ROCP_SDK_SAVE_DATA_BITFIELD(
"NonCoherent", ui32.NonCoherent);
881 ROCP_SDK_SAVE_DATA_BITFIELD(
"NoAtomics32bit", ui32.NoAtomics32bit);
882 ROCP_SDK_SAVE_DATA_BITFIELD(
"NoAtomics64bit", ui32.NoAtomics64bit);
883 ROCP_SDK_SAVE_DATA_BITFIELD(
"NoPeerToPeerDMA", ui32.NoPeerToPeerDMA);
886template <
typename ArchiveT>
888save(ArchiveT& ar, HSA_CAPABILITY data)
890 ROCP_SDK_SAVE_DATA_BITFIELD(
"HotPluggable", ui32.HotPluggable);
891 ROCP_SDK_SAVE_DATA_BITFIELD(
"HSAMMUPresent", ui32.HSAMMUPresent);
892 ROCP_SDK_SAVE_DATA_BITFIELD(
"SharedWithGraphics", ui32.SharedWithGraphics);
893 ROCP_SDK_SAVE_DATA_BITFIELD(
"QueueSizePowerOfTwo", ui32.QueueSizePowerOfTwo);
894 ROCP_SDK_SAVE_DATA_BITFIELD(
"QueueSize32bit", ui32.QueueSize32bit);
895 ROCP_SDK_SAVE_DATA_BITFIELD(
"QueueIdleEvent", ui32.QueueIdleEvent);
896 ROCP_SDK_SAVE_DATA_BITFIELD(
"VALimit", ui32.VALimit);
897 ROCP_SDK_SAVE_DATA_BITFIELD(
"WatchPointsSupported", ui32.WatchPointsSupported);
898 ROCP_SDK_SAVE_DATA_BITFIELD(
"WatchPointsTotalBits", ui32.WatchPointsTotalBits);
899 ROCP_SDK_SAVE_DATA_BITFIELD(
"DoorbellType", ui32.DoorbellType);
900 ROCP_SDK_SAVE_DATA_BITFIELD(
"AQLQueueDoubleMap", ui32.AQLQueueDoubleMap);
901 ROCP_SDK_SAVE_DATA_BITFIELD(
"DebugTrapSupported", ui32.DebugTrapSupported);
902 ROCP_SDK_SAVE_DATA_BITFIELD(
"WaveLaunchTrapOverrideSupported",
903 ui32.WaveLaunchTrapOverrideSupported);
904 ROCP_SDK_SAVE_DATA_BITFIELD(
"WaveLaunchModeSupported", ui32.WaveLaunchModeSupported);
905 ROCP_SDK_SAVE_DATA_BITFIELD(
"PreciseMemoryOperationsSupported",
906 ui32.PreciseMemoryOperationsSupported);
907 ROCP_SDK_SAVE_DATA_BITFIELD(
"DEPRECATED_SRAM_EDCSupport", ui32.DEPRECATED_SRAM_EDCSupport);
908 ROCP_SDK_SAVE_DATA_BITFIELD(
"Mem_EDCSupport", ui32.Mem_EDCSupport);
909 ROCP_SDK_SAVE_DATA_BITFIELD(
"RASEventNotify", ui32.RASEventNotify);
910 ROCP_SDK_SAVE_DATA_BITFIELD(
"ASICRevision", ui32.ASICRevision);
911 ROCP_SDK_SAVE_DATA_BITFIELD(
"SRAM_EDCSupport", ui32.SRAM_EDCSupport);
912 ROCP_SDK_SAVE_DATA_BITFIELD(
"SVMAPISupported", ui32.SVMAPISupported);
913 ROCP_SDK_SAVE_DATA_BITFIELD(
"CoherentHostAccess", ui32.CoherentHostAccess);
914 ROCP_SDK_SAVE_DATA_BITFIELD(
"DebugSupportedFirmware", ui32.DebugSupportedFirmware);
917template <
typename ArchiveT>
919save(ArchiveT& ar, HSA_MEMORYPROPERTY data)
921 ROCP_SDK_SAVE_DATA_BITFIELD(
"HotPluggable", ui32.HotPluggable);
922 ROCP_SDK_SAVE_DATA_BITFIELD(
"NonVolatile", ui32.NonVolatile);
925template <
typename ArchiveT>
927save(ArchiveT& ar, HSA_ENGINE_VERSION data)
929 ROCP_SDK_SAVE_DATA_BITFIELD(
"uCodeSDMA", uCodeSDMA);
930 ROCP_SDK_SAVE_DATA_BITFIELD(
"uCodeRes", uCodeRes);
933template <
typename ArchiveT>
935save(ArchiveT& ar, HSA_ENGINE_ID data)
937 ROCP_SDK_SAVE_DATA_BITFIELD(
"uCode", ui32.uCode);
938 ROCP_SDK_SAVE_DATA_BITFIELD(
"Major", ui32.Major);
939 ROCP_SDK_SAVE_DATA_BITFIELD(
"Minor", ui32.Minor);
940 ROCP_SDK_SAVE_DATA_BITFIELD(
"Stepping", ui32.Stepping);
943template <
typename ArchiveT>
947 ROCP_SDK_SAVE_DATA_FIELD(processor_id_low);
948 ROCP_SDK_SAVE_DATA_FIELD(size);
949 ROCP_SDK_SAVE_DATA_FIELD(level);
950 ROCP_SDK_SAVE_DATA_FIELD(cache_line_size);
951 ROCP_SDK_SAVE_DATA_FIELD(cache_lines_per_tag);
952 ROCP_SDK_SAVE_DATA_FIELD(association);
953 ROCP_SDK_SAVE_DATA_FIELD(latency);
954 ROCP_SDK_SAVE_DATA_FIELD(type);
956template <
typename ArchiveT>
960 ROCP_SDK_SAVE_DATA_FIELD(code_object_id);
961 ROCP_SDK_SAVE_DATA_FIELD(code_object_offset);
964template <
typename ArchiveT>
968 ROCP_SDK_SAVE_DATA_BITFIELD(
"chiplet", chiplet);
969 ROCP_SDK_SAVE_DATA_BITFIELD(
"wave_id", wave_id);
970 ROCP_SDK_SAVE_DATA_BITFIELD(
"simd_id", simd_id);
971 ROCP_SDK_SAVE_DATA_BITFIELD(
"pipe_id", pipe_id);
972 ROCP_SDK_SAVE_DATA_BITFIELD(
"cu_or_wgp_id", cu_or_wgp_id);
973 ROCP_SDK_SAVE_DATA_BITFIELD(
"shader_array_id", shader_array_id);
974 ROCP_SDK_SAVE_DATA_BITFIELD(
"shader_engine_id", shader_engine_id);
975 ROCP_SDK_SAVE_DATA_BITFIELD(
"workgroup_id ", workgroup_id);
976 ROCP_SDK_SAVE_DATA_BITFIELD(
"vm_id", vm_id);
977 ROCP_SDK_SAVE_DATA_BITFIELD(
"queue_id", queue_id);
978 ROCP_SDK_SAVE_DATA_BITFIELD(
"microengine_id", microengine_id);
981template <
typename ArchiveT>
985 ROCP_SDK_SAVE_DATA_FIELD(hw_id);
986 ROCP_SDK_SAVE_DATA_FIELD(pc);
987 ROCP_SDK_SAVE_DATA_FIELD(exec_mask);
988 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
989 ROCP_SDK_SAVE_DATA_FIELD(dispatch_id);
990 ROCP_SDK_SAVE_DATA_VALUE(
"corr_id", correlation_id);
991 ROCP_SDK_SAVE_DATA_VALUE(
"wrkgrp_id", workgroup_id);
992 ROCP_SDK_SAVE_DATA_BITFIELD(
"wave_in_grp", wave_in_group);
995template <
typename ArchiveT>
999 ROCP_SDK_SAVE_DATA_BITFIELD(
"has_mem_cnt", has_memory_counter);
1002template <
typename ArchiveT>
1006 ar(make_nvp(
"inst_type",
1010template <
typename ArchiveT>
1012save_pc_sampling_stall_reason(ArchiveT& ar,
1020template <
typename ArchiveT>
1024 save_pc_sampling_stall_reason(
1029 ROCP_SDK_SAVE_DATA_BITFIELD(
"dual_issue_valu", dual_issue_valu);
1032 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_valu", arb_state_issue_valu);
1033 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_matrix", arb_state_issue_matrix);
1034 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_lds", arb_state_issue_lds);
1035 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_lds_direct", arb_state_issue_lds_direct);
1036 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_scalar", arb_state_issue_scalar);
1037 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_vmem_tex", arb_state_issue_vmem_tex);
1038 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_flat", arb_state_issue_flat);
1039 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_exp", arb_state_issue_exp);
1040 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_misc", arb_state_issue_misc);
1041 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_issue_brmsg", arb_state_issue_brmsg);
1043 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_valu", arb_state_stall_valu);
1044 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_matrix", arb_state_stall_matrix);
1045 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_lds", arb_state_stall_lds);
1046 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_lds_direct", arb_state_stall_lds_direct);
1047 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_scalar", arb_state_stall_scalar);
1048 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_vmem_tex", arb_state_stall_vmem_tex);
1049 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_flat", arb_state_stall_flat);
1050 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_exp", arb_state_stall_exp);
1051 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_misc", arb_state_stall_misc);
1052 ROCP_SDK_SAVE_DATA_BITFIELD(
"arb_state_stall_brmsg", arb_state_stall_brmsg);
1055template <
typename ArchiveT>
1059 ROCP_SDK_SAVE_DATA_BITFIELD(
"load_cnt", load_cnt);
1060 ROCP_SDK_SAVE_DATA_BITFIELD(
"store_cnt", store_cnt);
1061 ROCP_SDK_SAVE_DATA_BITFIELD(
"bvh_cnt", bvh_cnt);
1062 ROCP_SDK_SAVE_DATA_BITFIELD(
"sample_cnt", sample_cnt);
1063 ROCP_SDK_SAVE_DATA_BITFIELD(
"ds_cnt", ds_cnt);
1064 ROCP_SDK_SAVE_DATA_BITFIELD(
"km_cnt", km_cnt);
1067template <
typename ArchiveT>
1072 ROCP_SDK_SAVE_DATA_FIELD(flags);
1075 ROCP_SDK_SAVE_DATA_FIELD(hw_id);
1076 ROCP_SDK_SAVE_DATA_FIELD(pc);
1077 ROCP_SDK_SAVE_DATA_FIELD(exec_mask);
1078 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
1079 ROCP_SDK_SAVE_DATA_FIELD(dispatch_id);
1080 ROCP_SDK_SAVE_DATA_VALUE(
"corr_id", correlation_id);
1081 ROCP_SDK_SAVE_DATA_VALUE(
"wrkgrp_id", workgroup_id);
1082 ROCP_SDK_SAVE_DATA_BITFIELD(
"wave_in_grp", wave_in_group);
1085 ROCP_SDK_SAVE_DATA_BITFIELD(
"wave_issued", wave_issued);
1086 save_pc_sampling_inst_type(
1088 ROCP_SDK_SAVE_DATA_BITFIELD(
"wave_cnt", wave_count);
1089 ROCP_SDK_SAVE_DATA_FIELD(snapshot);
1094 ROCP_SDK_SAVE_DATA_FIELD(memory_counters);
1098template <
typename ArchiveT>
1102 ROCP_SDK_SAVE_DATA_FIELD(type);
1103 ROCP_SDK_SAVE_DATA_FIELD(version_major);
1104 ROCP_SDK_SAVE_DATA_FIELD(version_minor);
1105 ROCP_SDK_SAVE_DATA_FIELD(node_from);
1106 ROCP_SDK_SAVE_DATA_FIELD(node_to);
1107 ROCP_SDK_SAVE_DATA_FIELD(weight);
1108 ROCP_SDK_SAVE_DATA_FIELD(min_latency);
1109 ROCP_SDK_SAVE_DATA_FIELD(max_latency);
1110 ROCP_SDK_SAVE_DATA_FIELD(min_bandwidth);
1111 ROCP_SDK_SAVE_DATA_FIELD(max_bandwidth);
1112 ROCP_SDK_SAVE_DATA_FIELD(recommended_transfer_size);
1113 ROCP_SDK_SAVE_DATA_FIELD(flags);
1116template <
typename ArchiveT>
1120 ROCP_SDK_SAVE_DATA_FIELD(heap_type);
1121 ROCP_SDK_SAVE_DATA_FIELD(flags);
1122 ROCP_SDK_SAVE_DATA_FIELD(width);
1123 ROCP_SDK_SAVE_DATA_FIELD(mem_clk_max);
1124 ROCP_SDK_SAVE_DATA_FIELD(size_in_bytes);
1127template <
typename ArchiveT>
1131 ROCP_SDK_SAVE_DATA_FIELD(method);
1132 ROCP_SDK_SAVE_DATA_FIELD(unit);
1133 ROCP_SDK_SAVE_DATA_FIELD(min_interval);
1134 ROCP_SDK_SAVE_DATA_FIELD(max_interval);
1135 ROCP_SDK_SAVE_DATA_FIELD(flags);
1138template <
typename ArchiveT>
1142 ROCP_SDK_SAVE_DATA_BITFIELD(
"hsa", hsa);
1143 ROCP_SDK_SAVE_DATA_BITFIELD(
"hip", hip);
1144 ROCP_SDK_SAVE_DATA_BITFIELD(
"rccl", rccl);
1145 ROCP_SDK_SAVE_DATA_BITFIELD(
"rocdecode", rocdecode);
1148template <
typename ArchiveT>
1152 ROCP_SDK_SAVE_DATA_FIELD(bytes);
1155template <
typename ArchiveT>
1159 ROCP_SDK_SAVE_DATA_FIELD(size);
1160 ROCP_SDK_SAVE_DATA_FIELD(
id);
1161 ROCP_SDK_SAVE_DATA_FIELD(type);
1162 ROCP_SDK_SAVE_DATA_FIELD(cpu_cores_count);
1163 ROCP_SDK_SAVE_DATA_FIELD(simd_count);
1164 ROCP_SDK_SAVE_DATA_FIELD(mem_banks_count);
1165 ROCP_SDK_SAVE_DATA_FIELD(caches_count);
1166 ROCP_SDK_SAVE_DATA_FIELD(io_links_count);
1167 ROCP_SDK_SAVE_DATA_FIELD(cpu_core_id_base);
1168 ROCP_SDK_SAVE_DATA_FIELD(simd_id_base);
1169 ROCP_SDK_SAVE_DATA_FIELD(max_waves_per_simd);
1170 ROCP_SDK_SAVE_DATA_FIELD(lds_size_in_kb);
1171 ROCP_SDK_SAVE_DATA_FIELD(gds_size_in_kb);
1172 ROCP_SDK_SAVE_DATA_FIELD(num_gws);
1173 ROCP_SDK_SAVE_DATA_FIELD(wave_front_size);
1174 ROCP_SDK_SAVE_DATA_FIELD(num_xcc);
1175 ROCP_SDK_SAVE_DATA_FIELD(cu_count);
1176 ROCP_SDK_SAVE_DATA_FIELD(array_count);
1177 ROCP_SDK_SAVE_DATA_FIELD(num_shader_banks);
1178 ROCP_SDK_SAVE_DATA_FIELD(simd_arrays_per_engine);
1179 ROCP_SDK_SAVE_DATA_FIELD(cu_per_simd_array);
1180 ROCP_SDK_SAVE_DATA_FIELD(simd_per_cu);
1181 ROCP_SDK_SAVE_DATA_FIELD(max_slots_scratch_cu);
1182 ROCP_SDK_SAVE_DATA_FIELD(gfx_target_version);
1183 ROCP_SDK_SAVE_DATA_FIELD(vendor_id);
1184 ROCP_SDK_SAVE_DATA_FIELD(device_id);
1185 ROCP_SDK_SAVE_DATA_FIELD(location_id);
1186 ROCP_SDK_SAVE_DATA_FIELD(domain);
1187 ROCP_SDK_SAVE_DATA_FIELD(drm_render_minor);
1188 ROCP_SDK_SAVE_DATA_FIELD(num_sdma_engines);
1189 ROCP_SDK_SAVE_DATA_FIELD(num_sdma_xgmi_engines);
1190 ROCP_SDK_SAVE_DATA_FIELD(num_sdma_queues_per_engine);
1191 ROCP_SDK_SAVE_DATA_FIELD(num_cp_queues);
1192 ROCP_SDK_SAVE_DATA_FIELD(max_engine_clk_ccompute);
1193 ROCP_SDK_SAVE_DATA_FIELD(max_engine_clk_fcompute);
1194 ROCP_SDK_SAVE_DATA_FIELD(sdma_fw_version);
1195 ROCP_SDK_SAVE_DATA_FIELD(fw_version);
1196 ROCP_SDK_SAVE_DATA_FIELD(capability);
1197 ROCP_SDK_SAVE_DATA_FIELD(cu_per_engine);
1198 ROCP_SDK_SAVE_DATA_FIELD(max_waves_per_cu);
1199 ROCP_SDK_SAVE_DATA_FIELD(family_id);
1200 ROCP_SDK_SAVE_DATA_FIELD(workgroup_max_size);
1201 ROCP_SDK_SAVE_DATA_FIELD(grid_max_size);
1202 ROCP_SDK_SAVE_DATA_FIELD(local_mem_size);
1203 ROCP_SDK_SAVE_DATA_FIELD(hive_id);
1204 ROCP_SDK_SAVE_DATA_FIELD(gpu_id);
1205 ROCP_SDK_SAVE_DATA_FIELD(workgroup_max_dim);
1206 ROCP_SDK_SAVE_DATA_FIELD(grid_max_dim);
1207 ROCP_SDK_SAVE_DATA_CSTR(name);
1208 ROCP_SDK_SAVE_DATA_CSTR(vendor_name);
1209 ROCP_SDK_SAVE_DATA_CSTR(product_name);
1210 ROCP_SDK_SAVE_DATA_CSTR(model_name);
1211 ROCP_SDK_SAVE_DATA_FIELD(node_id);
1212 ROCP_SDK_SAVE_DATA_FIELD(logical_node_id);
1213 ROCP_SDK_SAVE_DATA_FIELD(logical_node_type_id);
1214 ROCP_SDK_SAVE_DATA_FIELD(runtime_visibility);
1215 ROCP_SDK_SAVE_DATA_FIELD(uuid);
1217 auto generate = [&](
auto name,
const auto* value, uint64_t size) {
1218 using value_type = std::remove_const_t<std::remove_pointer_t<
decltype(value)>>;
1219 auto vec = std::vector<value_type>{};
1221 for(uint64_t i = 0; i < size; ++i)
1222 vec.emplace_back(value[i]);
1223 ar(make_nvp(name, vec));
1231template <
typename ArchiveT>
1235 ROCP_SDK_SAVE_DATA_FIELD(
id);
1236 ROCP_SDK_SAVE_DATA_BITFIELD(
"is_constant", is_constant);
1237 ROCP_SDK_SAVE_DATA_BITFIELD(
"is_derived", is_derived);
1238 ROCP_SDK_SAVE_DATA_CSTR(name);
1239 ROCP_SDK_SAVE_DATA_CSTR(description);
1240 ROCP_SDK_SAVE_DATA_CSTR(block);
1241 ROCP_SDK_SAVE_DATA_CSTR(expression);
1244template <
typename ArchiveT>
1248 ROCP_SDK_SAVE_DATA_FIELD(
id);
1249 ROCP_SDK_SAVE_DATA_BITFIELD(
"is_constant", is_constant);
1250 ROCP_SDK_SAVE_DATA_BITFIELD(
"is_derived", is_derived);
1251 ROCP_SDK_SAVE_DATA_CSTR(name);
1252 ROCP_SDK_SAVE_DATA_CSTR(description);
1253 ROCP_SDK_SAVE_DATA_CSTR(block);
1254 ROCP_SDK_SAVE_DATA_CSTR(expression);
1256 ROCP_SDK_SAVE_VALUE(
1260 ROCP_SDK_SAVE_VALUE(
"instances",
1265template <
typename ArchiveT>
1269 ROCP_SDK_SAVE_DATA_CSTR(dimension_name);
1270 ROCP_SDK_SAVE_DATA_FIELD(index);
1273template <
typename ArchiveT>
1277 ROCP_SDK_SAVE_DATA_FIELD(instance_id);
1278 ROCP_SDK_SAVE_DATA_FIELD(counter_id);
1280 ROCP_SDK_SAVE_VALUE(
1285template <
typename ArchiveT>
1289 ROCP_SDK_SAVE_DATA_FIELD(
id);
1290 ROCP_SDK_SAVE_DATA_FIELD(instance_size);
1291 ROCP_SDK_SAVE_DATA_CSTR(name);
1294template <
typename ArchiveT>
1298 ROCP_SDK_SAVE_DATA_FIELD(size);
1299 ROCP_SDK_SAVE_DATA_FIELD(version);
1300 ROCP_SDK_SAVE_DATA_FIELD(instance);
1303template <
typename ArchiveT>
1307 ROCP_SDK_SAVE_DATA_FIELD(size);
1308 ROCP_SDK_SAVE_DATA_FIELD(kind);
1309 ROCP_SDK_SAVE_DATA_FIELD(operation);
1310 ROCP_SDK_SAVE_DATA_FIELD(correlation_id);
1311 ROCP_SDK_SAVE_DATA_FIELD(timestamp);
1312 ROCP_SDK_SAVE_DATA_FIELD(thread_id);
1313 ROCP_SDK_SAVE_DATA_FIELD(version);
1314 ROCP_SDK_SAVE_DATA_FIELD(instance);
1317template <
typename ArchiveT,
typename EnumT,
typename ValueT>
1319save(ArchiveT& ar,
const rocprofiler::sdk::utility::name_info<EnumT, ValueT>& data)
1322 for(
const auto& itr : data)
1323 ar(cereal::make_nvp(
"entry", itr));
1326template <
typename ArchiveT,
typename EnumT,
typename ValueT>
1328save(ArchiveT& ar,
const rocprofiler::sdk::utility::name_info_impl<EnumT, ValueT>& data)
1330 auto _name = std::string{data.name};
1331 auto _ops = std::vector<std::string>{};
1332 _ops.reserve(data.operations.size());
1334 ar(cereal::make_nvp(
"kind", _name));
1335 for(
auto itr : data.operations)
1336 _ops.emplace_back(itr);
1337 ar(cereal::make_nvp(
"operations", _ops));
1340template <
typename ArchiveT,
typename Tp>
1342save(ArchiveT& ar,
const rocprofiler::sdk::container::c_array<Tp>& data)
1344 ar(make_size_tag(data.size()));
1345 for(
auto itr : data)
1349template <
typename ArchiveT,
typename Tp>
1351save(ArchiveT& ar,
const rocprofiler::sdk::container::c_array<Tp*>& data)
1354 for(
auto* itr : data)
1357 ar(make_size_tag(_sz));
1358 for(
auto* itr : data)
1362ROCPROFILER_SDK_CEREAL_NAMESPACE_END
1364#undef ROCP_SDK_SAVE_DATA_FIELD
1365#undef ROCP_SDK_SAVE_DATA_VALUE
1366#undef ROCP_SDK_SAVE_DATA_CSTR
1367#undef ROCP_SDK_SAVE_DATA_BITFIELD
const rocprofiler_agent_io_link_t * io_links
array of IO link info
const rocprofiler_agent_mem_bank_t * mem_banks
array of memory bank info
const rocprofiler_agent_cache_t * caches
array of cache info
Cache information for an agent.
IO link information for an agent.
Memory bank information for an agent.
Provides an estimate about the runtime visibility of an agent based on the environment variables (ROC...
Stores the properties of an agent (CPU, GPU, etc.)
uint64_t handle
compatability
int32_t rocprofiler_tracing_operation_t
Tracing Operation ID. Depending on the kind, operations can be determined. If the value is equal to z...
rocprofiler_buffer_tracing_kind_t
Service Buffer Tracing Kind.
ROCProfiler Correlation ID record for async activity.
ROCProfiler Record Correlation ID.
(experimental) Details for the dimension, including its size, for a counter record.
(experimental) ROCProfiler Profile Counting Counter Record per instance.
Multi-dimensional struct of data used to describe GPU workgroup and grid sizes.
ROCProfiler kernel dispatch information.
Stores memory address for profiling.
rocprofiler_tracing_operation_t operation
Specification of the rocprofiler_ompt_operation_t.
rocprofiler_address_t address
starting address for memory allocation
ROCProfiler Buffer Correlation ID Retirement Tracer Record.
ROCProfiler Buffer HIP API Tracer Record.
ROCProfiler Buffer HIP API Tracer Record.
ROCProfiler Buffer HSA API Tracer Record.
ROCProfiler Buffer Kernel Dispatch Tracer Record.
ROCProfiler Buffer Dropped events event record, for when KFD reports that it has dropped some events.
ROCProfiler Buffer Page Fault event record from KFD.
ROCProfiler Buffer Page Migration event record from KFD.
ROCProfiler Buffer Queue event record from KFD.
ROCProfiler Buffer Unmap of memory from GPU event record from KFD.
ROCProfiler Buffer Page Fault (paired) record from KFD.
ROCProfiler Buffer Page Migration (paired) record from KFD.
ROCProfiler Buffer Queue suspend (paired) record from KFD.
ROCProfiler Buffer Marker Tracer Record.
ROCProfiler Buffer Memory Allocation Tracer Record.
ROCProfiler Buffer Memory Copy Tracer Record.
ROCProfiler Buffer OMPT Tracer Record.
Additional trace data for OpenMP target routines.
ROCProfiler Buffer RCCL API Record.
An extended ROCProfiler rocDecode API Tracer Record which includes function arguments....
ROCProfiler Buffer rocDecode API Record.
ROCProfiler Buffer rocJPEG API Record.
ROCProfiler Buffer Runtime Initialization Tracer Record.
ROCProfiler Buffer Scratch Memory Tracer Record.
rocprofiler_code_object_storage_type_t storage_type
storage type of the code object reader used to load the loaded code object
rocprofiler_address_t address
starting address for memory allocation
ROCProfiler Code Object Kernel Symbol Tracer Callback Record.
ROCProfiler Code Object Load Tracer Callback Record.
ROCProfiler HIP runtime and compiler API Tracer Callback Data.
ROCProfiler HSA API Callback Data.
ROCProfiler Kernel Dispatch Callback Tracer Record.
ROCProfiler Marker Tracer Callback Data.
ROCProfiler Memory Allocation Tracer Record.
ROCProfiler Memory Copy Callback Tracer Record.
ROCProfiler OMPT Callback Data.
ROCProfiler RCCL API Callback Data.
ROCProfiler rocDecode API Callback Data.
ROCProfiler rocJPEG API Callback Data.
ROCProfiler Runtime Initialization Data.
ROCProfiler Scratch Memory Callback Data.
const rocprofiler_counter_dimension_info_t ** dimensions
Array of pointers to dimension info structures, each representing one dimension and the position of t...
uint64_t dimensions_count
Number of dimensions associated with this instance.
uint64_t dimensions_instances_count
Number of unique instances for this counter, across all dimension combinations.
uint64_t dimensions_count
Number of dimensions for the counter.
const rocprofiler_counter_record_dimension_instance_info_t ** dimensions_instances
Array of pointers to instance info structs, each describing a unique instance and its specific dimens...
const rocprofiler_counter_record_dimension_info_t ** dimensions
Dimension information of the counter.
(experimental) Represents metadata about a single dimension of a counter instance.
(experimental) Counter info struct version 0
(experimental) Counter info struct version 1. Combines information from rocprofiler_counter_info_v0_t...
(experimental) Describes a specific counter instance and its position across multiple dimensions.
rocprofiler_pc_sampling_record_stochastic_header_t flags
Defines what fields are meaningful for the sample.
uint32_t reason_not_issued
The reason for not issuing an instruction. The field takes one of the value defined in rocprofiler_pc...
uint8_t has_memory_counter
pc sample provides memory counters information via rocprofiler_pc_sampling_memory_counters_t
uint8_t inst_type
instruction type, takes a value defined in rocprofiler_pc_sampling_instruction_type_t
rocprofiler_pc_sampling_instruction_not_issued_reason_t
(experimental) Enumeration describing reason for not issuing an instruction.
const char * rocprofiler_get_pc_sampling_instruction_type_name(rocprofiler_pc_sampling_instruction_type_t instruction_type)
(experimental) Return the string encoding of rocprofiler_pc_sampling_instruction_type_t value
rocprofiler_pc_sampling_instruction_type_t
(experimental) Enumeration describing type of sampled issued instruction.
const char * rocprofiler_get_pc_sampling_instruction_not_issued_reason_name(rocprofiler_pc_sampling_instruction_not_issued_reason_t not_issued_reason)
(experimental) Return the string encoding of rocprofiler_pc_sampling_instruction_not_issued_reason_t ...
(experimental) PC sampling configuration supported by a GPU agent.
(experimental) Information about the GPU part where wave was executing at the moment of sampling.
(experimental) Counters of issued but not yet completed instructions.
(experimental) ROCProfiler Host-Trap PC Sampling Record.
(experimental) ROCProfiler Stochastic PC Sampling Record.
(experimental) Data provided by stochastic sampling hardware.
(experimental) Sampled program counter.
(experimental) Kernel dispatch data for profile counting callbacks.
(experimental) ROCProfiler Profile Counting Counter Record Header Information