85 lines · c
1// clang-format off2// RUN: %libomp-compile-and-run | FileCheck %s3// RUN: %libomp-compile-and-run | FileCheck --check-prefix=TASKS %s4// REQUIRES: ompt5 6// These compilers don't support the taskloop construct7// UNSUPPORTED: gcc-4, gcc-5, icc-168// GCC 6 has support for taskloops, but at least 6.3.0 is crashing on this test9// UNSUPPORTED: gcc-610// clang-format on11 12#include "callback.h"13#include <omp.h>14 15int main() {16 unsigned int i, x;17 18#pragma omp parallel num_threads(2)19 {20#pragma omp barrier21 22#pragma omp master23#pragma omp taskloop24 for (i = 0; i < 5; i += 3) {25 x++;26 }27 }28 // clang-format off29 // CHECK: 0: NULL_POINTER=[[NULL:.*$]]30 31 // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin:32 // CHECK-SAME: parent_task_id={{[0-f]+}}33 // CHECK-SAME: parallel_id=[[PARALLEL_ID:[0-f]+]]34 // CHECK-SAME: requested_team_size=235 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin:36 // CHECK-SAME: parallel_id=[[PARALLEL_ID]]37 // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1:[0-9]+]]38 // CHECK-SAME: team_size=2, thread_num=039 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskgroup_begin:40 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID1]]41 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskloop_begin:42 // CHECK-SAME: parallel_id=[[PARALLEL_ID]]43 // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1]]44 // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS:(0x)?[0-f]+]], count=245 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:46 // CHECK-SAME: parent_task_id=[[IMPLICIT_TASK_ID1]]47 // CHECK-SAME: new_task_id=[[TASK_ID1:[0-9]+]]48 // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS]]49 // CHECK-SAME: task_type=ompt_task_explicit=450 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_task_create:51 // CHECK-SAME: parent_task_id=[[IMPLICIT_TASK_ID1]]52 // CHECK-SAME: new_task_id=[[TASK_ID2:[0-9]+]]53 // CHECK-SAME: codeptr_ra=[[RETURN_ADDRESS]]54 // CHECK-SAME: task_type=ompt_task_explicit=455 // CHECK-NOT: {{^}}[[MASTER_ID]]: ompt_event_task_create:56 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskloop_end:57 // CHECK-SAME: parallel_id=[[PARALLEL_ID]]58 // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1]]59 // CHECK-SAME: count=260 // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_wait_taskgroup_begin:61 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_wait_taskgroup_end:62 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID1]]63 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_taskgroup_end:64 // CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID1]]65 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end: parallel_id=066 // CHECK-SAME: task_id=[[IMPLICIT_TASK_ID1]], team_size=2, thread_num=067 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end:68 // CHECK-SAME: parallel_id=[[PARALLEL_ID]]69 70 // TASKS: ompt_event_initial_task_begin:{{.*}} task_id={{[0-f]+}}71 // TASKS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_taskloop_begin:72 // TASKS: ompt_event_task_create:{{.*}} new_task_id=[[TASK_ID1:[0-9]+]]73 // TASKS-SAME: task_type=ompt_task_explicit74 // TASKS-DAG: ompt_event_task_create:{{.*}} new_task_id=[[TASK_ID2:[0-9]+]]75 // Schedule events:76 // TASKS-DAG: {{^.*}}first_task_id={{[0-f]+}}, second_task_id=[[TASK_ID1]]77 // TASKS-DAG: {{^.*}}first_task_id=[[TASK_ID1]], second_task_id={{[0-f]+}}78 // TASKS-DAG: {{^.*}}first_task_id={{[0-f]+}}, second_task_id=[[TASK_ID2]]79 // TASKS-DAG: {{^.*}}first_task_id=[[TASK_ID2]], second_task_id={{[0-f]+}}80 // TASKS-NOT: ompt_event_task_schedule81 // clang-format on82 83 return 0;84}85