xref: /petsc/src/sys/tests/ex69.c (revision 834855d6effb0d027771461c8e947ee1ce5a1e17)
19f0612e4SBarry Smith #include <omp.h>
29f0612e4SBarry Smith #include <petscsys.h>
39f0612e4SBarry Smith 
49f0612e4SBarry Smith /*
59f0612e4SBarry Smith    See the comments in ex69f.F90
69f0612e4SBarry Smith */
main(int argc,char ** args)79f0612e4SBarry Smith int main(int argc, char **args)
89f0612e4SBarry Smith {
99f0612e4SBarry Smith   double wtime_start, wtime_end, mpiwtime_start, mpiwtime_end;
109f0612e4SBarry Smith   double x[100];
119f0612e4SBarry Smith   int    i, maxthreads;
129f0612e4SBarry Smith 
139f0612e4SBarry Smith   PetscCall(PetscInitialize(&argc, &args, NULL, NULL));
149f0612e4SBarry Smith   wtime_start    = omp_get_wtime();
159f0612e4SBarry Smith   mpiwtime_start = MPI_Wtime();
169f0612e4SBarry Smith #pragma omp parallel for schedule(static)
17*ac530a7eSPierre Jolivet   for (i = 0; i < 100; i++) x[i] = exp(3.0 * i);
189f0612e4SBarry Smith   wtime_end    = omp_get_wtime();
199f0612e4SBarry Smith   mpiwtime_end = MPI_Wtime();
209f0612e4SBarry Smith   printf("Wall clock time from MPI_Wtime()     %g\n", wtime_end - wtime_start);
219f0612e4SBarry Smith   printf("Wall clock time from omp_get_wtime() %g\n", mpiwtime_end - mpiwtime_start);
229f0612e4SBarry Smith   printf("Value of x(22) %g\n", x[22]);
239f0612e4SBarry Smith   maxthreads = omp_get_max_threads();
249f0612e4SBarry Smith   printf("Number of threads set %d\n", maxthreads);
259f0612e4SBarry Smith   PetscCall(PetscFinalize());
269f0612e4SBarry Smith   return 0;
279f0612e4SBarry Smith }
289f0612e4SBarry Smith 
299f0612e4SBarry Smith /*TEST
309f0612e4SBarry Smith 
319f0612e4SBarry Smith    build:
329f0612e4SBarry Smith      requires: openmp
339f0612e4SBarry Smith 
349f0612e4SBarry Smith    test:
359f0612e4SBarry Smith      filter: grep -v "Number of threads"
369f0612e4SBarry Smith 
379f0612e4SBarry Smith TEST*/
38