#include #include int main() { int a1 = 2000; int a2 = 2000; int b1 = 2000; int b2 = 2000; double start, stop; start = omp_get_wtime(); int **A = new int *[a1]; int **B = new int *[a2]; int **C = new int *[a1]; int **BT = new int *[a2]; for (int i = 0;i < a1;i++) A[i] = new int[b1]; for (int i = 0;i < a2;i++) B[i] = new int[b2]; for (int i = 0;i < a1;i++) C[i] = new int[b2]; for (int i = 0;i < a2;i++) BT[i] = new int[b1]; for (int i = 0;i < a1;i++) for (int j = 0;j < b1;j++) A[i][j] = 1; for (int i = 0;i < a2;i++) for (int j = 0;j < b2;j++) B[i][j] = 1; for (int i = 0;i < a2;i++) for (int j = 0;j < b1;j++) BT[i][j] = B[j][i]; for (int i = 0;i < a1;i++) for (int j = 0;j < b2;j++) C[i][j] = 0; //#pragma omp parallel for num_threads(1) for(int k = 0;k < a1;k++) for (int i = 0;i < a2;i++) for (int j = 0;j < b1;j++) C[k][i] += A[k][j] * BT[i][j]; stop = omp_get_wtime(); std::cout << "A:" << a1 << "x" << b1 << " B:" << a2 << "x" << b2 <