brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 2c015b6 Raw
133 lines · c
1// clang-format off2// RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s3// REQUIRES: ompt4// XFAIL: gcc5// GCC doesn't call runtime for static schedule6// clang-format on7 8#include "callback.h"9 10#define WORK_SIZE 6411 12int main() {13  int i;14  int wait_s = 0;15 16#pragma omp parallel num_threads(4)17  {18    int wait_id = 0;19    int team_size = omp_get_num_threads();20#pragma omp for schedule(static, WORK_SIZE / 4)21    for (i = 0; i < WORK_SIZE; i++) {22    }23 24#pragma omp for schedule(dynamic)25    for (i = 0; i < WORK_SIZE; i++) {26      if (wait_id == 0) {27        // Wait until every thread has at least one iteration assigned28        OMPT_SIGNAL(wait_s);29        OMPT_WAIT(wait_s, team_size);30        wait_id++;31      }32    }33 34#pragma omp for schedule(guided)35    for (i = 0; i < WORK_SIZE; i++) {36      if (wait_id == 1) {37        // Wait until every thread has at least one iteration assigned38        OMPT_SIGNAL(wait_s);39        OMPT_WAIT(wait_s, 2 * team_size);40        wait_id++;41      }42    }43  }44 45  return 0;46}47 48// clang-format off49// CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_parallel_begin'50// CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_implicit_task'51// CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_work'52// CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_dispatch'53 54// CHECK: 0: NULL_POINTER=[[NULL:.*$]]55// CHECK: {{^}}[[THREAD_ID0:[0-9]+]]: ompt_event_parallel_begin:56// CHECK-SAME: parallel_id=[[PARALLEL_ID:[0-f]+]]57 58// Each thread should have at least one ws-loop-chunk-begin event for each59// for loop.60 61// CHECK: {{^}}[[THREAD_ID0]]: ompt_event_implicit_task_begin:62// CHECK-SAME: task_id=[[TASK_ID0:[0-9]+]]63// CHECK: {{^}}[[THREAD_ID0]]: ompt_event_loop_static_begin:64// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]65// CHECK: {{^}}[[THREAD_ID0]]: ompt_event_ws_loop_chunk_begin:66// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]67// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1668// CHECK: {{^}}[[THREAD_ID0]]: ompt_event_loop_dynamic_begin:69// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]70// CHECK: {{^}}[[THREAD_ID0]]: ompt_event_ws_loop_chunk_begin:71// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]72// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=173// CHECK: {{^}}[[THREAD_ID0]]: ompt_event_loop_guided_begin:74// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]75// CHECK: {{^}}[[THREAD_ID0]]: ompt_event_ws_loop_chunk_begin:76// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID0]]77// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}78 79// CHECK: {{^}}[[THREAD_ID1:[0-9]+]]: ompt_event_implicit_task_begin:80// CHECK-SAME: task_id=[[TASK_ID1:[0-9]+]]81// CHECK: {{^}}[[THREAD_ID1]]: ompt_event_loop_static_begin:82// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]83// CHECK: {{^}}[[THREAD_ID1]]: ompt_event_ws_loop_chunk_begin:84// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]85// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1686// CHECK: {{^}}[[THREAD_ID1]]: ompt_event_loop_dynamic_begin:87// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]88// CHECK: {{^}}[[THREAD_ID1]]: ompt_event_ws_loop_chunk_begin:89// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]90// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=191// CHECK: {{^}}[[THREAD_ID1]]: ompt_event_loop_guided_begin:92// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]93// CHECK: {{^}}[[THREAD_ID1]]: ompt_event_ws_loop_chunk_begin:94// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID1]]95// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}96 97// CHECK: {{^}}[[THREAD_ID2:[0-9]+]]: ompt_event_implicit_task_begin:98// CHECK-SAME: task_id=[[TASK_ID2:[0-9]+]]99// CHECK: {{^}}[[THREAD_ID2]]: ompt_event_loop_static_begin:100// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]101// CHECK: {{^}}[[THREAD_ID2]]: ompt_event_ws_loop_chunk_begin:102// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]103// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=16104// CHECK: {{^}}[[THREAD_ID2]]: ompt_event_loop_dynamic_begin:105// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]106// CHECK: {{^}}[[THREAD_ID2]]: ompt_event_ws_loop_chunk_begin:107// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]108// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1109// CHECK: {{^}}[[THREAD_ID2]]: ompt_event_loop_guided_begin:110// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]111// CHECK: {{^}}[[THREAD_ID2]]: ompt_event_ws_loop_chunk_begin:112// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID2]]113// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}114 115// CHECK: {{^}}[[THREAD_ID3:[0-9]+]]: ompt_event_implicit_task_begin:116// CHECK-SAME: task_id=[[TASK_ID3:[0-9]+]]117// CHECK: {{^}}[[THREAD_ID3]]: ompt_event_loop_static_begin:118// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]119// CHECK: {{^}}[[THREAD_ID3]]: ompt_event_ws_loop_chunk_begin:120// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]121// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=16122// CHECK: {{^}}[[THREAD_ID3]]: ompt_event_loop_dynamic_begin:123// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]124// CHECK: {{^}}[[THREAD_ID3]]: ompt_event_ws_loop_chunk_begin:125// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]126// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations=1127// CHECK: {{^}}[[THREAD_ID3]]: ompt_event_loop_guided_begin:128// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]129// CHECK: {{^}}[[THREAD_ID3]]: ompt_event_ws_loop_chunk_begin:130// CHECK-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[TASK_ID3]]131// CHECK-SAME: chunk_start={{[0-9]+}}, chunk_iterations={{[1-9][0-9]*}}132// clang-format on133