brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · bfc67c5 Raw
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