brintos

brintos / llvm-project-archived public Read only

0
0
Text · 954 B · 8af1f9d Raw
47 lines · c
1// RUN: %libomp-compile-and-run2#include <stdio.h>3#include "omp_testsuite.h"4 5int test_omp_parallel_num_threads()6{7  int num_failed;8  int threads;9  int nthreads;10  int max_threads = 0;11 12  num_failed = 0;13 14  /* first we check how many threads are available */15  #pragma omp parallel16  {17    #pragma omp master18    max_threads = omp_get_num_threads ();19  }20 21  /* we increase the number of threads from one to maximum:*/22  for(threads = 1; threads <= max_threads; threads++) {23    nthreads = 0;24    #pragma omp parallel reduction(+:num_failed) num_threads(threads)25    {26      num_failed = num_failed + !(threads == omp_get_num_threads());27      #pragma omp atomic28      nthreads += 1;29    }30    num_failed = num_failed + !(nthreads == threads);31  }32  return (!num_failed);33}34 35int main()36{37  int i;38  int num_failed=0;39 40  for(i = 0; i < REPETITIONS; i++) {41    if(!test_omp_parallel_num_threads()) {42      num_failed++;43    }44  }45  return num_failed;46}47