[OpenMP] Use new task type/flag for taskwait depend events.
authorHansang Bae <hansang.bae@intel.com>
Thu, 27 May 2021 22:29:35 +0000 (17:29 -0500)
committerHansang Bae <hansang.bae@intel.com>
Wed, 2 Jun 2021 15:16:38 +0000 (10:16 -0500)
Differential Revision: https://reviews.llvm.org/D103464

openmp/runtime/src/kmp_taskdeps.cpp
openmp/runtime/test/ompt/callback.h
openmp/runtime/test/ompt/tasks/task_if0-depend.c

index 655e21f..89a7dbc 100644 (file)
@@ -647,11 +647,7 @@ void __ompt_taskwait_dep_finish(kmp_taskdata_t *current_task,
                                 ompt_data_t *taskwait_task_data) {
   if (ompt_enabled.ompt_callback_task_schedule) {
     ompt_callbacks.ompt_callback(ompt_callback_task_schedule)(
-        &(current_task->ompt_task_info.task_data), ompt_task_switch,
-        taskwait_task_data);
-    ompt_callbacks.ompt_callback(ompt_callback_task_schedule)(
-        taskwait_task_data, ompt_task_complete,
-        &(current_task->ompt_task_info.task_data));
+        taskwait_task_data, ompt_taskwait_complete, NULL);
   }
   current_task->ompt_task_info.frame.enter_frame.ptr = NULL;
   *taskwait_task_data = ompt_data_none;
@@ -700,7 +696,7 @@ void __kmpc_omp_wait_deps(ident_t *loc_ref, kmp_int32 gtid, kmp_int32 ndeps,
       ompt_callbacks.ompt_callback(ompt_callback_task_create)(
           &(current_task->ompt_task_info.task_data),
           &(current_task->ompt_task_info.frame), taskwait_task_data,
-          ompt_task_explicit | ompt_task_undeferred | ompt_task_mergeable, 1,
+          ompt_task_taskwait | ompt_task_undeferred | ompt_task_mergeable, 1,
           OMPT_LOAD_OR_GET_RETURN_ADDRESS(gtid));
     }
   }
index c21b167..2e9c057 100644 (file)
@@ -34,7 +34,8 @@ static const char *ompt_task_status_t_values[] = {
     "ompt_task_detach", // 4
     "ompt_task_early_fulfill", // 5
     "ompt_task_late_fulfill", // 6
-    "ompt_task_switch" // 7
+    "ompt_task_switch", // 7
+    "ompt_taskwait_complete" // 8
 };
 static const char* ompt_cancel_flag_t_values[] = {
   "ompt_cancel_parallel",
@@ -67,6 +68,8 @@ static void format_task_type(int type, char *buffer) {
     progress += sprintf(progress, "ompt_task_explicit");
   if (type & ompt_task_target)
     progress += sprintf(progress, "ompt_task_target");
+  if (type & ompt_task_taskwait)
+    progress += sprintf(progress, "ompt_task_taskwait");
   if (type & ompt_task_undeferred)
     progress += sprintf(progress, "|ompt_task_undeferred");
   if (type & ompt_task_untied)
@@ -1015,7 +1018,8 @@ on_ompt_callback_task_schedule(
          (second_task_data ? second_task_data->value : -1),
          ompt_task_status_t_values[prior_task_status], prior_task_status);
   if (prior_task_status == ompt_task_complete ||
-      prior_task_status == ompt_task_late_fulfill) {
+      prior_task_status == ompt_task_late_fulfill ||
+      prior_task_status == ompt_taskwait_complete) {
     printf("%" PRIu64 ":" _TOOL_PREFIX " ompt_event_task_end: task_id=%" PRIu64
            "\n", ompt_get_thread_data()->value, first_task_data->value);
   }
index 2ecbf02..f7fb6ef 100644 (file)
@@ -63,8 +63,8 @@ int main() {
 // CHECK-SAME: parent_task_frame.reenter={{0x[0-f]+}},
 // CHECK-SAME: new_task_id=[[SECOND_TASK:[0-f]+]],
 // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS:0x[0-f]+]]{{[0-f][0-f]}},
-// CHECK-SAME: task_type=ompt_task_explicit|ompt_task_undeferred|
-// CHECK-SAME: ompt_task_mergeable=1207959556, has_dependences=yes
+// CHECK-SAME: task_type=ompt_task_taskwait|ompt_task_undeferred|
+// CHECK-SAME: ompt_task_mergeable=1207959568, has_dependences=yes
 
 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_dependences:
 // CHECK-SAME: task_id=[[SECOND_TASK]], deps=[([[ADDRX]],