summaryrefslogtreecommitdiffstats
path: root/openmp/testsuite/c/omp_parallel_num_threads.c
diff options
context:
space:
mode:
authorJim Cownie <james.h.cownie@intel.com>2014-05-10 17:02:09 +0000
committerJim Cownie <james.h.cownie@intel.com>2014-05-10 17:02:09 +0000
commit18d8473f185999e418dcb62ee4d8a671c2eacee5 (patch)
treed212f5cac426b2be33035984fc56623f92f5ddde /openmp/testsuite/c/omp_parallel_num_threads.c
parent281f9d0e97dca0594a15341e3c927e2667773104 (diff)
downloadbcm5719-llvm-18d8473f185999e418dcb62ee4d8a671c2eacee5.tar.gz
bcm5719-llvm-18d8473f185999e418dcb62ee4d8a671c2eacee5.zip
Add testsuite from OpenUH
llvm-svn: 208472
Diffstat (limited to 'openmp/testsuite/c/omp_parallel_num_threads.c')
-rw-r--r--openmp/testsuite/c/omp_parallel_num_threads.c46
1 files changed, 46 insertions, 0 deletions
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 @@
+<ompts:test>
+<ompts:testdescription>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.</ompts:testdescription>
+<ompts:ompversion>3.0</ompts:ompversion>
+<ompts:directive>omp parellel num_threads</ompts:directive>
+<ompts:dependences>omp master,omp parallel reduction,omp atomic</ompts:dependences>
+<ompts:testcode>
+#include <stdio.h>
+#include "omp_testsuite.h"
+
+int <ompts:testcode:functionname>omp_parallel_num_threads</ompts:testcode:functionname>(FILE * logFile){
+ <ompts:orphan:vars>
+ int failed;
+ int threads;
+ int nthreads;
+ </ompts:orphan:vars>
+
+ 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;
+
+ <ompts:orphan>
+#pragma omp parallel reduction(+:failed) <ompts:check>num_threads(threads)</ompts:check>
+ {
+ failed = failed + !(threads == omp_get_num_threads ());
+#pragma omp atomic
+ nthreads += 1;
+ }
+ </ompts:orphan>
+ failed = failed + !(nthreads == threads);
+ }
+ return (!failed);
+}
+</ompts:testcode>
+</ompts:test>
OpenPOWER on IntegriCloud