Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include <time.h>
- #include <chrono>
- #include <omp.h>
- double fRand(double fMin, double fMax)
- {
- double f = (double)rand() / RAND_MAX;
- return fMin + f * (fMax - fMin);
- }
- void delMatr(double** matr, int n)
- {
- for (int i = 0; i < n; i++)
- {
- delete[] matr[i];
- }
- delete[] matr;
- }
- int main ()
- {
- srand(time (0));
- int i, j, k, r;
- std::chrono::time_point<std::chrono::system_clock> start, end;
- std :: cin >> r;
- double** a = new double* [r];
- double** b = new double* [r];
- double** c = new double* [r];
- for (i=0; i<r; i++)
- {
- a[i] = new double [r];
- b[i] = new double [r];
- c[i] = new double [r];
- }
- for (i=0;i<r;i++)
- {
- for (j=0;j<r;j++)
- {
- a[i][j] = 0;
- b[i][j] = fRand(-999.999,999.999);
- c[i][j] = fRand(-999.999,999.999);
- }
- }
- start = std::chrono::system_clock::now();
- #pragma omp parallel
- {
- #pragma omp for
- for (i=0;i<r;i++)
- for (k=0;k<r;k++)
- for (j=0;j<r;j++)
- a[i][j]+=b[i][k] * c[k][j];
- }
- end = std::chrono::system_clock::now();
- std::chrono::duration<double> sec = end - start;
- std::cout << "Elapsed time: " << sec.count() << "\n";
- /* for (i=0;i<r;i++)
- {
- for (j=0;j<r;j++)
- {
- a[i][j] = 0;
- }
- }
- start = std::chrono::system_clock::now();
- for (i=0;i<r;i++)
- for (k=0;k<r;k++)
- for (j=0;j<r;++)
- a[i][j]+=b[i][k] * c[k][j];
- end = std::chrono::system_clock::now();
- sec = end - start;
- std::cout << "Elapsed time: " << sec.count() << "\n";
- */
- delMatr(a, r); delMatr(b, r); delMatr(c, r);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement