Test cases for references in OpenACC 'private' clauses
libgomp/ * testsuite/libgomp.oacc-fortran/privatized-ref-1.f95: New test. * testsuite/libgomp.oacc-c++/privatized-ref-2.C: New test. * testsuite/libgomp.oacc-c++/privatized-ref-3.C: New test. Co-authored-by: Thomas Schwinge <thomas@codesourcery.com>
This commit is contained in:
parent
025a707d28
commit
fbb438808e
3 changed files with 211 additions and 0 deletions
66
libgomp/testsuite/libgomp.oacc-c++/privatized-ref-2.C
Normal file
66
libgomp/testsuite/libgomp.oacc-c++/privatized-ref-2.C
Normal file
|
@ -0,0 +1,66 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
void workers (void)
|
||||
{
|
||||
double res[65536];
|
||||
int i;
|
||||
|
||||
#pragma acc parallel copyout(res) num_gangs(64) num_workers(64)
|
||||
/* { dg-warning "using num_workers \\(32\\), ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 } */
|
||||
{
|
||||
int i, j;
|
||||
#pragma acc loop gang
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
#pragma acc loop worker
|
||||
for (j = 0; j < 256; j++)
|
||||
{
|
||||
int tmpvar;
|
||||
int &tmpref = tmpvar;
|
||||
tmpref = (i * 256 + j) * 99;
|
||||
res[i * 256 + j] = tmpref;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 65536; i++)
|
||||
if (res[i] != i * 99)
|
||||
abort ();
|
||||
}
|
||||
|
||||
void vectors (void)
|
||||
{
|
||||
double res[65536];
|
||||
int i;
|
||||
|
||||
#pragma acc parallel copyout(res) num_gangs(64) num_workers(64)
|
||||
/* { dg-warning "using num_workers \\(32\\), ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 } */
|
||||
{
|
||||
int i, j;
|
||||
#pragma acc loop gang worker
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
#pragma acc loop vector
|
||||
for (j = 0; j < 256; j++)
|
||||
{
|
||||
int tmpvar;
|
||||
int &tmpref = tmpvar;
|
||||
tmpref = (i * 256 + j) * 101;
|
||||
res[i * 256 + j] = tmpref;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 65536; i++)
|
||||
if (res[i] != i * 101)
|
||||
abort ();
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
workers ();
|
||||
vectors ();
|
||||
return 0;
|
||||
}
|
69
libgomp/testsuite/libgomp.oacc-c++/privatized-ref-3.C
Normal file
69
libgomp/testsuite/libgomp.oacc-c++/privatized-ref-3.C
Normal file
|
@ -0,0 +1,69 @@
|
|||
/* { dg-do run } */
|
||||
|
||||
/*TODO
|
||||
{ dg-xfail-run-if TODO { openacc_radeon_accel_selected && { ! __OPTIMIZE__ } } } */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
void workers (void)
|
||||
{
|
||||
double res[65536];
|
||||
int i;
|
||||
|
||||
#pragma acc parallel copyout(res) num_gangs(64) num_workers(64)
|
||||
/* { dg-warning "using num_workers \\(32\\), ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 } */
|
||||
{
|
||||
int i, j;
|
||||
int tmpvar;
|
||||
int &tmpref = tmpvar;
|
||||
#pragma acc loop gang
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
#pragma acc loop worker private(tmpref)
|
||||
for (j = 0; j < 256; j++)
|
||||
{
|
||||
tmpref = (i * 256 + j) * 99;
|
||||
res[i * 256 + j] = tmpref;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 65536; i++)
|
||||
if (res[i] != i * 99)
|
||||
abort ();
|
||||
}
|
||||
|
||||
void vectors (void)
|
||||
{
|
||||
double res[65536];
|
||||
int i;
|
||||
|
||||
#pragma acc parallel copyout(res) num_gangs(64) num_workers(64)
|
||||
/* { dg-warning "using num_workers \\(32\\), ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 } */
|
||||
{
|
||||
int i, j;
|
||||
int tmpvar;
|
||||
int &tmpref = tmpvar;
|
||||
#pragma acc loop gang worker
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
#pragma acc loop vector private(tmpref)
|
||||
for (j = 0; j < 256; j++)
|
||||
{
|
||||
tmpref = (i * 256 + j) * 101;
|
||||
res[i * 256 + j] = tmpref;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 65536; i++)
|
||||
if (res[i] != i * 101)
|
||||
abort ();
|
||||
}
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
workers ();
|
||||
vectors ();
|
||||
return 0;
|
||||
}
|
76
libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-1.f95
Normal file
76
libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-1.f95
Normal file
|
@ -0,0 +1,76 @@
|
|||
! { dg-do run }
|
||||
|
||||
!TODO
|
||||
! { dg-xfail-run-if TODO { openacc_radeon_accel_selected && { ! __OPTIMIZE__ } } }
|
||||
|
||||
program main
|
||||
implicit none
|
||||
integer :: myint
|
||||
integer :: i
|
||||
real :: res(65536), tmp
|
||||
|
||||
res(:) = 0.0
|
||||
|
||||
myint = 5
|
||||
call workers(myint, res)
|
||||
|
||||
do i=1,65536
|
||||
tmp = i * 99
|
||||
if (res(i) .ne. tmp) stop 1
|
||||
end do
|
||||
|
||||
res(:) = 0.0
|
||||
|
||||
myint = 7
|
||||
call vectors(myint, res)
|
||||
|
||||
do i=1,65536
|
||||
tmp = i * 101
|
||||
if (res(i) .ne. tmp) stop 2
|
||||
end do
|
||||
|
||||
contains
|
||||
|
||||
subroutine workers(t1, res)
|
||||
implicit none
|
||||
integer :: t1
|
||||
integer :: i, j
|
||||
real, intent(out) :: res(:)
|
||||
|
||||
!$acc parallel copyout(res) num_gangs(64) num_workers(64)
|
||||
! { dg-warning "using num_workers \\(32\\), ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 }
|
||||
|
||||
!$acc loop gang
|
||||
do i=0,255
|
||||
!$acc loop worker private(t1)
|
||||
do j=1,256
|
||||
t1 = (i * 256 + j) * 99
|
||||
res(i * 256 + j) = t1
|
||||
end do
|
||||
end do
|
||||
|
||||
!$acc end parallel
|
||||
end subroutine workers
|
||||
|
||||
subroutine vectors(t1, res)
|
||||
implicit none
|
||||
integer :: t1
|
||||
integer :: i, j
|
||||
real, intent(out) :: res(:)
|
||||
|
||||
!$acc parallel copyout(res) num_gangs(64) num_workers(64)
|
||||
! { dg-warning "using num_workers \\(32\\), ignoring 64" "" { target openacc_nvidia_accel_selected } .-1 }
|
||||
|
||||
!$acc loop gang worker
|
||||
do i=0,255
|
||||
!$acc loop vector private(t1)
|
||||
do j=1,256
|
||||
t1 = (i * 256 + j) * 101
|
||||
res(i * 256 + j) = t1
|
||||
end do
|
||||
end do
|
||||
|
||||
!$acc end parallel
|
||||
end subroutine vectors
|
||||
|
||||
end program main
|
Loading…
Add table
Reference in a new issue