Facebook
From glb, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 205
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <math.h>
  5. #include <ctime>
  6. #include <omp.h>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.         time_t pocz, czas;      //do liczenia czasu wykonywania
  13.         int numerw = 0;         //numer watku
  14.         int lproc, irob;
  15.  
  16.         int zakres = 50000;             //zakres losowanie tablicy
  17.         int A[200][200];
  18.         int B[200][200];
  19.         int C[200][200];
  20.         int D[200][200];
  21.         int AB[200][200];
  22.         int CD[200][200];
  23.  
  24.         int maxA = 0;
  25.         int minB = zakres;
  26.  
  27.         void czekaj(int milis);
  28.  
  29.         /*
  30.         //watki
  31.         lproc = omp_get_num_procs();
  32.         cout << "liczba procesorow: " << lproc << endl;
  33.         irob = omp_get_max_threads();
  34.         cout << "maksymalna liczba watkow: " << irob << endl << endl;
  35.         */
  36.  
  37.         //tablica A i B
  38.         pocz = clock();
  39.         for (int i = 0; i < 200; ++i)
  40.         {
  41.                 //czekaj(5);
  42.                 for (int j = 0; j < 200; ++j)
  43.                 {
  44.                         A[i][j] = (rand() % zakres) + 1;
  45.                         B[i][j] = rand() % zakres;
  46.                 }
  47.         }
  48.         cout << "Czas trwania operacji 1: " << (clock() - pocz) << endl;
  49.  
  50.         //tablica A i B rownolegle
  51. /*      pocz = clock();
  52.         for (int i = 0; i < 200; ++i)
  53.         {
  54.                 //czekaj(5);
  55.                 for (int j = 0; j < 200; j += 8)
  56.                 {
  57. #pragma  (omp parallel) num_threads(2) private(numerw)
  58.                         {
  59.                                 numerw = omp_get_thread_num();
  60.                                 if (numerw == 0)        A[i][j] = (rand() % zakres) + 1;
  61.                                 if (numerw == 1)        B[i][j] = rand() % zakres;
  62.                         }
  63.                 }
  64.         }
  65.         cout << "Czas trwania operacji 1 rownolegle: " << (clock() - pocz) << endl << endl;
  66.         */
  67.  
  68.         //tablica C i D
  69.         pocz = clock();
  70.         for (int i = 0; i < 200; ++i)
  71.         {
  72.                 //czekaj(3);
  73.                 for (int j = 0; j < 200; ++j)
  74.                 {
  75.                         C[i][j] = (1 / A[i][j]);
  76.                         D[i][j] = sqrt(B[i][j]);
  77.                 }
  78.         }
  79.         cout << "Czas trwania operacji 2: " << (clock() - pocz) << endl;
  80.  
  81. /*      //tablica C i D rownolegle
  82.         pocz = clock();
  83.         for (int i = 0; i < 200; ++i)
  84.         {
  85.                 //czekaj(3);
  86.                 for (int j = 0; j < 200; ++j)
  87.                 {
  88. #pragma  (omp parallel) num_threads(2) private(numerw)
  89.                         {
  90.                                 numerw = omp_get_thread_num();
  91.                                 if (numerw == 0)        C[i][j] = (1 / A[i][j]);
  92.                                 if (numerw == 1)        D[i][j] = sqrt(B[i][j]);
  93.                         }
  94.                 }
  95.         }
  96.         cout << "Czas trwania operacji 2 rownolegle: " << (clock() - pocz) << endl << endl;
  97.         */
  98.  
  99.         //tablica AB i CD
  100.         pocz = clock();
  101.         for (int i = 0; i < 200; ++i)
  102.         {
  103.                 //czekaj(3);
  104.                 for (int j = 0; j < 200; ++j)
  105.                 {
  106.                         AB[i][j] = A[i][j] + B[i][j];
  107.                         CD[i][j] = C[i][j] * D[i][j];
  108.                 }
  109.         }
  110.         cout << "Czas trwania operacji 3: " << (clock() - pocz) << endl;
  111.  
  112. /*      //tablica AB i CD rownolegle
  113.         pocz = clock();
  114.         for (int i = 0; i < 200; ++i)
  115.         {
  116.                 //czekaj(3);
  117.                 for (int j = 0; j < 200; ++j)
  118.                 {
  119. #pragma  (omp parallel) num_threads(2) private(numerw)
  120.                         {
  121.                                 numerw = omp_get_thread_num();
  122.                                 if (numerw == 0)        AB[i][j] = A[i][j] + B[i][j];
  123.                                 if (numerw == 1)        CD[i][j] = C[i][j] * D[i][j];
  124.                         }
  125.                 }
  126.         }
  127.         cout << "Czas trwania operacji 3 rownolegle: " << (clock() - pocz) << endl << endl;
  128.         */
  129.  
  130.         //maxA i minB
  131.         pocz = clock();
  132.         for (int i = 0; i < 200; ++i)
  133.         {
  134.                 //czekaj(3);
  135.                 for (int j = 0; j < 200; ++j)
  136.                 {
  137.                         if (A[i][j] > maxA)
  138.                                 maxA = A[i][j];
  139.                         if (B[i][j] < minB)
  140.                                 minB = B[i][j];
  141.                 }
  142.         }
  143.         cout << "Czas trwania operacji 4: " << (clock() - pocz) << endl << endl;
  144.  
  145.  
  146.         cout << "Maksymalna liczba z tablicy A: " << maxA << endl;
  147.         cout << "Minimalna liczba z tablicy B: " << minB << endl;
  148.         _getch();
  149.         return 0;
  150. }
  151.  
  152. void czekaj(int milis) {
  153.         time_t koniec;
  154.         koniec = clock() + milis;
  155.         while (koniec > clock()) {};
  156. }