xref: /llvm-project/offload/test/offloading/interop.c (revision 330d8983d25d08580fc1642fea48b2473f47a9da)
1 // RUN: %libomptarget-compile-run-and-check-generic
2 // REQUIRES: nvptx64-nvidia-cuda
3 
4 #include <assert.h>
5 #include <omp.h>
6 #include <stdint.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9 
10 typedef void *cudaStream_t;
11 
main()12 int main() {
13 
14   int device_id = omp_get_default_device();
15 
16 #pragma omp parallel master
17   {
18 
19     double D0, D2;
20     omp_interop_t interop;
21 
22 #pragma omp interop init(targetsync : interop) device(device_id) nowait
23     assert(interop != NULL);
24 
25     int err;
26     for (int i = omp_ipr_first; i < 0; i++) {
27       const char *n =
28           omp_get_interop_name(interop, (omp_interop_property_t)(i));
29       long int li =
30           omp_get_interop_int(interop, (omp_interop_property_t)(i), &err);
31       const void *p =
32           omp_get_interop_ptr(interop, (omp_interop_property_t)(i), &err);
33       const char *s =
34           omp_get_interop_str(interop, (omp_interop_property_t)(i), &err);
35       const char *n1 =
36           omp_get_interop_type_desc(interop, (omp_interop_property_t)(i));
37     }
38 #pragma omp interop use(interop) depend(in : D0, D2)
39 
40     cudaStream_t stream =
41         (omp_get_interop_ptr(interop, omp_ipr_targetsync, NULL));
42     assert(stream != NULL);
43 
44 #pragma omp interop destroy(interop) depend(in : D0, D2) device(device_id)
45   }
46   printf("PASS\n");
47 }
48 // CHECK: PASS
49