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
10typedef void *cudaStream_t;
11
12int 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(format: "PASS\n");
47}
48// CHECK: PASS
49

Provided by KDAB

Privacy Policy
Update your C++ knowledge – Modern C++11/14/17 Training
Find out more

source code of offload/test/offloading/interop.c