fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <cstdlib>
  4. #include <ctime>
  5. #include <omp.h>
  6.  
  7. #define N 500 // Define matrix size
  8.  
  9. using namespace std;
  10.  
  11. // Function to generate a random matrix
  12. void generateMatrix(vector<vector<int>>& matrix) {
  13. for (int i = 0; i < N; i++) {
  14. for (int j = 0; j < N; j++) {
  15. matrix[i][j] = rand() % 10; // Random values from 0 to 9
  16. }
  17. }
  18. }
  19.  
  20. // Function to multiply matrices using OpenMP
  21. void multiplyMatrices(const vector<vector<int>>& A, const vector<vector<int>>& B, vector<vector<int>>& C) {
  22. #pragma omp parallel for collapse(2)
  23. for (int i = 0; i < N; i++) {
  24. for (int j = 0; j < N; j++) {
  25. C[i][j] = 0;
  26. for (int k = 0; k < N; k++) {
  27. C[i][j] += A[i][k] * B[k][j];
  28. }
  29. }
  30. }
  31. }
  32.  
  33. int main() {
  34. srand(time(0));
  35.  
  36. vector<vector<int>> A(N, vector<int>(N));
  37. vector<vector<int>> B(N, vector<int>(N));
  38. vector<vector<int>> C(N, vector<int>(N, 0));
  39.  
  40. generateMatrix(A);
  41. generateMatrix(B);
  42.  
  43. clock_t start = clock(); // Use clock() instead of omp_get_wtime()
  44.  
  45. multiplyMatrices(A, B, C);
  46.  
  47. clock_t end = clock(); // End time
  48.  
  49. double time_taken = double(end - start) / CLOCKS_PER_SEC;
  50. cout << "Matrix multiplication completed in " << time_taken << " seconds." << endl;
  51.  
  52. return 0;
  53. }
  54.  
Success #stdin #stdout 0.28s 6600KB
stdin
Standard input is empty
stdout
Matrix multiplication completed in 0.25722 seconds.