Facebook
From toja, 1 Year ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 230
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<omp.h>
  4. #include<math.h>
  5.  
  6. #define N 100000
  7.  
  8. int main(){
  9.  
  10.   int i;
  11.   double A[N+2];
  12.   double B[N+2];
  13.   double suma;
  14.  
  15.   for(i=0;i<N+2;i++) A[i] = (double)i/N;
  16.   for(i=0;i<N+2;i++) B[i] = 1.0 - (double)i/N;
  17.  
  18.   double t1 = omp_get_wtime();
  19.   for(i=0; i<N; i++){
  20.     A[i] += A[i+2] + sin(B[i]);
  21.   }
  22.   t1 = omp_get_wtime() - t1;
  23.  
  24.   suma = 0.0;
  25.   for(i=0;i<N+2;i++) suma+=A[i];
  26.   printf("suma %lf, czas obliczen %lf\n", suma, t1);
  27.  
  28.  
  29.  
  30.   for(i=0;i<N+2;i++) A[i] = (double)i/N;
  31.   for(i=0;i<N+2;i++) B[i] = 1.0 - (double)i/N;
  32.  
  33.   t1 = omp_get_wtime();
  34.  
  35.   // wersja r├│wnoleg┼éa
  36.         #pragma omp parallel default(none) shared(A, B, i)
  37. {
  38. int i;
  39.         for(i=0; i<N; i++){
  40.                 #pragma omp critical
  41.                 {
  42.                 A[i] += A[i+2] + sin(B[i]);
  43.                 }
  44. }
  45. }
  46.  
  47.   t1 = omp_get_wtime() - t1;
  48.  
  49.   suma = 0.0;
  50.   for(i=0;i<N+2;i++) suma+=A[i];
  51.   printf("suma %lf, czas obliczen rownoleglych %lf\n", suma, t1);
  52.  
  53.  
  54. }