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); }