xref: /llvm-project/offload/test/ompt/veccopy_no_device_init.c (revision 946f5d111d5e3cb19055dc78959d9ee5a19c163a)
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 Doerfert int 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