Facebook
From Mammoth Marten, 1 Year ago, written in C++.
Embed
Download Paste or View Raw
Hits: 217
  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.         long double sum = 0;
  31.        
  32.  
  33.                 start = clock();
  34.                 omp_set_num_threads(2);
  35.  
  36. #pragma omp parallel
  37.                 {
  38.                         int id = omp_get_thread_num();
  39.  
  40.                         tabPP[id] = 0;
  41.  
  42. #pragma omp for
  43.                         for (int i = 0; i < row; i++)
  44.                         {
  45.  
  46.                                 long double sumTmp = 0;
  47.                                 for (int j = 0; j < col;j++)
  48.                                 {
  49.                                         sumTmp += tab[i][j];
  50.  
  51.                                 }
  52.                                 tabPP[id] += sumTmp;
  53.                         }
  54. #pragma omp atomic
  55.                         sum += tabPP[id];
  56.                 }
  57.  
  58.                 stop = clock();
  59.                 printf("Wynik %f\n", sum);
  60.  
  61.                 printf(" Czas przetwarzania wynosi  %f sekund\n", ((double)(stop - start) / 1000.0));
  62.  
  63.         return 0;
  64.  
  65. }
  66.  
  67.