1*946f5d11Sdhruvachak // clang-format off 2330d8983SJohannes Doerfert // RUN: %libomptarget-compile-run-and-check-generic 3330d8983SJohannes Doerfert // REQUIRES: ompt 4330d8983SJohannes Doerfert 5330d8983SJohannes Doerfert /* 6330d8983SJohannes Doerfert * Example OpenMP program that shows that if no device init callback 7330d8983SJohannes Doerfert * is registered, the other callbacks won't be activated. 8330d8983SJohannes Doerfert */ 9*946f5d11Sdhruvachak // clang-format on 10330d8983SJohannes Doerfert #include <omp.h> 11330d8983SJohannes Doerfert #include <stdio.h> 12330d8983SJohannes Doerfert 13330d8983SJohannes Doerfert #include "callbacks.h" 14330d8983SJohannes Doerfert #include "register_no_device_init.h" 15330d8983SJohannes Doerfert main()16330d8983SJohannes Doerfertint main() { 17330d8983SJohannes Doerfert int N = 100000; 18330d8983SJohannes Doerfert 19330d8983SJohannes Doerfert int a[N]; 20330d8983SJohannes Doerfert int b[N]; 21330d8983SJohannes Doerfert 22330d8983SJohannes Doerfert int i; 23330d8983SJohannes Doerfert 24330d8983SJohannes Doerfert for (i = 0; i < N; i++) 25330d8983SJohannes Doerfert a[i] = 0; 26330d8983SJohannes Doerfert 27330d8983SJohannes Doerfert for (i = 0; i < N; i++) 28330d8983SJohannes Doerfert b[i] = i; 29330d8983SJohannes Doerfert 30330d8983SJohannes Doerfert #pragma omp target parallel for 31330d8983SJohannes Doerfert { 32330d8983SJohannes Doerfert for (int j = 0; j < N; j++) 33330d8983SJohannes Doerfert a[j] = b[j]; 34330d8983SJohannes Doerfert } 35330d8983SJohannes Doerfert 36330d8983SJohannes Doerfert #pragma omp target teams distribute parallel for 37330d8983SJohannes Doerfert { 38330d8983SJohannes Doerfert for (int j = 0; j < N; j++) 39330d8983SJohannes Doerfert a[j] = b[j]; 40330d8983SJohannes Doerfert } 41330d8983SJohannes Doerfert 42330d8983SJohannes Doerfert int rc = 0; 43330d8983SJohannes Doerfert for (i = 0; i < N; i++) 44330d8983SJohannes Doerfert if (a[i] != b[i]) { 45330d8983SJohannes Doerfert rc++; 46330d8983SJohannes Doerfert printf("Wrong value: a[%d]=%d\n", i, a[i]); 47330d8983SJohannes Doerfert } 48330d8983SJohannes Doerfert 49330d8983SJohannes Doerfert if (!rc) 50330d8983SJohannes Doerfert printf("Success\n"); 51330d8983SJohannes Doerfert 52330d8983SJohannes Doerfert return rc; 53330d8983SJohannes Doerfert } 54*946f5d11Sdhruvachak // clang-format off 55330d8983SJohannes Doerfert /// CHECK-NOT: Callback Init: 56*946f5d11Sdhruvachak /// CHECK: Callback Load: 57*946f5d11Sdhruvachak /// CHECK: Callback Target: target_id=[[TARGET_ID:[0-9]+]] kind=1 endpoint=1 58*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=1 59*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=2 60*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=1 61*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=2 62*946f5d11Sdhruvachak /// CHECK: Callback Submit: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] req_num_teams=1 63*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=3 64*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=3 65*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=4 66*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=4 67*946f5d11Sdhruvachak /// CHECK: Callback Target: target_id=[[TARGET_ID:[0-9]+]] kind=1 endpoint=2 68330d8983SJohannes Doerfert 69*946f5d11Sdhruvachak /// CHECK: Callback Target: target_id=[[TARGET_ID:[0-9]+]] kind=1 endpoint=1 70*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=1 71*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=2 72*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=1 73*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=2 74*946f5d11Sdhruvachak /// CHECK: Callback Submit: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] req_num_teams=0 75*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=3 76*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=3 77*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=4 78*946f5d11Sdhruvachak /// CHECK: Callback DataOp: target_id=[[TARGET_ID:[0-9]+]] host_op_id=[[HOST_OP_ID:[0-9]+]] optype=4 79*946f5d11Sdhruvachak /// CHECK: Callback Target: target_id=[[TARGET_ID:[0-9]+]] kind=1 endpoint=2 80330d8983SJohannes Doerfert /// CHECK-NOT: Callback Fini: 81