Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <math.h>
  4. #include <omp.h>
  5.  
  6. using namespace std;
  7.  
  8. int main(int argc, char *argv[]) {
  9.    
  10.     if(argc!= 3){
  11.         cout << "Nieprawidlowa ilosc parametrow wejsciowych!";
  12.         return 1;
  13.     }
  14.  
  15.     int n = atoi(argv[1]);
  16.     int size = atoi(argv[2]);
  17.      
  18.     int **A,**B,**C,suma;
  19.      
  20.     A = new int * [size];
  21.     B = new int * [size];
  22.     C = new int * [size];
  23.    
  24.     for(int i = 0; i < size; i++){
  25.         A[i] = new int [size];
  26.         B[i] = new int [size];
  27.         C[i] = new int [size];
  28.     }
  29.      
  30.     for(int i = 0; i < size; i++){
  31.         for(int j = 0; j < size; j++){
  32.             A[i][j] = (int)(sin(i) * i * j) % 10;
  33.             B[i][j] = (int)(cos(j) * (i + j)) % 10;
  34.         }
  35.     }
  36.    
  37.     double ctime1 = omp_get_wtime();
  38.     #pragma omp parallel for default(shared) num_threads(n)
  39.     for(int i = 0; i < size; i++){
  40.         for(int j = 0; j < size; j++){
  41.             suma = 0;
  42.             for(int k = 0; k < size; k++){
  43.                 suma += A[i][k] * B[k][j];
  44.                 C[i][j] = suma;
  45.             }
  46.         }
  47.     }
  48.     double ctime2 = omp_get_wtime();
  49.    
  50.     for(int i = 0; i < size; i++){
  51.         delete [] A[i];
  52.         delete [] B[i];
  53.         delete [] C[i];
  54.     }
  55.    
  56.     delete [] A;
  57.     delete [] B;
  58.     delete [] C;
  59.    
  60.     cout << "Czas: " << (ctime2-ctime1) <<  "ms";
  61.  
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement