forked from OSchip/llvm-project
[OpenMP] Possible fix for sporadic test failure from loop_dispatch.c
This patch tries to fix sporadic test failure after the change https://reviews.llvm.org/D122107. Made the test wait until every thread has at least one loop iteration. Differential Revision: https://reviews.llvm.org/D124812
This commit is contained in:
parent
39492ba5d6
commit
7e23b46ab8
|
@ -9,22 +9,33 @@
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int i;
|
int i;
|
||||||
|
int wait_s = 0;
|
||||||
|
|
||||||
#pragma omp parallel num_threads(4)
|
#pragma omp parallel num_threads(4)
|
||||||
{
|
{
|
||||||
|
int wait_id = 0;
|
||||||
|
int team_size = omp_get_num_threads();
|
||||||
#pragma omp for schedule(static, WORK_SIZE / 4)
|
#pragma omp for schedule(static, WORK_SIZE / 4)
|
||||||
for (i = 0; i < WORK_SIZE; i++) {}
|
for (i = 0; i < WORK_SIZE; i++) {}
|
||||||
|
|
||||||
#pragma omp for schedule(dynamic)
|
#pragma omp for schedule(dynamic)
|
||||||
for (i = 0; i < WORK_SIZE; i++) {
|
for (i = 0; i < WORK_SIZE; i++) {
|
||||||
// Make every iteration takes at least 1ms.
|
if (wait_id == 0) {
|
||||||
delay(1000);
|
// Wait until every thread has at least one iteration assigned
|
||||||
|
OMPT_SIGNAL(wait_s);
|
||||||
|
OMPT_WAIT(wait_s, team_size);
|
||||||
|
wait_id++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma omp for schedule(guided)
|
#pragma omp for schedule(guided)
|
||||||
for (i = 0; i < WORK_SIZE; i++) {
|
for (i = 0; i < WORK_SIZE; i++) {
|
||||||
// Make every iteration takes at least 1ms.
|
if (wait_id == 1) {
|
||||||
delay(1000);
|
// Wait until every thread has at least one iteration assigned
|
||||||
|
OMPT_SIGNAL(wait_s);
|
||||||
|
OMPT_WAIT(wait_s, 2 * team_size);
|
||||||
|
wait_id++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue