aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.oacc-c-c++-common/acc_set_cuda_stream-1.c
blob: 93981ff5cb7f86db8d87a47593286a6b19e57753 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* Verify expected nvptx plugin behavior for "acc_set_cuda_stream" for
   "acc_async_sync".  */

/* { dg-do run { target openacc_nvidia_accel_selected } } */
/* { dg-set-target-env-var GOMP_DEBUG "1" } */

#undef NDEBUG
#include <assert.h>
#include <openacc.h>

int main(void)
{
  int async = 42;

  /* Initialize.  */
#pragma acc parallel async(acc_async_sync)
      ;
#pragma acc parallel async(async)
      ;
#pragma acc wait

  void *cuda_stream_sync = acc_get_cuda_stream (acc_async_sync);
  assert (cuda_stream_sync == NULL);
  void *cuda_stream_async = acc_get_cuda_stream (async);
  assert (cuda_stream_async != NULL);
  int ret = acc_set_cuda_stream (acc_async_sync, cuda_stream_async);
  assert (ret == 0);
  void *cuda_stream_sync_ = acc_get_cuda_stream (acc_async_sync);
  assert (cuda_stream_sync_ == cuda_stream_sync);
  void *cuda_stream_async_ = acc_get_cuda_stream (async);
  assert (cuda_stream_async_ == cuda_stream_async);

#pragma acc parallel async(acc_async_sync)
      ;
#pragma acc parallel async(async)
      ;
#pragma acc wait

  return 0;
}

/* { dg-output "Refusing request to set CUDA stream associated with \"acc_async_sync\"" } */