#include "pch.h" #include #include #include #include #include using namespace std; int main() { time_t pocz, czas; //do liczenia czasu wykonywania int numerw = 0; //numer watku int lproc, irob; int zakres = 50000; //zakres losowanie tablicy int A[200][200]; int B[200][200]; int C[200][200]; int D[200][200]; int AB[200][200]; int CD[200][200]; int maxA = 0; int minB = zakres; void czekaj(int milis); /* //watki lproc = omp_get_num_procs(); cout << "liczba procesorow: " << lproc << endl; irob = omp_get_max_threads(); cout << "maksymalna liczba watkow: " << irob << endl << endl; */ //tablica A i B pocz = clock(); for (int i = 0; i < 200; ++i) { //czekaj(5); for (int j = 0; j < 200; ++j) { A[i][j] = (rand() % zakres) + 1; B[i][j] = rand() % zakres; } } cout << "Czas trwania operacji 1: " << (clock() - pocz) << endl; //tablica A i B rownolegle /* pocz = clock(); for (int i = 0; i < 200; ++i) { //czekaj(5); for (int j = 0; j < 200; j += 8) { #pragma (omp parallel) num_threads(2) private(numerw) { numerw = omp_get_thread_num(); if (numerw == 0) A[i][j] = (rand() % zakres) + 1; if (numerw == 1) B[i][j] = rand() % zakres; } } } cout << "Czas trwania operacji 1 rownolegle: " << (clock() - pocz) << endl << endl; */ //tablica C i D pocz = clock(); for (int i = 0; i < 200; ++i) { //czekaj(3); for (int j = 0; j < 200; ++j) { C[i][j] = (1 / A[i][j]); D[i][j] = sqrt(B[i][j]); } } cout << "Czas trwania operacji 2: " << (clock() - pocz) << endl; /* //tablica C i D rownolegle pocz = clock(); for (int i = 0; i < 200; ++i) { //czekaj(3); for (int j = 0; j < 200; ++j) { #pragma (omp parallel) num_threads(2) private(numerw) { numerw = omp_get_thread_num(); if (numerw == 0) C[i][j] = (1 / A[i][j]); if (numerw == 1) D[i][j] = sqrt(B[i][j]); } } } cout << "Czas trwania operacji 2 rownolegle: " << (clock() - pocz) << endl << endl; */ //tablica AB i CD pocz = clock(); for (int i = 0; i < 200; ++i) { //czekaj(3); for (int j = 0; j < 200; ++j) { AB[i][j] = A[i][j] + B[i][j]; CD[i][j] = C[i][j] * D[i][j]; } } cout << "Czas trwania operacji 3: " << (clock() - pocz) << endl; /* //tablica AB i CD rownolegle pocz = clock(); for (int i = 0; i < 200; ++i) { //czekaj(3); for (int j = 0; j < 200; ++j) { #pragma (omp parallel) num_threads(2) private(numerw) { numerw = omp_get_thread_num(); if (numerw == 0) AB[i][j] = A[i][j] + B[i][j]; if (numerw == 1) CD[i][j] = C[i][j] * D[i][j]; } } } cout << "Czas trwania operacji 3 rownolegle: " << (clock() - pocz) << endl << endl; */ //maxA i minB pocz = clock(); for (int i = 0; i < 200; ++i) { //czekaj(3); for (int j = 0; j < 200; ++j) { if (A[i][j] > maxA) maxA = A[i][j]; if (B[i][j] < minB) minB = B[i][j]; } } cout << "Czas trwania operacji 4: " << (clock() - pocz) << endl << endl; cout << "Maksymalna liczba z tablicy A: " << maxA << endl; cout << "Minimalna liczba z tablicy B: " << minB << endl; _getch(); return 0; } void czekaj(int milis) { time_t koniec; koniec = clock() + milis; while (koniec > clock()) {}; }