Open mikaoP opened 1 month ago
Reference commit of the assert 4ea24946e356be31446fc30ca3d11cc5783ba2a6 @jpeyton52
@llvm/issue-subscribers-openmp
Author: None (mikaoP)
Reproduced too in the following example, based on omp_parallel_num_threads.c
test. Basically I added tasks to enable tasking. Also without modifying the yield policy
#include <stdio.h>
#include <unistd.h>
#include "omp_testsuite.h"
int test_omp_parallel_num_threads()
{
int num_failed;
int threads;
int nthreads;
int max_threads = 0;
num_failed = 0;
#pragma omp task
{}
/* first we check how many threads are available */
#pragma omp parallel
{
#pragma omp task
{}
#pragma omp master
max_threads = omp_get_num_threads ();
}
/* we increase the number of threads from one to maximum:*/
for(threads = 1; threads <= max_threads; threads++) {
nthreads = 0;
#pragma omp parallel reduction(+:num_failed) num_threads(threads)
{
#pragma omp task
{}
num_failed = num_failed + !(threads == omp_get_num_threads());
#pragma omp atomic
nthreads += 1;
}
num_failed = num_failed + !(nthreads == threads);
}
return (!num_failed);
}
int main()
{
int i;
int num_failed=0;
for(i = 0; i < REPETITIONS; i++) {
if(!test_omp_parallel_num_threads()) {
num_failed++;
}
}
return num_failed;
}
clang++ -fopenmp t1.c -o t1 && while ./t1 || break; do date; done
Thanks, for reporting this. I just wanted to acknowledge that I've seen this and am investigating it now.
Assertion failure at kmp_tasking.cpp(3238): victim_tid < task_team->tt.tt_nproc.
clang++ -fopenmp t1.cpp -o t1 && while taskset -c 0-1 env KMP_USE_YIELD=0 ./t1 || break; do date; done
Aparently it is necessaryKMP_USE_YIELD=0
. I've not managed how to reproduce it with 1 or 2. Also less cpus than threads is needed.