Comments 4
Достаточно интересная вещь. POSIX-треды, конечно, хорошо, но OpenMP по идее должна значительно упростить написание параллельного кода. Вижу, что в gcc есть поддержка OpenMP. Спасибо за статью, буду пробовать.
Элементарно, Ватсон :)
Вот вычисление пи интегрированием.
Экспериментируйте :)
#include <stdio.h>
#include <time.h>
long long num_steps = 1000000000;
double step;
int main(int argc, char* argv[])
{
clock_t start, stop;
double x, pi, sum=0.0;
int i;
step = 1./(double)num_steps;
start = clock();
#pragma omp parallel for private(x) reduction(+:sum)
for (i=0; i<num_steps; i++)
{
x = (i + .5)*step;
sum = sum + 4.0/(1.+ x*x);
}
pi = sum*step;
stop = clock();
printf(«The value of PI is %15.12f\n»,pi);
printf(«The time to calculate PI was %f seconds\n»,((double)(stop — start)/1000.0));
return 0;
}
Вот вычисление пи интегрированием.
Экспериментируйте :)
#include <stdio.h>
#include <time.h>
long long num_steps = 1000000000;
double step;
int main(int argc, char* argv[])
{
clock_t start, stop;
double x, pi, sum=0.0;
int i;
step = 1./(double)num_steps;
start = clock();
#pragma omp parallel for private(x) reduction(+:sum)
for (i=0; i<num_steps; i++)
{
x = (i + .5)*step;
sum = sum + 4.0/(1.+ x*x);
}
pi = sum*step;
stop = clock();
printf(«The value of PI is %15.12f\n»,pi);
printf(«The time to calculate PI was %f seconds\n»,((double)(stop — start)/1000.0));
return 0;
}
Sign up to leave a comment.
Параллельные заметки N5 — продолжаем знакомиться с конструкциями OpenMP