Actual source code: ex69.c

  1: #include <omp.h>
  2: #include <petscsys.h>

  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;

 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: }

 29: /*TEST

 31:    build:
 32:      requires: openmp

 34:    test:
 35:      filter: grep -v "Number of threads"

 37: TEST*/