#include <assert.h> | |
#include <stdlib.h> | |
#include <openacc.h> | |
int | |
main () | |
{ | |
int n = 100, i; | |
int *a = (int *) malloc (sizeof (int) * n); | |
int *b; | |
for (i = 0; i < n; i++) | |
a[i] = i+1; | |
#pragma acc enter data copyin(a[:n]) create(b) | |
b = a; | |
acc_attach ((void **)&b); | |
#pragma acc parallel loop present (b[:n]) | |
for (i = 0; i < n; i++) | |
b[i] = i+1; | |
acc_detach ((void **)&b); | |
#pragma acc exit data copyout(a[:n], b) | |
for (i = 0; i < 10; i++) | |
assert (a[i] == b[i]); | |
free (a); | |
return 0; | |
} |