#include #include #include #include #include #include #define MCW MPI_COMM_WORLD using namespace std; struct Matrix{ int M, N; double** matrix; }; //Problem size const int N = 10; vector matricies; //global variables double A[N][N]; double B[N][N]; double AB[N][N]; double AB_serial[N][N]; void fill_matrices(); void print_matrix(double mat[][N]); void serial_version(); void compute_interval(int start, int interval); void multiplyMatrix(int rank, int size); void read_in_matrices(); int main(int argc, char** argv){ int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MCW, &rank); MPI_Comm_size(MCW, &size); multiplyMatrix(rank, size); if(!rank) read_in_matrices(); MPI_Finalize(); } void read_in_matrices(){ for(int i = 0; i < 2; i++) { Matrix* matrix = new Matrix; ifstream f("Matrix.txt"); f >> matrix->M >> matrix->N; // Allocate memory matrix->matrix = new double *[matrix->M]; for (int i = 0; i < matrix->M; ++i) matrix->matrix[i] = new double[N]; for (int i = 0; i < matrix->M; i++) for (int j = 0; j < matrix->N; j++) f >> matrix->matrix[i][j]; matricies.push_back(*matrix); } } //Function to fill matrices at random void fill_matrices(){ srand(time(NULL)); for(int i = 0; i