blob: 2059c5f222bb3b0219aff5a2e5f497bb53b5b626 [file] [log] [blame]
/* { dg-do run { target { ! openacc_host_selected } } } */
#include <assert.h>
#include "da-utils.h"
int main (void)
{
int n = 128;
double ***a = (double ***) create_da (sizeof (double), n, 3);
double ***b = (double ***) create_da (sizeof (double), n, 3);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++)
a[i][j][k] = i + j + k + i * j * k;
/* This test exercises async copyout of dynamic array rows. */
#pragma acc parallel copyin(a[0:n][0:n][0:n]) copyout(b[0:n][0:n][0:n]) async(5)
{
#pragma acc loop gang
for (int i = 0; i < n; i++)
#pragma acc loop vector
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++)
b[i][j][k] = a[i][j][k] * 2.0;
}
#pragma acc wait (5)
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++)
assert (b[i][j][k] == a[i][j][k] * 2.0);
return 0;
}