//obliczanie PI long long num_steps = 10000000; double step; double tab[100]; // zapisanie w pamieci nowej wartosci, a nie w rejestrze int main(int argc, char* argv[]) { clock_t start, stop; for (int j = 0; j < 20; j++) { double x, pi, sum = 0.0; int i; step = 1. / (double)num_steps; start = clock(); omp_set_num_threads(2); #pragma omp parallel { int id = omp_get_thread_num(); tab[id + j] = 0; #pragma omp for for (i = 0; i < num_steps; i++) { double x = (i + .5)*step; tab[j + id] += 4.0 / (1. + x*x); } #pragma omp atomic sum += tab[j + id]; } pi = sum*step; stop = clock(); printf("Czas przetwarzania %d wynosi %f sekund\n",j, ((double)(stop - start) / 1000.0)); } return 0; }