Commit 1d910ad0 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Merging r338580:

------------------------------------------------------------------------
r338580 | jprotze | 2018-08-01 18:15:18 +0200 (Wed, 01 Aug 2018) | 15 lines

[OMPT,tests] Fix taskloop testcase scheduling effects

The taskloop testcase had scheduling effects. Tasks of the taskloop would
sometimes be scheduled before all task were created. The testing is now
split into two phases. First, the task creation on the master is tested,
than the scheduling events of the tasks are tested. Thus, the order of
creation and scheduling events is irrelavant.

Patch by Simon Convent

Reviewed by: protze.joachim, Hahnfeld

Subscribers: openmp-commits

Differential Revision: https://reviews.llvm.org/D50140
------------------------------------------------------------------------

llvm-svn: 338704
parent f59f1ca9
Loading
Loading
Loading
Loading
+23 −10
Original line number Diff line number Diff line
// RUN: %libomp-compile && %libomp-run | FileCheck %s
// RUN: %libomp-compile-and-run | FileCheck %s
// RUN: %libomp-compile-and-run | FileCheck --check-prefix=TASKS %s
// REQUIRES: ompt
#include "callback.h"
#include <omp.h>

int main() {
  unsigned int i, j, x;
  unsigned int i, x;

#pragma omp parallel num_threads(2)
  {
#pragma omp barrier

#pragma omp master
#pragma omp taskloop
  for (j = 0; j < 5; j += 3) {
    for (i = 0; i < 5; i += 3) {
      x++;
    }

  }
  // CHECK: 0: NULL_POINTER=[[NULL:.*$]]

  // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin:
@@ -39,16 +43,12 @@ int main() {
  // CHECK-SAME: new_task_id=[[TASK_ID2:[0-9]+]]
  // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS]]
  // CHECK-SAME: task_type=ompt_task_explicit=4
  // CHECK-NOT: {{^}}[[MASTER_ID]]: ompt_event_task_create:
  // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskloop_end:
  // CHECK-SAME: parallel_id=[[PARALLEL_ID]]
  // CHECK-SAME: parent_task_id=[[IMPLICIT_TASK_ID1]]
  // CHECK-SAME: count=2
  // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_wait_taskgroup_begin:
  // Schedule events:
  // CHECK-DAG: {{^.*}}first_task_id={{[0-9]+}}, second_task_id=[[TASK_ID1]]
  // CHECK-DAG: {{^.*}}first_task_id=[[TASK_ID1]], second_task_id={{[0-9]+}}
  // CHECK-DAG: {{^.*}}first_task_id={{[0-9]+}}, second_task_id=[[TASK_ID2]]
  // CHECK-DAG: {{^.*}}first_task_id=[[TASK_ID2]], second_task_id={{[0-9]+}}
  // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_taskgroup_end:
  // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID1]]
  // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskgroup_end:
@@ -58,5 +58,18 @@ int main() {
  // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end:
  // CHECK-SAME: parallel_id=[[PARALLEL_ID]]

  // TASKS: ompt_event_task_create:{{.*}} new_task_id={{[0-9]+}}
  // TASKS-SAME: task_type=ompt_task_initial
  // TASKS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_taskloop_begin:
  // TASKS: ompt_event_task_create:{{.*}} new_task_id=[[TASK_ID1:[0-9]+]]
  // TASKS-SAME: task_type=ompt_task_explicit
  // TASKS-DAG: ompt_event_task_create:{{.*}} new_task_id=[[TASK_ID2:[0-9]+]]
  // Schedule events:
  // TASKS-DAG: {{^.*}}first_task_id={{[0-9]+}}, second_task_id=[[TASK_ID1]]
  // TASKS-DAG: {{^.*}}first_task_id=[[TASK_ID1]], second_task_id={{[0-9]+}}
  // TASKS-DAG: {{^.*}}first_task_id={{[0-9]+}}, second_task_id=[[TASK_ID2]]
  // TASKS-DAG: {{^.*}}first_task_id=[[TASK_ID2]], second_task_id={{[0-9]+}}
  // TASKS-NOT: ompt_event_task_schedule

  return 0;
}