Skip to content

Commit 6ef16f2

Browse files
committed
[OpenMP] Add OMPT support for omp_all_memory task dependence
omp_all_memory currently has no representation in OMPT. Adding new dependency flags as suggested by omp-lang issue #3007. Differential Revision: https://reviews.llvm.org/D111788
1 parent 39f2fce commit 6ef16f2

File tree

5 files changed

+754
-11
lines changed

5 files changed

+754
-11
lines changed

openmp/runtime/src/include/omp-tools.h.var

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -413,13 +413,15 @@ typedef enum ompt_target_map_flag_t {
413413
} ompt_target_map_flag_t;
414414

415415
typedef enum ompt_dependence_type_t {
416-
ompt_dependence_type_in = 1,
417-
ompt_dependence_type_out = 2,
418-
ompt_dependence_type_inout = 3,
419-
ompt_dependence_type_mutexinoutset = 4,
420-
ompt_dependence_type_source = 5,
421-
ompt_dependence_type_sink = 6,
422-
ompt_dependence_type_inoutset = 7
416+
ompt_dependence_type_in = 1,
417+
ompt_dependence_type_out = 2,
418+
ompt_dependence_type_inout = 3,
419+
ompt_dependence_type_mutexinoutset = 4,
420+
ompt_dependence_type_source = 5,
421+
ompt_dependence_type_sink = 6,
422+
ompt_dependence_type_inoutset = 7,
423+
ompt_dependence_type_out_all_memory = 34,
424+
ompt_dependence_type_inout_all_memory = 35
423425
} ompt_dependence_type_t;
424426

425427
typedef enum ompt_severity_t {

openmp/runtime/src/kmp_taskdeps.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,9 @@ kmp_int32 __kmpc_omp_task_with_deps(ident_t *loc_ref, kmp_int32 gtid,
745745

746746
for (i = 0; i < ndeps; i++) {
747747
ompt_deps[i].variable.ptr = (void *)dep_list[i].base_addr;
748-
if (dep_list[i].flags.in && dep_list[i].flags.out)
748+
if (dep_list[i].base_addr == KMP_SIZE_T_MAX)
749+
ompt_deps[i].dependence_type = ompt_dependence_type_out_all_memory;
750+
else if (dep_list[i].flags.in && dep_list[i].flags.out)
749751
ompt_deps[i].dependence_type = ompt_dependence_type_inout;
750752
else if (dep_list[i].flags.out)
751753
ompt_deps[i].dependence_type = ompt_dependence_type_out;
@@ -755,10 +757,15 @@ kmp_int32 __kmpc_omp_task_with_deps(ident_t *loc_ref, kmp_int32 gtid,
755757
ompt_deps[i].dependence_type = ompt_dependence_type_mutexinoutset;
756758
else if (dep_list[i].flags.set)
757759
ompt_deps[i].dependence_type = ompt_dependence_type_inoutset;
760+
else if (dep_list[i].flags.all)
761+
ompt_deps[i].dependence_type = ompt_dependence_type_out_all_memory;
758762
}
759763
for (i = 0; i < ndeps_noalias; i++) {
760764
ompt_deps[ndeps + i].variable.ptr = (void *)noalias_dep_list[i].base_addr;
761-
if (noalias_dep_list[i].flags.in && noalias_dep_list[i].flags.out)
765+
if (noalias_dep_list[i].base_addr == KMP_SIZE_T_MAX)
766+
ompt_deps[ndeps + i].dependence_type =
767+
ompt_dependence_type_out_all_memory;
768+
else if (noalias_dep_list[i].flags.in && noalias_dep_list[i].flags.out)
762769
ompt_deps[ndeps + i].dependence_type = ompt_dependence_type_inout;
763770
else if (noalias_dep_list[i].flags.out)
764771
ompt_deps[ndeps + i].dependence_type = ompt_dependence_type_out;
@@ -769,6 +776,9 @@ kmp_int32 __kmpc_omp_task_with_deps(ident_t *loc_ref, kmp_int32 gtid,
769776
ompt_dependence_type_mutexinoutset;
770777
else if (noalias_dep_list[i].flags.set)
771778
ompt_deps[ndeps + i].dependence_type = ompt_dependence_type_inoutset;
779+
else if (noalias_dep_list[i].flags.all)
780+
ompt_deps[ndeps + i].dependence_type =
781+
ompt_dependence_type_out_all_memory;
772782
}
773783
ompt_callbacks.ompt_callback(ompt_callback_dependences)(
774784
&(new_taskdata->ompt_task_info.task_data), ompt_deps, ompt_ndeps);

openmp/runtime/test/ompt/callback.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,20 @@ static const char* ompt_cancel_flag_t_values[] = {
4747
"ompt_cancel_discarded_task"
4848
};
4949

50-
static const char *ompt_dependence_type_t_values[] = {
50+
static const char *ompt_dependence_type_t_values[36] = {
5151
"ompt_dependence_type_UNDEFINED",
5252
"ompt_dependence_type_in", // 1
5353
"ompt_dependence_type_out", // 2
5454
"ompt_dependence_type_inout", // 3
5555
"ompt_dependence_type_mutexinoutset", // 4
5656
"ompt_dependence_type_source", // 5
5757
"ompt_dependence_type_sink", // 6
58-
"ompt_dependence_type_inoutset" // 7
58+
"ompt_dependence_type_inoutset", // 7
59+
"", "", "", "", "", "", // 8-13
60+
"", "", "", "", "", "", "", "", "", "", // 14-23
61+
"", "", "", "", "", "", "", "", "", "", // 24-33
62+
"ompt_dependence_type_out_all_memory", // 34
63+
"ompt_dependence_type_inout_all_memory" // 35
5964
};
6065

6166
static void format_task_type(int type, char *buffer) {

0 commit comments

Comments
 (0)