diff options
author | Jonathan Peyton <jonathan.l.peyton@intel.com> | 2016-06-21 19:12:07 +0000 |
---|---|---|
committer | Jonathan Peyton <jonathan.l.peyton@intel.com> | 2016-06-21 19:12:07 +0000 |
commit | c76f9f0df81de05e19e15a7c756d50b413cddbb9 (patch) | |
tree | 522c2e54607c0e6e963a084b06f37dad23904bed /openmp/runtime/test/tasking | |
parent | 93b4b2e386209aa353091240c591ebeefae45bed (diff) | |
download | bcm5719-llvm-c76f9f0df81de05e19e15a7c756d50b413cddbb9.tar.gz bcm5719-llvm-c76f9f0df81de05e19e15a7c756d50b413cddbb9.zip |
Bug fix for hang when tasks used in nested parallel
Bug fix for hang when omp task and nested parallelism used together.
Still some problem remains with task state saving/restoring, but
user's case works fine now. All tasking unit tests passed as well.
Patch by Andrey Churbanov
Differential Revision: http://reviews.llvm.org/D21558
llvm-svn: 273297
Diffstat (limited to 'openmp/runtime/test/tasking')
-rw-r--r-- | openmp/runtime/test/tasking/nested_parallel_tasking.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/openmp/runtime/test/tasking/nested_parallel_tasking.c b/openmp/runtime/test/tasking/nested_parallel_tasking.c new file mode 100644 index 00000000000..4374d6ecda2 --- /dev/null +++ b/openmp/runtime/test/tasking/nested_parallel_tasking.c @@ -0,0 +1,32 @@ +// RUN: %libomp-compile-and-run +#include <stdio.h> +#include <omp.h> + +/* + * This test would hang when level instead of active level + * used to push task state. + */ + +int main() +{ + // If num_threads is changed to a value greater than 1, then the test passes + #pragma omp parallel num_threads(1) + { + #pragma omp parallel + printf("Hello World from thread %d\n", omp_get_thread_num()); + } + + printf("omp_num_threads: %d\n", omp_get_max_threads()); + + #pragma omp parallel + { + #pragma omp master + #pragma omp task default(none) + { + printf("%d is executing this task\n", omp_get_thread_num()); + } + } + + printf("pass\n"); + return 0; +} |