xref: /petsc/src/sys/tests/ex69.c (revision 57d508425293f0bb93f59574d14951d8faac9af8)
1 #include <omp.h>
2 #include <petscsys.h>
3 
4 /*
5    See the comments in ex69f.F90
6 */
7 int main(int argc, char **args)
8 {
9   double wtime_start, wtime_end, mpiwtime_start, mpiwtime_end;
10   double x[100];
11   int    i, maxthreads;
12 
13   PetscCall(PetscInitialize(&argc, &args, NULL, NULL));
14   wtime_start    = omp_get_wtime();
15   mpiwtime_start = MPI_Wtime();
16 #pragma omp parallel for schedule(static)
17   for (i = 0; i < 100; i++) x[i] = exp(3.0 * i);
18   wtime_end    = omp_get_wtime();
19   mpiwtime_end = MPI_Wtime();
20   printf("Wall clock time from MPI_Wtime()     %g\n", wtime_end - wtime_start);
21   printf("Wall clock time from omp_get_wtime() %g\n", mpiwtime_end - mpiwtime_start);
22   printf("Value of x(22) %g\n", x[22]);
23   maxthreads = omp_get_max_threads();
24   printf("Number of threads set %d\n", maxthreads);
25   PetscCall(PetscFinalize());
26   return 0;
27 }
28 
29 /*TEST
30 
31    build:
32      requires: openmp
33 
34    test:
35      filter: grep -v "Number of threads"
36 
37 TEST*/
38