diff --git a/FinalProject/Matrix.txt b/FinalProject/Matrix.txt index 168ab65..653c6c8 100644 --- a/FinalProject/Matrix.txt +++ b/FinalProject/Matrix.txt @@ -1,8 +1,8 @@ -3 3 +3 1 2 3 4 5 6 7 8 9 -3 3 + 9 8 7 6 5 4 3 2 1 diff --git a/FinalProject/a.out b/FinalProject/a.out index b089fe9..0babfc2 100755 Binary files a/FinalProject/a.out and b/FinalProject/a.out differ diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache new file mode 100644 index 0000000..0418a8c --- /dev/null +++ b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache @@ -0,0 +1,36 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/Users/bradybodily/Repositories/CS5500_Parallel_Programming/FinalProject/main.cpp +fstream +- +iostream +- +mpi.h +- +stdlib.h +- +time.h +- +vector +- + +/usr/local/Cellar/open-mpi/4.0.2/include/mpi.h +stddef.h +- +mpi_portable_platform.h +/usr/local/Cellar/open-mpi/4.0.2/include/mpi_portable_platform.h +openmpi/ompi/mpi/cxx/mpicxx.h +/usr/local/Cellar/open-mpi/4.0.2/include/openmpi/ompi/mpi/cxx/mpicxx.h + +/usr/local/Cellar/open-mpi/4.0.2/include/mpi_portable_platform.h +omp.h +/usr/local/Cellar/open-mpi/4.0.2/include/omp.h +omp.h +/usr/local/Cellar/open-mpi/4.0.2/include/omp.h + diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal new file mode 100644 index 0000000..240381d --- /dev/null +++ b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal @@ -0,0 +1,7 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.15 + +CMakeFiles/HW10.dir/main.cpp.o + /Users/bradybodily/Repositories/CS5500_Parallel_Programming/FinalProject/main.cpp + /usr/local/Cellar/open-mpi/4.0.2/include/mpi.h + /usr/local/Cellar/open-mpi/4.0.2/include/mpi_portable_platform.h diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o new file mode 100644 index 0000000..35f9ddd Binary files /dev/null and b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o differ diff --git a/FinalProject/cmake-build-debug/HW10 b/FinalProject/cmake-build-debug/HW10 new file mode 100755 index 0000000..efcb79d Binary files /dev/null and b/FinalProject/cmake-build-debug/HW10 differ diff --git a/FinalProject/main.cpp b/FinalProject/main.cpp index 4ceaa91..b544b99 100644 --- a/FinalProject/main.cpp +++ b/FinalProject/main.cpp @@ -9,22 +9,12 @@ using namespace std; -struct Matrix{ - int M, N; - double** matrix; -}; - //Problem size -const int N = 10; -vector matricies; +int N; //global variables -double A[N][N]; -double B[N][N]; -double AB[N][N]; -double AB_serial[N][N]; +double **A, **B, **AB, **AB_serial; -void fill_matrices(); -void print_matrix(double mat[][N]); +void print_matrix(double **mat); void serial_version(); void compute_interval(int start, int interval); void multiplyMatrix(int rank, int size); @@ -38,41 +28,40 @@ int main(int argc, char** 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() { + 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]; -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); - } + // 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 fill matrices at random -void fill_matrices(){ - srand(time(NULL)); - for(int i = 0; i