105 lines · c
1// clang-format off2// RUN: %libomptarget-compile-run-and-check-generic3// REQUIRES: ompt4// REQUIRES: gpu5// clang-format on6 7/*8 * Example OpenMP program that shows that both EMI and non-EMI9 * callbacks cannot be registered for the same type. In the10 * current implementation, the EMI callback overrides the non-EMI11 * callback.12 */13 14#include <omp.h>15#include <stdio.h>16 17#include "callbacks.h"18#include "register_both.h"19 20int main() {21 int N = 100000;22 23 int a[N];24 int b[N];25 26 int i;27 28 for (i = 0; i < N; i++)29 a[i] = 0;30 31 for (i = 0; i < N; i++)32 b[i] = i;33 34#pragma omp target parallel for35 {36 for (int j = 0; j < N; j++)37 a[j] = b[j];38 }39 40#pragma omp target teams distribute parallel for41 {42 for (int j = 0; j < N; j++)43 a[j] = b[j];44 }45 46 int rc = 0;47 for (i = 0; i < N; i++)48 if (a[i] != b[i]) {49 rc++;50 printf("Wrong value: a[%d]=%d\n", i, a[i]);51 }52 53 if (!rc)54 printf("Success\n");55 56 return rc;57}58 59// clang-format off60/// CHECK: Callback Init:61/// CHECK: Callback Load:62/// CHECK: Callback Target EMI: kind=ompt_target endpoint=ompt_scope_begin63/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_alloc64/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_alloc65/// CHECK-NOT: dest=(nil)66/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_to_device67/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_to_device68/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_alloc69/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_alloc70/// CHECK-NOT: dest=(nil)71/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_to_device72/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_to_device73/// CHECK: Callback Submit: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] req_num_teams=174/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_from_device75/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_from_device76/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_from_device77/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_from_device78/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_delete79/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_delete80/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_delete81/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_delete82/// CHECK: Callback Target EMI: kind=ompt_target endpoint=ompt_scope_end83/// CHECK: Callback Target EMI: kind=ompt_target endpoint=ompt_scope_begin84/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_alloc85/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_alloc86/// CHECK-NOT: dest=(nil)87/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_to_device88/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_to_device89/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_alloc90/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_alloc91/// CHECK-NOT: dest=(nil)92/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_to_device93/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_to_device94/// CHECK: Callback Submit: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] req_num_teams=095/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_from_device96/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_from_device97/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_transfer_from_device98/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_transfer_from_device99/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_delete100/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_delete101/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_begin optype=ompt_target_data_delete102/// CHECK: Callback DataOp EMI: endpoint=ompt_scope_end optype=ompt_target_data_delete103/// CHECK: Callback Target EMI: kind=ompt_target endpoint=ompt_scope_end104/// CHECK: Callback Fini:105