pborawski

omp sekcja reducion

Nov 26th, 2012
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <omp.h>
  5.  
  6. #define N 1000
  7.  
  8. int main(int argc, char **argv)
  9. {
  10.     double start, stop;
  11.  
  12.     int wektor[N];
  13.     long int i,suma_lokalna, suma = 0;
  14.     srand(time(NULL));
  15.  
  16.     for(i = 0; i < N; i++)
  17.     {
  18.         wektor[i] = rand()%15 + 3;
  19.     }
  20.  
  21.  
  22.     start = omp_get_wtime();
  23.     // suma nie mozna byc w spoldzielonych w shared bo jest redukowana przez dyrektywe reduction i kazdy ma odzielna kopie juz na start i nie trzeba dodawac do zmiennych wspołdzielonych
  24.     // i na koniec sumowane jest wszystko
  25.  
  26.     #pragma omp parallel default(none) private(i) shared(wektor) reduction(+:suma)
  27.     {
  28.  
  29.         #pragma omp single
  30.         printf("Program wykonuje sie z %d watkami\n",omp_get_num_threads());
  31.             #pragma omp for
  32.             for(i = 0; i < N; i++)
  33.             {
  34.                 suma += wektor[i];
  35.             }
  36.  
  37.     }
  38.  
  39.  
  40.     stop = omp_get_wtime();
  41.  
  42.     printf("Czas obliczen funkcja omp_get_wtime(): %lfs.\n", stop-start);
  43.  
  44.  
  45.  
  46.  
  47.  
  48.     printf(" Suma: %d\n", suma);
  49.  
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment