#include #include #include #include #include #include #define MCW MPI_COMM_WORLD using namespace std; //Problem size int N; //global variables double **A, **B, **AB, **AB_serial; void print_matrix(double **mat); 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); MPI_Finalize(); } void read_in_matrices() { ifstream f("Matrix.txt"); f >> N; // Allocate memory A = new double *[N]; for (int i = 0; i < N; ++i) A[i] = new double[N]; B = new double *[N]; for (int i = 0; i < N; ++i) B[i] = new double[N]; AB = new double *[N]; for (int i = 0; i < N; ++i) AB[i] = new double[N]; AB_serial = new double *[N]; for (int i = 0; i < N; ++i) AB_serial[i] = new double[N]; // Fill Matricies for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) f >> A[i][j]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) f >> B[i][j]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) AB[i][j] = 0; } //Function to print matrix void print_matrix(double **mat) { for (int i = 0; i < N; i++){ for (int j = 0; j