diff options
author | Julian Brown <julian@codesourcery.com> | 2020-06-25 07:40:53 -0700 |
---|---|---|
committer | Julian Brown <julian@codesourcery.com> | 2020-09-08 13:26:42 -0700 |
commit | d6d9be7c6be1b88f844a49d51302d34efd919a23 (patch) | |
tree | af52281e8e9175a64c4e7fdaff85048d49bf407d | |
parent | 488e33339e6dea3262a11307592e9aad87a97c8d (diff) | |
download | gcc-d6d9be7c6be1b88f844a49d51302d34efd919a23.zip gcc-d6d9be7c6be1b88f844a49d51302d34efd919a23.tar.gz gcc-d6d9be7c6be1b88f844a49d51302d34efd919a23.tar.bz2 |
openacc: Fix race condition in Fortran loop collapse tests
The gangs participating in a gang-partitioned loop are not all guaranteed
to complete before some given gang continues to execute beyond that loop.
This means that two existing test cases contain a race condition,
because a loop that may be gang-partitioned is followed immediately by
another loop. The fix is to place the loops in separate parallel regions.
2020-09-08 Julian Brown <julian@codesourcery.com>
libgomp/
* testsuite/libgomp.oacc-fortran/collapse-1.f90: Fix race condition.
* testsuite/libgomp.oacc-fortran/collapse-2.f90: Likewise.
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 | 3 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 index 918c5d0..4857752 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/collapse-1.f90 @@ -14,6 +14,9 @@ program collapse1 end do end do end do + !$acc end parallel + + !$acc parallel !$acc loop collapse(2) reduction(.or.:l) do i = 1, 3 do j = 4, 6 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 index 98b6987..0a54390 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/collapse-2.f90 @@ -13,6 +13,9 @@ program collapse2 do 164 k = 5, 7 a(i, j, k) = i + j + k 164 end do + !$acc end parallel + + !$acc parallel !$acc loop collapse(2) reduction(.or.:l) firstdo: do i = 1, 3 do j = 4, 6 |