40 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_get_num_threads()6{7 /* checks that omp_get_num_threads is equal to the number of8 threads */9 int nthreads_lib;10 int nthreads = 0;11 12 nthreads_lib = -1;13 14 #pragma omp parallel15 {16 #pragma omp critical17 {18 nthreads++;19 } /* end of critical */20 #pragma omp single21 {22 nthreads_lib = omp_get_num_threads ();23 } /* end of single */24 } /* end of parallel */25 return (nthreads == nthreads_lib);26}27 28int main()29{30 int i;31 int num_failed=0;32 33 for(i = 0; i < REPETITIONS; i++) {34 if(!test_omp_get_num_threads()) {35 num_failed++;36 }37 }38 return num_failed;39}40