140 lines · c
1// clang-format off2// RUN: %libomp-compile-and-run | FileCheck %s3// RUN: %libomp-compile-and-run | %sort-threads \4// RUN: | FileCheck --check-prefix=THREADS %s5// REQUIRES: ompt6// clang-format on7#include "callback.h"8 9int main() {10#pragma omp parallel num_threads(4)11 {12 print_ids(0);13 print_ids(1);14 }15 print_fuzzy_address(1);16 17 // clang-format off18 // Check if libomp supports the callbacks for this test.19 // CHECK-NOT: {{^}}0: Could not register callback20 21 // CHECK: 0: NULL_POINTER=[[NULL:.*$]]22 23 // make sure initial data pointers are null24 // 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-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin41 // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin42 43 // CHECK-DAG: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_implicit_task_begin44 // CHECK-DAG: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin45 46 // CHECK: {{^}}[[MASTER_ID]]: ompt_event_parallel_end47 48 // THREADS: 0: NULL_POINTER=[[NULL:.*$]]49 // THREADS: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_thread_begin50 // THREADS-SAME: thread_type=ompt_thread_initial=1, thread_id=[[MASTER_ID]]51 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_parallel_begin52 // THREADS-SAME: parent_task_id=[[PARENT_TASK_ID:[0-f]+]]53 // THREADS-SAME: parent_task_frame.exit=[[NULL]]54 // THREADS-SAME: parent_task_frame.reenter={{(0x)?[0-f]+}}55 // THREADS-SAME: parallel_id=[[PARALLEL_ID:[0-f]+]], requested_team_size=456 // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS:(0x)?[0-f]+]]{{[0-f][0-f]}}57 58 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_begin59 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]60 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]61 // THREADS: {{^}}[[MASTER_ID]]: task level 062 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]63 // THREADS: {{^}}[[MASTER_ID]]: task level 164 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID:[0-f]+]]65 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]66 // THREADS-NOT: ompt_event_implicit_task_end67 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_begin68 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]69 // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}70 // THREADS: {{^}}[[MASTER_ID]]: task level 071 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]72 // THREADS-SAME: exit_frame=[[NULL]], reenter_frame=[[NULL]]73 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_barrier_implicit_parallel_end74 // parallel_id is 0 because the region ended in the barrier!75 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]76 // THREADS-SAME: codeptr_ra=[[RETURN_ADDRESS]]{{[0-f][0-f]}}77 // THREADS: {{^}}[[MASTER_ID]]: ompt_event_implicit_task_end78 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]79 80 // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin81 // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]82 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin83 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]84 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]85 // THREADS: {{^}}[[THREAD_ID]]: task level 086 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]87 // THREADS: {{^}}[[THREAD_ID]]: task level 188 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]89 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]90 // THREADS-NOT: ompt_event_implicit_task_end91 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin92 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]93 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end94 // parallel_id is 0 because the region ended in the barrier!95 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]96 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end97 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]98 99 // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin100 // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]101 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin102 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]103 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]104 // THREADS: {{^}}[[THREAD_ID]]: task level 0105 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]106 // THREADS: {{^}}[[THREAD_ID]]: task level 1107 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]108 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]109 // THREADS-NOT: ompt_event_implicit_task_end110 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin111 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]112 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end113 // parallel_id is 0 because the region ended in the barrier!114 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]115 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end116 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]117 118 // THREADS: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_thread_begin119 // THREADS-SAME: thread_type=ompt_thread_worker=2, thread_id=[[THREAD_ID]]120 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_begin121 // THREADS-SAME: parallel_id=[[PARALLEL_ID]]122 // THREADS-SAME: task_id=[[IMPLICIT_TASK_ID:[0-f]+]]123 // THREADS: {{^}}[[THREAD_ID]]: task level 0124 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]125 // THREADS: {{^}}[[THREAD_ID]]: task level 1126 // THREADS-SAME: parallel_id=[[IMPLICIT_PARALLEL_ID]]127 // THREADS-SAME: task_id=[[PARENT_TASK_ID]]128 // THREADS-NOT: ompt_event_implicit_task_end129 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_begin130 // THREADS-SAME: parallel_id=[[PARALLEL_ID]], task_id=[[IMPLICIT_TASK_ID]]131 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_barrier_implicit_parallel_end132 // parallel_id is 0 because the region ended in the barrier!133 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]134 // THREADS: {{^}}[[THREAD_ID]]: ompt_event_implicit_task_end135 // THREADS-SAME: parallel_id=0, task_id=[[IMPLICIT_TASK_ID]]136 // clang-format on137 138 return 0;139}140