From 18d8473f185999e418dcb62ee4d8a671c2eacee5 Mon Sep 17 00:00:00 2001 From: Jim Cownie Date: Sat, 10 May 2014 17:02:09 +0000 Subject: Add testsuite from OpenUH llvm-svn: 208472 --- openmp/testsuite/c/omp_parallel_num_threads.c | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 openmp/testsuite/c/omp_parallel_num_threads.c (limited to 'openmp/testsuite/c/omp_parallel_num_threads.c') diff --git a/openmp/testsuite/c/omp_parallel_num_threads.c b/openmp/testsuite/c/omp_parallel_num_threads.c new file mode 100644 index 00000000000..897fed24c59 --- /dev/null +++ b/openmp/testsuite/c/omp_parallel_num_threads.c @@ -0,0 +1,46 @@ + +Test which checks the omp_parallel_num_threads directive by counting the threads in a parallel region which was started with an explicitly stated number of threads. +3.0 +omp parellel num_threads +omp master,omp parallel reduction,omp atomic + +#include +#include "omp_testsuite.h" + +int omp_parallel_num_threads(FILE * logFile){ + + int failed; + int threads; + int nthreads; + + + int max_threads = 0; + + failed = 0; + + /* first we check how many threads are available */ +#pragma omp parallel + { +#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(+:failed) num_threads(threads) + { + failed = failed + !(threads == omp_get_num_threads ()); +#pragma omp atomic + nthreads += 1; + } + + failed = failed + !(nthreads == threads); + } + return (!failed); +} + + -- cgit v1.2.3