#include "pch.h" #include #include #include #include #include #include using namespace std; #define MATRIX_SIZE 200 #define MAX_RANDOM 100 void czekaj(int milis) { time_t koniec; koniec = clock() + milis; while (koniec > clock()) {}; } int main() { time_t pocz, czas; int numerw; srand((unsigned)time(nullptr)); pocz = clock(); float matrixA[MATRIX_SIZE][MATRIX_SIZE]; float matrixB[MATRIX_SIZE][MATRIX_SIZE]; float matrixC[MATRIX_SIZE][MATRIX_SIZE]; float matrixD[MATRIX_SIZE][MATRIX_SIZE]; float matrixAB[MATRIX_SIZE][MATRIX_SIZE]; float matrixCD[MATRIX_SIZE][MATRIX_SIZE]; #pragma omp parallel for for (int i = 0; i < MATRIX_SIZE; i++) { czekaj(2); for (int j = 0; j < MATRIX_SIZE; j++) { #pragma omp parallel num_threads(2) private(numerw) shared(matrixA, matrixB) { numerw = omp_get_thread_num(); if (numerw == 0) matrixA[i][j] = (rand() % MAX_RANDOM)*0.1234 + 1.111; if (numerw == 1) matrixB[i][j] = (rand() % MAX_RANDOM)*0.345 + 1.333; } } }; cout << "Czas trwania operacji 1: " << (clock() - pocz) << endl << endl; int minB = matrixB[0][0]; int maxA = matrixA[0][0]; pocz = clock(); #pragma omp parallel for for (int i = 0; i < MATRIX_SIZE; i++) { czekaj(4); for (int j = 0; j < MATRIX_SIZE; j++) { #pragma omp parallel num_threads(2) private(numerw) {numerw = omp_get_thread_num(); if (numerw == 2)matrixC[i][j] = 1 / matrixA[i][j]; if (numerw == 3)matrixD[i][j] = sqrt(matrixB[i][j]); } } }; cout << "Czas trwania operacji 2: " << (clock() - pocz) << endl << endl; pocz = clock(); for (int i = 0; i < MATRIX_SIZE; i++) { czekaj(4); for (int j = 0; j < MATRIX_SIZE; j++) { matrixAB[i][j] = matrixA[i][j] + matrixB[i][j]; } } pocz = clock(); for (int i = 0; i < MATRIX_SIZE; i++) { czekaj(4); for (int j = 0; j < MATRIX_SIZE; j++) { matrixCD[i][j] = matrixC[i][j] * matrixD[i][j]; } } cout << "Czas trwania operacji 4: " << (clock() - pocz) << endl << endl; pocz = clock(); for (int i = 0; i < MATRIX_SIZE; i++) { czekaj(4); for (int j = 0; j < MATRIX_SIZE; j++) { if (matrixA[i][j] > maxA) maxA = matrixA[i][j]; } } cout << "Czas trwania operacji 5: " << (clock() - pocz) << endl << endl; pocz = clock(); for (int i = 0; i < MATRIX_SIZE; i++) { czekaj(4); for (int j = 0; j < MATRIX_SIZE; j++) { if (matrixB[i][j] < minB) minB = matrixB[i][j]; } } cout << "Czas trwania operacji 6: " << (clock() - pocz) << endl << endl; return 0; }