01 noiembrie 2010

Impartirea unui for pe mai multe thread-uri

#include "stdio.h"
#include "omp.h"

int main() {
int i, n, tid;
float a[10], b[10], sum;

/* initializari */

n = 10;
for (i=0; i < n; i++)
a[i] = b[i] = i * 1.0;
sum = 0.0;

omp_set_num_threads(3); // setam 3 thread-uri

// la final, fiecare thread va aduna la variabila sum, valoarea calculata
#pragma omp parallel for reduction(+:sum) private(tid)
for (i=0; i < n; i++)
{
sum = sum + (a[i] * b[i]);
tid = omp_get_thread_num();
printf("Sum = %f, from thread %d\n",sum, tid);
}

printf(" Sum = %f\n",sum); // suma finala
return 0;
}

Niciun comentariu: