sarkanydavidhu

[OpenMP] Linux gyors

Oct 22nd, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<omp.h>
  4.  
  5. struct drand48_data puffer;
  6. #pragma omp threadprivate( puffer )
  7.  
  8. int main(int argc, char** argv)
  9. {
  10.   int N;  //lovesek szama
  11.   int kn;  // korbe talalt lovesek szama
  12.   int i;
  13.   double x, y;  // koord.
  14.   double start, end;
  15.   int seed = 0;
  16.  
  17.   switch (argc)
  18.   {
  19.    case 3:
  20.     seed = atoi(argv[2]);
  21.    case 2:
  22.     N = atoi(argv[1]);
  23.     break;
  24.    default:
  25.     printf("Hasznalat: %s N\n",argv[0]);
  26.     return 0;
  27.   }
  28.   kn=0;
  29.  
  30.   start = omp_get_wtime();   // IDOMERES INDUL
  31.  
  32.   #pragma omp parallel private(i,x,y)
  33.   {
  34.   int mykn=0;
  35.   int thed = omp_get_thread_num();
  36.   srand48_r(seed+thed,&puffer);
  37.   #pragma omp for
  38.   for ( i = 0; i< N; i++)
  39.     {
  40.     drand48_r(&puffer, &x);
  41.     drand48_r(&puffer, &y);
  42.     if ( (x*x + y*y) <1 )
  43.       mykn++;
  44.     }
  45.      #pragma omp critical
  46.      kn +=mykn;
  47.     }
  48.    end = omp_get_wtime();    // IDOMERES VEGE
  49.    
  50.    printf("PI erteke = %f \n", 4.*(double)kn / N );
  51.    
  52.   printf("futasi ido: %2f\n", end-start);
  53.    return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment