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