// Computation of PI iteratively // Basic parallel version #include #include #include static long num_steps = 10000000; double step; void main () { int i; double x, pi = 0.0, sum = 0.0; step = 1.0/(double) num_steps; // start the threads, declare sum and x private for // each thread #pragma omp parallel private(sum, x) { // initialize sum (as it is new in each thread) sum = 0.0; // execute for in parallel #pragma omp for for (i=0;i< num_steps; i++){ x = (i+0.5)*step; sum = sum + 4.0/(1.0+x*x); } // guard the access to the updating of shared pi #pragma omp critical pi += step * sum; } printf("pi=%lf\n", pi); }