95 lines · c
1// clang-format off2// RUN: %libomp-compile && env OMP_THREAD_LIMIT=2 %libomp-run | FileCheck %s3// RUN: %libomp-compile && env OMP_THREAD_LIMIT=2 %libomp-run | %sort-threads \4// RUN: | FileCheck --check-prefix=THREADS %s5 6// REQUIRES: ompt7// clang-format on8 9#include "callback.h"10 11int main() {12#pragma omp parallel num_threads(4)13 {14 print_ids(0);15 print_ids(1);16 }17 print_fuzzy_address(1);18 19 // clang-format off20 // Check if libomp supports the callbacks for this test.21 // CHECK-NOT: {{^}}0: Could not register callback22 23 // Make sure initial data pointers are null.24 // CHECK-NOT: 0: parallel_data initially not null25 // CHECK-NOT: 0: task_data initially not null26 // CHECK-NOT: 0: thread_data initially not null27 28 // Only check callback names, arguments are verified in THREADS below.29 // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin30 31 // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin32 // CHECK-DAG: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end33 34 // Note that we cannot ensure that the worker threads have already called35 // barrier_end and implicit_task_end before parallel_end!36 37 // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin38 // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin39 40 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end41 42 // THREADS: 0: NULL_POINTER=[[NULL:.*$]]43 // THREADS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_thread_begin44 // THREADS-SAME: thread_type=ompt_thread_initial=1, thread_id=[[MASTER_ID]]45 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_begin46 // THREADS-SAME: parent_task_id=[[PARENT_TASK_ID:[0-f]+]]47 // THREADS-SAME: parent_task_frame.exit=[[NULL]]48 // THREADS-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}}49 // THREADS-SAME: parallel_id=[[PARALLEL_ID:[0-f]+]], requested_team_size=450 // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS:(0x)?[0-f]+]]{{[0-f][0-f]}}51 52 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin53 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]54 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]55 // THREADS: {{^}}[[MASTER_ID]]: task level 056 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]57 // THREADS: {{^}}[[MASTER_ID]]: task level 158 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID:[0-f]+]]59 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]60 61 // THREADS-NOT: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end62 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_begin63 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]64 // parallel_id is 0 because the region ended in the barrier!65 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_end66 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]67 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end68 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]69 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_end70 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[PARENT_TASK_ID]]71 // THREADS: {{^}}[[MASTER_ID]]: fuzzy_address={{.*}}[[RETURN_ADDRESS]]72 73 // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin74 // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]75 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin76 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]77 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]78 // THREADS: {{^}}[[THREAD_ID]]: task level 079 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]80 // THREADS: {{^}}[[THREAD_ID]]: task level 181 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]82 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]83 // THREADS-NOT: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end84 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin85 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]86 // parallel_id is 0 because the region ended in the barrier!87 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end88 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]89 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end90 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]91 // clang-format on92 93 return 0;94}95