Advertisement
Guest User

govno_mochi

a guest
Nov 20th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <chrono>
  5. #include <omp.h>
  6.  
  7. double fRand(double fMin, double fMax)
  8. {
  9.     double f = (double)rand() / RAND_MAX;
  10.     return fMin + f * (fMax - fMin);
  11. }
  12.  
  13. void delMatr(double** matr, int n)
  14. {
  15.     for (int i = 0; i < n; i++)
  16.     {
  17.         delete[] matr[i];
  18.     }
  19.     delete[] matr;
  20. }
  21.  
  22. int main ()
  23. {
  24.     srand(time (0));
  25.     int  i, j, k, r;
  26.  
  27.     std::chrono::time_point<std::chrono::system_clock> start, end;
  28.  
  29.     std :: cin >> r;
  30.    
  31.     double** a = new double* [r];
  32.     double** b = new double* [r];
  33.     double** c = new double* [r];
  34.  
  35.     for (i=0; i<r; i++)
  36.       {
  37.         a[i] = new double [r];
  38.         b[i] = new double [r];
  39.         c[i] = new double [r];
  40.       }
  41.    
  42.     for (i=0;i<r;i++)
  43.       {
  44.         for (j=0;j<r;j++)
  45.          {
  46.            a[i][j] = 0;
  47.            b[i][j] = fRand(-999.999,999.999);
  48.            c[i][j] = fRand(-999.999,999.999);
  49.          }
  50.       }
  51.  
  52.  
  53.     start = std::chrono::system_clock::now();
  54.         #pragma omp parallel
  55.     {
  56.        #pragma omp for
  57.        for (i=0;i<r;i++)
  58.         for (k=0;k<r;k++)
  59.           for (j=0;j<r;j++)
  60.             a[i][j]+=b[i][k] * c[k][j];
  61.     }
  62.     end = std::chrono::system_clock::now();
  63.  
  64.         std::chrono::duration<double> sec = end - start;
  65.    
  66.     std::cout << "Elapsed time: " << sec.count() << "\n";
  67.    
  68.    
  69.     /* for (i=0;i<r;i++)
  70.       {
  71.         for (j=0;j<r;j++)
  72.          {
  73.            a[i][j] = 0;
  74.          }
  75.       }
  76.    
  77.     start = std::chrono::system_clock::now();
  78.     for (i=0;i<r;i++)
  79.       for (k=0;k<r;k++)
  80.         for (j=0;j<r;++)
  81.           a[i][j]+=b[i][k] * c[k][j];
  82.     end = std::chrono::system_clock::now();
  83.  
  84.         sec = end - start;
  85.    
  86.     std::cout << "Elapsed time: " << sec.count() << "\n";
  87.     */
  88.     delMatr(a, r); delMatr(b, r); delMatr(c, r);
  89.     return 0;
  90. }
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement