Facebook
From Cute Hamster, 1 Year ago, written in C++.
Embed
Download Paste or View Raw
Hits: 541
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <omp.h>
  4. #include <windows.h>
  5.  
  6. const int row = 10000;
  7. const int col = 10000;
  8. long double tab[row][col];
  9. long double tabPP[100];
  10.  
  11.  
  12. void loadTable()
  13. {
  14.         for (int i = 0; i < row; i++)
  15.         {
  16.                 for (int j = 0; j < col;j++)
  17.                 {
  18.                         tab[i][j] = 1;
  19.  
  20.                 }
  21.         }
  22.  
  23. }
  24.  
  25.  
  26. int main(int argc, char* argv[])
  27. {
  28.         clock_t start, stop;
  29.         loadTable();
  30.         for (int z = 0; z < 40;z++)
  31.         {
  32.                 long double sum = 0;
  33.  
  34.                 start = clock();
  35.                 omp_set_num_threads(2);
  36.  
  37. #pragma omp parallel
  38.                 {
  39.                         int id = omp_get_thread_num();
  40.  
  41.                         tabPP[id+z] = 0;
  42. #pragma omp for
  43.                         for (int i = 0; i < row; i++)
  44.                         {
  45.                                 for (int j = 0; j < col;j++)
  46.                                 {
  47.                                         tabPP[id+z] += tab[i][j];
  48.  
  49.                                 }
  50.                         }
  51. #pragma omp atomic
  52.                         sum += tabPP[id+z];
  53.                 }
  54.  
  55.                 stop = clock();
  56.                 //printf("Wynik %f\n", sum);
  57.  
  58.                 printf(" Czas przetwarzania wynosi %d - %f sekund\n",z, ((double)(stop - start) / 1000.0));
  59.         }
  60.         return 0;
  61.  
  62. }
  63.  
  64.