8#ifndef __STDC_FORMAT_MACROS
9#define __STDC_FORMAT_MACROS
22#define _TOOL_PREFIX ""
28 "ompt_thread_UNDEFINED",
"ompt_thread_initial",
"ompt_thread_worker",
32 "ompt_task_UNDEFINED",
37 "ompt_task_early_fulfill",
38 "ompt_task_late_fulfill",
40 "ompt_taskwait_complete"
43 "ompt_cancel_parallel",
"ompt_cancel_sections",
44 "ompt_cancel_loop",
"ompt_cancel_taskgroup",
45 "ompt_cancel_activated",
"ompt_cancel_detected",
46 "ompt_cancel_discarded_task"};
51 "ompt_work_single_executor",
52 "ompt_work_single_other",
53 "ompt_work_workshare",
54 "ompt_work_distribute",
57 "ompt_work_workdistribute",
58 "ompt_work_loop_static",
59 "ompt_work_loop_dynamic",
60 "ompt_work_loop_guided",
61 "ompt_work_loop_other"};
65 "ompt_event_sections",
66 "ompt_event_single_in_block",
67 "ompt_event_single_others",
68 "ompt_event_workshare",
69 "ompt_event_distribute",
70 "ompt_event_taskloop",
72 "ompt_event_workdistribute",
73 "ompt_event_loop_static",
74 "ompt_event_loop_dynamic",
75 "ompt_event_loop_guided",
76 "ompt_event_loop_other"};
79 "ompt_dependence_type_UNDEFINED",
80 "ompt_dependence_type_in",
81 "ompt_dependence_type_out",
82 "ompt_dependence_type_inout",
83 "ompt_dependence_type_mutexinoutset",
84 "ompt_dependence_type_source",
85 "ompt_dependence_type_sink",
86 "ompt_dependence_type_inoutset",
113 "ompt_dependence_type_out_all_memory",
114 "ompt_dependence_type_inout_all_memory"
121 "barrier_implementation",
125 "barrier_implicit_workshare",
126 "barrier_implicit_parallel",
130 char *progress = buffer;
131 if (
type & ompt_task_initial)
132 progress += sprintf(progress,
"ompt_task_initial");
133 if (
type & ompt_task_implicit)
134 progress += sprintf(progress,
"ompt_task_implicit");
135 if (
type & ompt_task_explicit)
136 progress += sprintf(progress,
"ompt_task_explicit");
137 if (
type & ompt_task_target)
138 progress += sprintf(progress,
"ompt_task_target");
139 if (
type & ompt_task_taskwait)
140 progress += sprintf(progress,
"ompt_task_taskwait");
141 if (
type & ompt_task_importing)
142 progress += sprintf(progress,
"|ompt_task_importing");
143 if (
type & ompt_task_exporting)
144 progress += sprintf(progress,
"|ompt_task_exporting");
145 if (
type & ompt_task_undeferred)
146 progress += sprintf(progress,
"|ompt_task_undeferred");
147 if (
type & ompt_task_untied)
148 progress += sprintf(progress,
"|ompt_task_untied");
149 if (
type & ompt_task_final)
150 progress += sprintf(progress,
"|ompt_task_final");
151 if (
type & ompt_task_mergeable)
152 progress += sprintf(progress,
"|ompt_task_mergeable");
153 if (
type & ompt_task_merged)
154 progress += sprintf(progress,
"|ompt_task_merged");
176 if (!(enterf == (ompt_frame_application | ompt_frame_cfa) ||
177 enterf == (ompt_frame_runtime | ompt_frame_cfa))) {
178 printf(
"enter_frame_flags (%i) is invalid\n", enterf);
181 if (!(exitf == (ompt_frame_application | ompt_frame_cfa) ||
182 exitf == (ompt_frame_runtime | ompt_frame_cfa))) {
183 printf(
"exit_frame_flags (%i) is invalid\n", exitf);
186 assert(enterf == (ompt_frame_application | ompt_frame_cfa) ||
187 enterf == (ompt_frame_runtime | ompt_frame_cfa));
188 assert(exitf == (ompt_frame_application | ompt_frame_cfa) ||
189 exitf == (ompt_frame_runtime | ompt_frame_cfa));
192 int task_type, thread_num;
194 ompt_data_t *task_parallel_data;
195 ompt_data_t *task_data;
197 &task_parallel_data, &thread_num);
201 printf(
"%" PRIu64
": task level %d: parallel_id=%" PRIx64
202 ", task_id=%" PRIx64
", exit_frame=%p, reenter_frame=%p, "
203 "task_type=%s=%d, thread_num=%d\n",
205 exists_task ? task_parallel_data->value : 0,
206 exists_task ? task_data->value : 0,
frame->exit_frame.ptr,
207 frame->enter_frame.ptr, buffer, task_type, thread_num);
212#define get_frame_address(level) __builtin_frame_address(level)
214#define print_frame(level) \
215 printf("%" PRIu64 ": __builtin_frame_address(%d)=%p\n", \
216 ompt_get_thread_data()->value, level, get_frame_address(level))
220#if defined(TEST_NEED_PRINT_FRAME_FROM_OUTLINED_FN)
221#if defined(DEBUG) && defined(__clang__) && __clang_major__ >= 5
222#define print_frame_from_outlined_fn(level) print_frame(level + 1)
224#define print_frame_from_outlined_fn(level) print_frame(level)
227#if defined(__clang__) && __clang_major__ >= 5
229 "Clang 5.0 and later add an additional wrapper for outlined functions when compiling with debug information."
231 "Please define -DDEBUG iff you manually pass in -g to make the tests succeed!"
246#define define_ompt_label(id) \
255#define get_ompt_label_address(id) (&&ompt_label_##id)
259#define print_current_address(id) \
260 define_ompt_label(id) \
261 print_possible_return_addresses(get_ompt_label_address(id))
263#if KMP_ARCH_X86 || KMP_ARCH_X86_64
266#define print_possible_return_addresses(addr) \
267 printf("%" PRIu64 ": current_address=%p or %p for non-void functions\n", \
268 ompt_get_thread_data()->value, ((char *)addr) - 1, \
275#define print_possible_return_addresses(addr) \
276 printf("%" PRIu64 ": current_address=%p or %p\n", \
277 ompt_get_thread_data()->value, ((char *)addr) - 8, \
279#elif KMP_ARCH_AARCH64 || KMP_ARCH_AARCH64_32
286#define print_possible_return_addresses(addr) \
287 printf("%" PRIu64 ": current_address=%p or %p or %p\n", \
288 ompt_get_thread_data()->value, ((char *)addr) - 4, \
289 ((char *)addr) - 8, ((char *)addr) - 12)
290#elif KMP_ARCH_RISCV64
291#if __riscv_compressed
297#define print_possible_return_addresses(addr) \
298 printf("%" PRIu64 ": current_address=%p or %p\n", \
299 ompt_get_thread_data()->value, ((char *)addr) - 6, \
307#define print_possible_return_addresses(addr) \
308 printf("%" PRIu64 ": current_address=%p or %p\n", \
309 ompt_get_thread_data()->value, ((char *)addr) - 8, \
312#elif KMP_ARCH_LOONGARCH64
317#define print_possible_return_addresses(addr) \
318 printf("%" PRIu64 ": current_address=%p or %p or %p\n", \
319 ompt_get_thread_data()->value, ((char *)addr) - 4, \
320 ((char *)addr) - 8, ((char *)addr) - 12)
324#define print_possible_return_addresses(addr) \
325 printf("%" PRIu64 ": current_address=%p or %p\n", \
326 ompt_get_thread_data()->value, ((char *)addr) - 8, \
340#define print_possible_return_addresses(addr) \
341 printf("%" PRIu64 ": current_address=%p or %p or %p\n", \
342 ompt_get_thread_data()->value, ((char *)addr) - 2, \
343 ((char *)addr) - 8, ((char *)addr) - 12)
348#define print_possible_return_addresses(addr) \
349 printf("%" PRIu64 ": current_address=%p or %p\n", \
350 ompt_get_thread_data()->value, ((char *)addr) - 12, \
353#error Unsupported target architecture, cannot determine address offset!
364#define print_fuzzy_address(id) \
365 define_ompt_label(id) print_fuzzy_address_blocks(get_ompt_label_address(id))
369#define FUZZY_ADDRESS_DISCARD_NIBBLES 2
370#define FUZZY_ADDRESS_DISCARD_BYTES (1 << ((FUZZY_ADDRESS_DISCARD_NIBBLES) * 4))
371#define print_fuzzy_address_blocks(addr) \
372 printf("%" PRIu64 ": fuzzy_address=0x%" PRIx64 " or 0x%" PRIx64 \
373 " or 0x%" PRIx64 " or 0x%" PRIx64 " (%p)\n", \
374 ompt_get_thread_data()->value, \
375 ((uint64_t)addr) / FUZZY_ADDRESS_DISCARD_BYTES - 1, \
376 ((uint64_t)addr) / FUZZY_ADDRESS_DISCARD_BYTES, \
377 ((uint64_t)addr) / FUZZY_ADDRESS_DISCARD_BYTES + 1, \
378 ((uint64_t)addr) / FUZZY_ADDRESS_DISCARD_BYTES + 2, addr)
380#define register_ompt_callback_t(name, type) \
382 type f_##name = &on_##name; \
383 if (ompt_set_callback(name, (ompt_callback_t)f_##name) == ompt_set_never) \
384 printf("0: Could not register callback '" #name "'\n"); \
387#define register_ompt_callback(name) register_ompt_callback_t(name, name##_t)
389#ifndef USE_PRIVATE_TOOL
392 ompt_wait_id_t wait_id,
393 const void *codeptr_ra) {
395 case ompt_mutex_lock:
396 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_wait_lock: wait_id=%" PRIu64
397 ", hint=%" PRIu32
", impl=%" PRIu32
", codeptr_ra=%p \n",
400 case ompt_mutex_test_lock:
402 " ompt_event_wait_test_lock: wait_id=%" PRIu64
", hint=%" PRIu32
403 ", impl=%" PRIu32
", codeptr_ra=%p \n",
406 case ompt_mutex_nest_lock:
408 " ompt_event_wait_nest_lock: wait_id=%" PRIu64
", hint=%" PRIu32
409 ", impl=%" PRIu32
", codeptr_ra=%p \n",
412 case ompt_mutex_test_nest_lock:
414 " ompt_event_wait_test_nest_lock: wait_id=%" PRIu64
", hint=%" PRIu32
415 ", impl=%" PRIu32
", codeptr_ra=%p \n",
418 case ompt_mutex_critical:
420 " ompt_event_wait_critical: wait_id=%" PRIu64
", hint=%" PRIu32
421 ", impl=%" PRIu32
", codeptr_ra=%p \n",
424 case ompt_mutex_atomic:
426 " ompt_event_wait_atomic: wait_id=%" PRIu64
", hint=%" PRIu32
427 ", impl=%" PRIu32
", codeptr_ra=%p \n",
430 case ompt_mutex_ordered:
432 " ompt_event_wait_ordered: wait_id=%" PRIu64
", hint=%" PRIu32
433 ", impl=%" PRIu32
", codeptr_ra=%p \n",
442 ompt_wait_id_t wait_id,
443 const void *codeptr_ra) {
445 case ompt_mutex_lock:
447 " ompt_event_acquired_lock: wait_id=%" PRIu64
", codeptr_ra=%p \n",
450 case ompt_mutex_test_lock:
452 " ompt_event_acquired_test_lock: wait_id=%" PRIu64
453 ", codeptr_ra=%p \n",
456 case ompt_mutex_nest_lock:
458 " ompt_event_acquired_nest_lock_first: wait_id=%" PRIu64
459 ", codeptr_ra=%p \n",
462 case ompt_mutex_test_nest_lock:
464 " ompt_event_acquired_test_nest_lock_first: wait_id=%" PRIu64
465 ", codeptr_ra=%p \n",
468 case ompt_mutex_critical:
470 " ompt_event_acquired_critical: wait_id=%" PRIu64
471 ", codeptr_ra=%p \n",
474 case ompt_mutex_atomic:
476 " ompt_event_acquired_atomic: wait_id=%" PRIu64
", codeptr_ra=%p \n",
479 case ompt_mutex_ordered:
481 " ompt_event_acquired_ordered: wait_id=%" PRIu64
482 ", codeptr_ra=%p \n",
491 ompt_wait_id_t wait_id,
492 const void *codeptr_ra) {
494 case ompt_mutex_lock:
496 " ompt_event_release_lock: wait_id=%" PRIu64
", codeptr_ra=%p \n",
499 case ompt_mutex_nest_lock:
501 " ompt_event_release_nest_lock_last: wait_id=%" PRIu64
502 ", codeptr_ra=%p \n",
505 case ompt_mutex_critical:
507 " ompt_event_release_critical: wait_id=%" PRIu64
508 ", codeptr_ra=%p \n",
511 case ompt_mutex_atomic:
513 " ompt_event_release_atomic: wait_id=%" PRIu64
", codeptr_ra=%p \n",
516 case ompt_mutex_ordered:
518 " ompt_event_release_ordered: wait_id=%" PRIu64
", codeptr_ra=%p \n",
527 ompt_wait_id_t wait_id,
528 const void *codeptr_ra) {
530 case ompt_scope_begin:
532 " ompt_event_acquired_nest_lock_next: wait_id=%" PRIu64
533 ", codeptr_ra=%p \n",
538 " ompt_event_release_nest_lock_prev: wait_id=%" PRIu64
539 ", codeptr_ra=%p \n",
542 case ompt_scope_beginend:
543 printf(
"ompt_scope_beginend should never be passed to %s\n", __func__);
549 ompt_scope_endpoint_t endpoint,
550 ompt_data_t *parallel_data,
551 ompt_data_t *task_data,
552 const void *codeptr_ra) {
553 if (endpoint == ompt_scope_beginend) {
554 printf(
"ompt_scope_beginend should never be passed to %s\n", __func__);
557 if (kind == ompt_sync_region_reduction) {
558 printf(
"ompt_sync_region_reduction should never be passed to %s\n",
562 uint64_t parallel_data_value = parallel_data ? parallel_data->value : 0;
563 const char *begin_or_end = (endpoint == ompt_scope_begin) ?
"begin" :
"end";
564 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_%s_%s: parallel_id=%" PRIx64
565 ", task_id=%" PRIx64
", codeptr_ra=%p\n",
567 begin_or_end, parallel_data_value, task_data->value, codeptr_ra);
569 case ompt_sync_region_barrier:
570 case ompt_sync_region_barrier_implicit:
571 case ompt_sync_region_barrier_implicit_workshare:
572 case ompt_sync_region_barrier_implicit_parallel:
573 case ompt_sync_region_barrier_teams:
574 case ompt_sync_region_barrier_explicit:
575 case ompt_sync_region_barrier_implementation:
576 if (endpoint == ompt_scope_begin)
583 ompt_scope_endpoint_t endpoint,
584 ompt_data_t *parallel_data,
585 ompt_data_t *task_data,
586 const void *codeptr_ra) {
587 if (endpoint == ompt_scope_beginend) {
588 printf(
"ompt_scope_beginend should never be passed to %s\n", __func__);
591 if (kind == ompt_sync_region_reduction) {
592 printf(
"ompt_sync_region_reduction should never be passed to %s\n",
596 uint64_t parallel_data_value = parallel_data ? parallel_data->value : 0;
597 const char *begin_or_end = (endpoint == ompt_scope_begin) ?
"begin" :
"end";
599 " ompt_event_wait_%s_%s: parallel_id=%" PRIx64
", task_id=%" PRIx64
602 begin_or_end, parallel_data_value, task_data->value, codeptr_ra);
606 ompt_scope_endpoint_t endpoint,
607 ompt_data_t *parallel_data,
608 ompt_data_t *task_data,
609 const void *codeptr_ra) {
611 case ompt_scope_begin:
613 " ompt_event_reduction_begin: parallel_id=%" PRIx64
614 ", task_id=%" PRIx64
", codeptr_ra=%p\n",
616 (parallel_data) ? parallel_data->value : 0, task_data->value,
621 " ompt_event_reduction_end: parallel_id=%" PRIx64
622 ", task_id=%" PRIx64
", codeptr_ra=%p\n",
624 (parallel_data) ? parallel_data->value : 0, task_data->value,
627 case ompt_scope_beginend:
628 printf(
"ompt_scope_beginend should never be passed to %s\n", __func__);
634 const void *codeptr_ra) {
635 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_flush: codeptr_ra=%p\n",
636 thread_data->value, codeptr_ra);
640 const void *codeptr_ra) {
641 const char *first_flag_value;
642 const char *second_flag_value;
643 if (flags & ompt_cancel_parallel)
645 else if (flags & ompt_cancel_sections)
647 else if (flags & ompt_cancel_loop)
649 else if (flags & ompt_cancel_taskgroup)
652 if (flags & ompt_cancel_activated)
654 else if (flags & ompt_cancel_detected)
656 else if (flags & ompt_cancel_discarded_task)
659 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_cancel: task_id=%" PRIx64
660 ", flags=%s|%s=%" PRIu32
", codeptr_ra=%p\n",
662 second_flag_value, flags, codeptr_ra);
666 ompt_data_t *parallel_data,
667 ompt_data_t *task_data,
668 unsigned int team_size,
669 unsigned int thread_num,
int flags) {
671 case ompt_scope_begin:
673 printf(
"%s\n",
"0: task_data initially not null");
678 if (flags & ompt_task_initial) {
683 if (team_size == 1 && thread_num == 1 && parallel_data->ptr)
684 printf(
"%s\n",
"0: parallel_data initially not null");
687 " ompt_event_initial_task_begin: parallel_id=%" PRIx64
688 ", task_id=%" PRIx64
", actual_parallelism=%" PRIu32
689 ", index=%" PRIu32
", flags=%" PRIu32
"\n",
691 task_data->value, team_size, thread_num, flags);
694 " ompt_event_implicit_task_begin: parallel_id=%" PRIx64
695 ", task_id=%" PRIx64
", team_size=%" PRIu32
", thread_num=%" PRIu32
698 task_data->value, team_size, thread_num);
703 if (flags & ompt_task_initial) {
705 " ompt_event_initial_task_end: parallel_id=%" PRIx64
706 ", task_id=%" PRIx64
", actual_parallelism=%" PRIu32
707 ", index=%" PRIu32
"\n",
709 (parallel_data) ? parallel_data->value : 0, task_data->value,
710 team_size, thread_num);
713 " ompt_event_implicit_task_end: parallel_id=%" PRIx64
714 ", task_id=%" PRIx64
", team_size=%" PRIu32
", thread_num=%" PRIu32
717 (parallel_data) ? parallel_data->value : 0, task_data->value,
718 team_size, thread_num);
721 case ompt_scope_beginend:
722 printf(
"ompt_scope_beginend should never be passed to %s\n", __func__);
729 ompt_wait_id_t wait_id,
730 const void *codeptr_ra) {
732 case ompt_mutex_lock:
733 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_init_lock: wait_id=%" PRIu64
734 ", hint=%" PRIu32
", impl=%" PRIu32
", codeptr_ra=%p \n",
737 case ompt_mutex_nest_lock:
739 " ompt_event_init_nest_lock: wait_id=%" PRIu64
", hint=%" PRIu32
740 ", impl=%" PRIu32
", codeptr_ra=%p \n",
749 ompt_wait_id_t wait_id,
750 const void *codeptr_ra) {
752 case ompt_mutex_lock:
754 " ompt_event_destroy_lock: wait_id=%" PRIu64
", codeptr_ra=%p \n",
757 case ompt_mutex_nest_lock:
759 " ompt_event_destroy_nest_lock: wait_id=%" PRIu64
760 ", codeptr_ra=%p \n",
769 ompt_scope_endpoint_t endpoint,
770 ompt_data_t *parallel_data,
771 ompt_data_t *task_data, uint64_t
count,
772 const void *codeptr_ra) {
774 case ompt_scope_begin:
775 printf(
"%" PRIu64
":" _TOOL_PREFIX " %s_begin: parallel_id=%" PRIx64
776 ", task_id=%" PRIx64
", codeptr_ra=%p, count=%" PRIu64
"\n",
778 parallel_data->value, task_data->value, codeptr_ra,
count);
781 printf(
"%" PRIu64
":" _TOOL_PREFIX " %s_end: parallel_id=%" PRIx64
782 ", task_id=%" PRIx64
", codeptr_ra=%p, count=%" PRIu64
"\n",
784 parallel_data->value, task_data->value, codeptr_ra,
count);
786 case ompt_scope_beginend:
787 printf(
"ompt_scope_beginend should never be passed to %s\n", __func__);
793 ompt_data_t *task_data,
794 ompt_dispatch_t kind,
796 char *event_name = NULL;
797 void *codeptr_ra = NULL;
798 ompt_dispatch_chunk_t *dispatch_chunk = NULL;
800 case ompt_dispatch_section:
801 event_name =
"ompt_event_section_begin";
804 case ompt_dispatch_ws_loop_chunk:
805 event_name =
"ompt_event_ws_loop_chunk_begin";
806 dispatch_chunk = (ompt_dispatch_chunk_t *)
instance.ptr;
808 case ompt_dispatch_taskloop_chunk:
809 event_name =
"ompt_event_taskloop_chunk_begin";
810 dispatch_chunk = (ompt_dispatch_chunk_t *)
instance.ptr;
812 case ompt_dispatch_distribute_chunk:
813 event_name =
"ompt_event_distribute_chunk_begin";
814 dispatch_chunk = (ompt_dispatch_chunk_t *)
instance.ptr;
817 event_name =
"ompt_ws_loop_iteration_begin";
819 printf(
"%" PRIu64
":" _TOOL_PREFIX " %s: parallel_id=%" PRIx64
820 ", task_id=%" PRIx64
", codeptr_ra=%p, chunk_start=%" PRIu64
821 ", chunk_iterations=%" PRIu64
"\n",
823 task_data->value, codeptr_ra,
824 dispatch_chunk ? dispatch_chunk->start : 0,
825 dispatch_chunk ? dispatch_chunk->iterations : 0);
829 ompt_data_t *parallel_data,
830 ompt_data_t *task_data,
831 const void *codeptr_ra) {
833 case ompt_scope_begin:
835 " ompt_event_masked_begin: parallel_id=%" PRIx64
", task_id=%" PRIx64
838 task_data->value, codeptr_ra);
842 " ompt_event_masked_end: parallel_id=%" PRIx64
", task_id=%" PRIx64
845 task_data->value, codeptr_ra);
847 case ompt_scope_beginend:
848 printf(
"ompt_scope_beginend should never be passed to %s\n", __func__);
854 ompt_data_t *encountering_task_data,
855 const ompt_frame_t *encountering_task_frame, ompt_data_t *parallel_data,
856 uint32_t requested_team_size,
int flag,
const void *codeptr_ra) {
857 if (parallel_data->ptr)
858 printf(
"0: parallel_data initially not null\n");
860 int invoker =
flag & 0xF;
861 const char *
event = (
flag & ompt_parallel_team) ?
"parallel" :
"teams";
862 const char *
size = (
flag & ompt_parallel_team) ?
"team_size" :
"num_teams";
864 " ompt_event_%s_begin: parent_task_id=%" PRIx64
865 ", parent_task_frame.exit=%p, parent_task_frame.reenter=%p, "
866 "parallel_id=%" PRIx64
", requested_%s=%" PRIu32
867 ", codeptr_ra=%p, invoker=%d\n",
869 encountering_task_frame->exit_frame.ptr,
870 encountering_task_frame->enter_frame.ptr, parallel_data->value,
size,
871 requested_team_size, codeptr_ra, invoker);
875 ompt_data_t *encountering_task_data,
876 int flag,
const void *codeptr_ra) {
877 int invoker =
flag & 0xF;
878 const char *
event = (
flag & ompt_parallel_team) ?
"parallel" :
"teams";
879 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_%s_end: parallel_id=%" PRIx64
880 ", task_id=%" PRIx64
", invoker=%d, codeptr_ra=%p\n",
882 encountering_task_data->value, invoker, codeptr_ra);
887 const ompt_frame_t *encountering_task_frame,
888 ompt_data_t *new_task_data,
int type,
889 int has_dependences,
const void *codeptr_ra) {
890 if (new_task_data->ptr)
891 printf(
"0: new_task_data initially not null\n");
899 " ompt_event_task_create: parent_task_id=%" PRIx64
900 ", parent_task_frame.exit=%p, parent_task_frame.reenter=%p, "
901 "new_task_id=%" PRIx64
902 ", codeptr_ra=%p, task_type=%s=%d, has_dependences=%s\n",
904 encountering_task_data ? encountering_task_data->value : 0,
905 encountering_task_frame ? encountering_task_frame->exit_frame.ptr : NULL,
906 encountering_task_frame ? encountering_task_frame->enter_frame.ptr : NULL,
907 new_task_data->value, codeptr_ra, buffer,
type,
908 has_dependences ?
"yes" :
"no");
912 ompt_task_status_t prior_task_status,
913 ompt_data_t *second_task_data) {
915 " ompt_event_task_schedule: first_task_id=%" PRIx64
916 ", second_task_id=%" PRIx64
", prior_task_status=%s=%d\n",
918 (second_task_data ? second_task_data->value : -1),
920 if (prior_task_status == ompt_task_complete ||
921 prior_task_status == ompt_task_late_fulfill ||
922 prior_task_status == ompt_taskwait_complete) {
923 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_task_end: task_id=%" PRIx64
930 const ompt_dependence_t *deps,
933 char *progress = buffer;
935 for (
i = 0;
i < ndeps && progress < buffer + 2000;
i++) {
936 if (deps[
i].dependence_type == ompt_dependence_type_source ||
937 deps[
i].dependence_type == ompt_dependence_type_sink)
939 sprintf(progress,
"(%" PRIu64
", %s), ", deps[
i].variable.value,
943 sprintf(progress,
"(%p, %s), ", deps[
i].variable.ptr,
948 printf(
"%" PRIu64
":" _TOOL_PREFIX " ompt_event_dependences: task_id=%" PRIx64
949 ", deps=[%s], ndeps=%d\n",
954 ompt_data_t *second_task_data) {
956 " ompt_event_task_dependence_pair: first_task_id=%" PRIx64
957 ", second_task_id=%" PRIx64
"\n",
959 second_task_data->value);
963 ompt_data_t *thread_data) {
964 if (thread_data->ptr)
965 printf(
"%s\n",
"0: thread_data initially not null");
968 " ompt_event_thread_begin: thread_type=%s=%d, thread_id=%" PRIu64
"\n",
970 thread_type, thread_data->value);
975 " ompt_event_thread_end: thread_id=%" PRIu64
"\n",
980 void *arg,
const void *codeptr_ra) {
981 ompt_frame_t *omptTaskFrame;
984 " ompt_event_control_tool: command=%" PRIu64
", modifier=%" PRIu64
985 ", arg=%p, codeptr_ra=%p, current_task_frame.exit=%p, "
986 "current_task_frame.reenter=%p \n",
988 omptTaskFrame->exit_frame.ptr, omptTaskFrame->enter_frame.ptr);
994 ompt_data_t *task_data;
997 printf(
"%" PRIu64
":" _TOOL_PREFIX " task level %d: task_id=%" PRIx64
"\n",
1003 int parallel_level = 0;
1004 ompt_data_t *parallel_data;
1008 " parallel level %d: parallel_id=%" PRIx64
"\n",
1017 const char *message,
size_t length,
1018 const void *codeptr_ra) {
1019 printf(
"%" PRIu64
": ompt_event_runtime_error: severity=%" PRIu32
1020 ", message=%s, length=%" PRIu64
", codeptr_ra=%p\n",
1026 ompt_data_t *tool_data) {
1034 (ompt_get_parallel_info_t)lookup(
"ompt_get_parallel_info");
1043 (ompt_get_place_proc_ids_t)lookup(
"ompt_get_place_proc_ids");
1046 (ompt_get_partition_place_nums_t)lookup(
"ompt_get_partition_place_nums");
1049 (ompt_enumerate_states_t)lookup(
"ompt_enumerate_states");
1051 (ompt_enumerate_mutex_impls_t)lookup(
"ompt_enumerate_mutex_impls");
1059 ompt_callback_sync_region_t);
1061 ompt_callback_sync_region_t);
1062#ifndef _OMPT_DISABLE_CONTROL_TOOL
1069 ompt_callback_mutex_acquire_t);
1083 printf(
"0: NULL_POINTER=%p\n", (
void *)NULL);
1088 printf(
"0: ompt_event_runtime_shutdown\n");
1095 const char *runtime_version) {
static void on_ompt_callback_mutex_released(ompt_mutex_t kind, ompt_wait_id_t wait_id, const void *codeptr_ra)
static void on_ompt_callback_implicit_task(ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, unsigned int team_size, unsigned int thread_num, int flags)
static const char * ompt_thread_t_values[]
static void print_ids(int level)
static void on_ompt_callback_parallel_end(ompt_data_t *parallel_data, ompt_data_t *encountering_task_data, int flag, const void *codeptr_ra)
static void on_ompt_callback_flush(ompt_data_t *thread_data, const void *codeptr_ra)
static ompt_get_task_info_t ompt_get_task_info
static ompt_enumerate_states_t ompt_enumerate_states
static const char * ompt_work_events_t_values[]
static void on_ompt_callback_lock_destroy(ompt_mutex_t kind, ompt_wait_id_t wait_id, const void *codeptr_ra)
static void on_ompt_callback_task_schedule(ompt_data_t *first_task_data, ompt_task_status_t prior_task_status, ompt_data_t *second_task_data)
static ompt_get_callback_t ompt_get_callback
static void format_task_type(int type, char *buffer)
static ompt_get_place_proc_ids_t ompt_get_place_proc_ids
static void on_ompt_callback_lock_init(ompt_mutex_t kind, unsigned int hint, unsigned int impl, ompt_wait_id_t wait_id, const void *codeptr_ra)
static ompt_set_callback_t ompt_set_callback
static ompt_get_place_num_t ompt_get_place_num
#define register_ompt_callback(name)
static void on_ompt_callback_masked(ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, const void *codeptr_ra)
static void on_ompt_callback_dependences(ompt_data_t *task_data, const ompt_dependence_t *deps, int ndeps)
static ompt_get_partition_place_nums_t ompt_get_partition_place_nums
static void on_ompt_callback_task_create(ompt_data_t *encountering_task_data, const ompt_frame_t *encountering_task_frame, ompt_data_t *new_task_data, int type, int has_dependences, const void *codeptr_ra)
static void on_ompt_callback_error(ompt_severity_t severity, const char *message, size_t length, const void *codeptr_ra)
static void on_ompt_callback_nest_lock(ompt_scope_endpoint_t endpoint, ompt_wait_id_t wait_id, const void *codeptr_ra)
int ompt_initialize(ompt_function_lookup_t lookup, int initial_device_num, ompt_data_t *tool_data)
static void on_ompt_callback_mutex_acquired(ompt_mutex_t kind, ompt_wait_id_t wait_id, const void *codeptr_ra)
static const char * ompt_dependence_type_t_values[36]
static ompt_get_task_memory_t ompt_get_task_memory
void assert_frame_flags(int enterf, int exitf)
static int on_ompt_callback_control_tool(uint64_t command, uint64_t modifier, void *arg, const void *codeptr_ra)
static const char * ompt_task_status_t_values[]
void ompt_finalize(ompt_data_t *tool_data)
static void on_ompt_callback_task_dependence(ompt_data_t *first_task_data, ompt_data_t *second_task_data)
static void on_ompt_callback_mutex_acquire(ompt_mutex_t kind, unsigned int hint, unsigned int impl, ompt_wait_id_t wait_id, const void *codeptr_ra)
#define register_ompt_callback_t(name, type)
static void on_ompt_callback_parallel_begin(ompt_data_t *encountering_task_data, const ompt_frame_t *encountering_task_frame, ompt_data_t *parallel_data, uint32_t requested_team_size, int flag, const void *codeptr_ra)
static ompt_get_num_procs_t ompt_get_num_procs
static void on_ompt_callback_thread_end(ompt_data_t *thread_data)
static void on_ompt_callback_sync_region(ompt_sync_region_t kind, ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, const void *codeptr_ra)
static void on_ompt_callback_work(ompt_work_t wstype, ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, uint64_t count, const void *codeptr_ra)
static ompt_finalize_tool_t ompt_finalize_tool
static ompt_get_num_places_t ompt_get_num_places
static ompt_get_unique_id_t ompt_get_unique_id
static ompt_get_state_t ompt_get_state
static const char * ompt_cancel_flag_t_values[]
static void on_ompt_callback_thread_begin(ompt_thread_t thread_type, ompt_data_t *thread_data)
static void on_ompt_callback_sync_region_wait(ompt_sync_region_t kind, ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, const void *codeptr_ra)
static void on_ompt_callback_dispatch(ompt_data_t *parallel_data, ompt_data_t *task_data, ompt_dispatch_t kind, ompt_data_t instance)
static const char * ompt_work_t_values[]
static const char * ompt_sync_region_t_values[]
static void on_ompt_callback_reduction(ompt_sync_region_t kind, ompt_scope_endpoint_t endpoint, ompt_data_t *parallel_data, ompt_data_t *task_data, const void *codeptr_ra)
static ompt_get_parallel_info_t ompt_get_parallel_info
static void on_ompt_callback_cancel(ompt_data_t *task_data, int flags, const void *codeptr_ra)
static ompt_get_proc_id_t ompt_get_proc_id
static ompt_get_thread_data_t ompt_get_thread_data
static ompt_enumerate_mutex_impls_t ompt_enumerate_mutex_impls
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance * instance
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t count
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t length
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark d __itt_event event
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t size
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type size_t void ITT_FORMAT p const __itt_domain __itt_id __itt_string_handle const wchar_t size_t ITT_FORMAT lu const __itt_domain __itt_id __itt_relation __itt_id ITT_FORMAT p const wchar_t int ITT_FORMAT __itt_group_mark d __itt_event ITT_FORMAT __itt_group_mark d void const wchar_t const wchar_t int ITT_FORMAT __itt_group_sync __itt_group_fsync x void const wchar_t int const wchar_t int int ITT_FORMAT __itt_group_sync __itt_group_fsync x void ITT_FORMAT __itt_group_sync __itt_group_fsync p void ITT_FORMAT __itt_group_sync __itt_group_fsync p void size_t ITT_FORMAT lu no args __itt_obj_prop_t __itt_obj_state_t ITT_FORMAT d const char ITT_FORMAT s const char ITT_FORMAT s __itt_frame frame
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_string_handle unsigned long long ITT_FORMAT lu const __itt_domain __itt_id __itt_string_handle __itt_metadata_type type
struct ompt_start_tool_result_t ompt_start_tool_result_t
static ompt_start_tool_result_t * ompt_start_tool_result