[Openmp-commits] [PATCH] D90412: Fix hierarchical barrier deadlock for infinite blocktime
Nawrin Sultana via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Mon Nov 2 14:50:11 PST 2020
Nawrin updated this revision to Diff 302412.
Nawrin added a comment.
Add env in barrier test to use hierarchical barrier instead of the default barrier
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90412/new/
https://reviews.llvm.org/D90412
Files:
openmp/runtime/src/kmp_barrier.cpp
openmp/runtime/test/barrier/omp_barrier.c
Index: openmp/runtime/test/barrier/omp_barrier.c
===================================================================
--- openmp/runtime/test/barrier/omp_barrier.c
+++ openmp/runtime/test/barrier/omp_barrier.c
@@ -1,4 +1,5 @@
// RUN: %libomp-compile-and-run
+// RUN: %libomp-compile && env KMP_PLAIN_BARRIER_PATTERN='hierarchical,hierarchical' KMP_FORKJOIN_BARRIER_PATTERN='hierarchical,hierarchical' %libomp-run
#include <stdio.h>
#include "omp_testsuite.h"
#include "omp_my_sleep.h"
Index: openmp/runtime/src/kmp_barrier.cpp
===================================================================
--- openmp/runtime/src/kmp_barrier.cpp
+++ openmp/runtime/src/kmp_barrier.cpp
@@ -1030,7 +1030,8 @@
} else {
// Leaf does special release on "offset" bits of parent's b_arrived flag
thr_bar->b_arrived = team->t.t_bar[bt].b_arrived + KMP_BARRIER_STATE_BUMP;
- kmp_flag_oncore flag(&thr_bar->parent_bar->b_arrived, thr_bar->offset);
+ kmp_flag_oncore flag(&thr_bar->parent_bar->b_arrived,
+ thr_bar->offset + 1);
flag.set_waiter(other_threads[thr_bar->parent_tid]);
flag.release();
}
@@ -1079,7 +1080,7 @@
// Wait on my "offset" bits on parent's b_go flag
thr_bar->wait_flag = KMP_BARRIER_PARENT_FLAG;
kmp_flag_oncore flag(&thr_bar->parent_bar->b_go, KMP_BARRIER_STATE_BUMP,
- thr_bar->offset, bt,
+ thr_bar->offset + 1, bt,
this_thr USE_ITT_BUILD_ARG(itt_sync_obj));
flag.wait(this_thr, TRUE);
if (thr_bar->wait_flag ==
@@ -1088,7 +1089,7 @@
KMP_INIT_BARRIER_STATE); // Reset my b_go flag for next time
} else { // Reset my bits on parent's b_go flag
(RCAST(volatile char *,
- &(thr_bar->parent_bar->b_go)))[thr_bar->offset] = 0;
+ &(thr_bar->parent_bar->b_go)))[thr_bar->offset + 1] = 0;
}
}
thr_bar->wait_flag = KMP_BARRIER_NOT_WAITING;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D90412.302412.patch
Type: text/x-patch
Size: 2001 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20201102/920de4db/attachment.bin>
More information about the Openmp-commits
mailing list