This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 10/13] Race conditions in OpenACC async tests
- From: Julian Brown <julian at codesourcery dot com>
- To: <gcc-patches at gcc dot gnu dot org>
- Cc: <thomas_schwinge at mentor dot com>, <jakub at redhat dot com>, <Catherine_Moore at mentor dot com>, Andrew Stubbs <ams at codesourcery dot com>
- Date: Fri, 15 Nov 2019 13:44:03 -0800
- Subject: [PATCH 10/13] Race conditions in OpenACC async tests
- Ironport-sdr: mRb4X7jPqmjxCcY26Y2KZGKbx+Txt+aAnrSRxJphbRnBhj7JLIrDmZSQEIqa8zJ7fly76htT2z IyeQS8dGKomB+6lpgBmuCt+dtVWEzRZ92/Onav9zEuPdWyye4VptJsIS/OGj6/8I+ug7T1ywDv Nplx0RigF1cfi7T9LduNSmUMzxNQTSZvTBBF2CLzFevBSDAWql6mdaF6KU2mpluvvUodEbxse4 IKCLyTi4XDQB5kdpU9KwKmHyECLB0hFQBDZ8Rwd1kKY1YuqrQxXBiSX/W9kZkkTmkMldkdkUvl 0vA=
- Ironport-sdr: Gyx7p/e/RTh2O8+gNgihWrRRGDQ7VmhItI5QpkYspy3Y/KDjdZGMDuXjSQX/XQ526UDWXmmD/I N6Kk+dD53SIFlfQzl6ZCtLngJTuiAZzhx8uCAs7BM0EgG/zuTl4I68xIqVxKgVaIYtSsBzwxBd DTEFxtLKW/OzTHIwO1g2TxuoH8CzE/3QecYO3338cObhx/XcdRcBnsNhWevnID4ytN/RRNvHJf +v9DrQNsGBQubjKu/CIHCRevJOw3woeSjV+AzkyNSP4cVYsE6Op9MJD99oEt/T6Ni8b80AvIFE O4Q=
- References: <cover.1573849743.git.julian@codesourcery.com>
This patch provides some race-condition fixes for tests that broke
for AMD GCN.
OK?
Thanks,
Julian
ChangeLog
libgomp/
* testsuite/libgomp.oacc-c-c++-common/lib-94.c: Fix race condition.
* testsuite/libgomp.oacc-fortran/lib-16-2.f90: Likewise.
---
libgomp/testsuite/libgomp.oacc-c-c++-common/lib-94.c | 4 ++--
libgomp/testsuite/libgomp.oacc-fortran/lib-16-2.f90 | 5 +++++
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-94.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-94.c
index 54497237b0c..baa3ac83f04 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-94.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-94.c
@@ -22,10 +22,10 @@ main (int argc, char **argv)
acc_copyin_async (h, N, async);
- memset (h, 0, N);
-
acc_wait (async);
+ memset (h, 0, N);
+
acc_copyout_async (h, N, async + 1);
acc_wait (async + 1);
diff --git a/libgomp/testsuite/libgomp.oacc-fortran/lib-16-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/lib-16-2.f90
index ddd557d3be0..e2e47c967fa 100644
--- a/libgomp/testsuite/libgomp.oacc-fortran/lib-16-2.f90
+++ b/libgomp/testsuite/libgomp.oacc-fortran/lib-16-2.f90
@@ -27,6 +27,9 @@ program main
if (acc_is_present (h) .neqv. .TRUE.) stop 1
+ ! We must wait for the update to be done.
+ call acc_wait (async)
+
h(:) = 0
call acc_copyout_async (h, sizeof (h), async)
@@ -45,6 +48,8 @@ program main
if (acc_is_present (h) .neqv. .TRUE.) stop 3
+ call acc_wait (async)
+
do i = 1, N
if (h(i) /= i + i) stop 4
end do
--
2.23.0