[OPENMP][NVPTX]Fix __kmpc_flush to flush the memory per system, not per block.
authorAlexey Bataev <a.bataev@hotmail.com>
Thu, 6 Dec 2018 15:27:58 +0000 (15:27 +0000)
committerAlexey Bataev <a.bataev@hotmail.com>
Thu, 6 Dec 2018 15:27:58 +0000 (15:27 +0000)
Summary:
According to the standard, after memory flushing the changes in the
memory must be visible to all the threads in all teams. Patch fixes
this.

Reviewers: gtbercea, kkwli0

Subscribers: guansong, jfb, caomhin, openmp-commits

Differential Revision: https://reviews.llvm.org/D55370

llvm-svn: 348491

openmp/libomptarget/deviceRTLs/nvptx/src/sync.cu

index 082f3b3..d4f2ada 100644 (file)
@@ -132,7 +132,7 @@ EXTERN void __kmpc_end_single(kmp_Ident *loc, int32_t global_tid) {
 
 EXTERN void __kmpc_flush(kmp_Ident *loc) {
   PRINT0(LD_IO, "call kmpc_flush\n");
-  __threadfence_block();
+  __threadfence_system();
 }
 
 ////////////////////////////////////////////////////////////////////////////////