diff --git a/HW10/CMakeLists.txt b/HW10/CMakeLists.txt index fdcf455..dcd18bf 100644 --- a/HW10/CMakeLists.txt +++ b/HW10/CMakeLists.txt @@ -13,7 +13,7 @@ set(HEADER_FILES set(SOURCE_FILES MakePermutationMatrix.cpp ReadFromFile.cpp - CostMatrixGenerator.cpp CostMatrixGenerator.h) + CostMatrixGenerator.cpp CostMatrixGenerator.h ParseMatrixForMPI.h) set(CMAKE_CXX_STANDARD 17) add_executable(HW10 ${HEADER_FILES} ${SOURCE_FILES} main.cpp) diff --git a/HW10/ParseMatrixForMPI.h b/HW10/ParseMatrixForMPI.h new file mode 100644 index 0000000..1707337 --- /dev/null +++ b/HW10/ParseMatrixForMPI.h @@ -0,0 +1,33 @@ +// +// Created by Brady Bodily on 3/29/20. +// +#include +#ifndef HW10_PARSEMATRIXFORMPI_H +#define HW10_PARSEMATRIXFORMPI_H +namespace matrixTools +{ + template + std::vector> UnflattenMatrix(std::vector origianlVector, int rowSize, int columnSize) + { + std::vector> matrix(columnSize, std::vector(rowSize, 0)); + for (int i = 0; i < columnSize; i++) { + for (int j = 0; j < rowSize; j++) { + matrix[i][j] = origianlVector[i + j]; + } + } + return matrix; + } + + template + std::vector FlattenMatrix(std::vector> matrix) + { + std::vector rVector(matrix.size() * matrix[0].size(), 0); + for (int i = 0; i < matrix.size(); i++) { + for (int j = 0; j < matrix[0].size(); j++) { + rVector[i + j] = matrix[i][j]; + } + } + return rVector; + } +} +#endif //HW10_PARSEMATRIXFORMPI_H diff --git a/HW10/cmake-build-debug/CMakeFiles/CMakeRuleHashes.txt b/HW10/cmake-build-debug/CMakeFiles/CMakeRuleHashes.txt index e3b2b4d..820ec7f 100644 --- a/HW10/cmake-build-debug/CMakeFiles/CMakeRuleHashes.txt +++ b/HW10/cmake-build-debug/CMakeFiles/CMakeRuleHashes.txt @@ -1,2 +1,2 @@ # Hashes of file build rules. -c98ba7a6e4f716b81e2785f389cd31ac CMakeFiles/ClangFormat +ec43966e55ea917fde3b84076c03b167 CMakeFiles/ClangFormat diff --git a/HW10/cmake-build-debug/CMakeFiles/ClangFormat.dir/build.make b/HW10/cmake-build-debug/CMakeFiles/ClangFormat.dir/build.make index 01fa093..219b203 100644 --- a/HW10/cmake-build-debug/CMakeFiles/ClangFormat.dir/build.make +++ b/HW10/cmake-build-debug/CMakeFiles/ClangFormat.dir/build.make @@ -54,7 +54,7 @@ CMAKE_BINARY_DIR = /Users/bradybodily/Repositories/CS5500_Parallel_Programming/H include CMakeFiles/ClangFormat.dir/progress.make CMakeFiles/ClangFormat: - /usr/local/bin/clang-format -i -style=file /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/MakePermutationMatrix.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ReadFromFile.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/City.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/MakePermutationMatrix.cpp /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ReadFromFile.cpp /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.cpp /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/main.cpp + /usr/local/bin/clang-format -i -style=file /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/MakePermutationMatrix.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ReadFromFile.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/City.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/MakePermutationMatrix.cpp /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ReadFromFile.cpp /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.cpp /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ParseMatrixForMPI.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/main.cpp ClangFormat: CMakeFiles/ClangFormat ClangFormat: CMakeFiles/ClangFormat.dir/build.make diff --git a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache index de6f05b..0095331 100644 --- a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache +++ b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache @@ -8,6 +8,10 @@ /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/City.h +/Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.cpp +CostMatrixGenerator.h +/Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.h + /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.h City.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/City.h @@ -16,6 +20,10 @@ cmath vector - +/Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ParseMatrixForMPI.h +vector +- + /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ReadFromFile.h City.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/City.h @@ -35,6 +43,8 @@ CostMatrixGenerator.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.h ReadFromFile.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ReadFromFile.h +ParseMatrixForMPI.h +/Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ParseMatrixForMPI.h mpi.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/mpi.h iostream diff --git a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CostMatrixGenerator.cpp.o b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CostMatrixGenerator.cpp.o index 7d11ac1..7b203bd 100644 Binary files a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CostMatrixGenerator.cpp.o and b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/CostMatrixGenerator.cpp.o differ diff --git a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/ReadFromFile.cpp.o b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/ReadFromFile.cpp.o index 520020b..73c2ac2 100644 Binary files a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/ReadFromFile.cpp.o and b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/ReadFromFile.cpp.o differ diff --git a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal index e395d18..c62d27e 100644 --- a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal +++ b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal @@ -16,6 +16,7 @@ CMakeFiles/HW10.dir/ReadFromFile.cpp.o CMakeFiles/HW10.dir/main.cpp.o /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/City.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/CostMatrixGenerator.h + /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ParseMatrixForMPI.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/ReadFromFile.h /Users/bradybodily/Repositories/CS5500_Parallel_Programming/HW10/main.cpp /usr/local/Cellar/open-mpi/4.0.2/include/mpi.h diff --git a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.make b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.make index c0fbbd5..e06ac96 100644 --- a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.make +++ b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/depend.make @@ -15,6 +15,7 @@ CMakeFiles/HW10.dir/ReadFromFile.cpp.o: ../ReadFromFile.h CMakeFiles/HW10.dir/main.cpp.o: ../City.h CMakeFiles/HW10.dir/main.cpp.o: ../CostMatrixGenerator.h +CMakeFiles/HW10.dir/main.cpp.o: ../ParseMatrixForMPI.h CMakeFiles/HW10.dir/main.cpp.o: ../ReadFromFile.h CMakeFiles/HW10.dir/main.cpp.o: ../main.cpp CMakeFiles/HW10.dir/main.cpp.o: /usr/local/Cellar/open-mpi/4.0.2/include/mpi.h diff --git a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o index c3d1f24..6f623b3 100644 Binary files a/HW10/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o and b/HW10/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o differ diff --git a/HW10/cmake-build-debug/HW10 b/HW10/cmake-build-debug/HW10 index d2fa3a0..7792938 100755 Binary files a/HW10/cmake-build-debug/HW10 and b/HW10/cmake-build-debug/HW10 differ diff --git a/HW10/cmake-build-debug/HW10.cbp b/HW10/cmake-build-debug/HW10.cbp index b08830a..5e8160c 100644 --- a/HW10/cmake-build-debug/HW10.cbp +++ b/HW10/cmake-build-debug/HW10.cbp @@ -109,6 +109,9 @@ + + diff --git a/HW10/main.cpp b/HW10/main.cpp index d3f174d..1020582 100644 --- a/HW10/main.cpp +++ b/HW10/main.cpp @@ -1,7 +1,8 @@ -#import "CostMatrixGenerator.h" +#include "CostMatrixGenerator.h" //#import "MakePermutationMatrix.h" -#import "ReadFromFile.h" -#import "mpi.h" +#include "ReadFromFile.h" +#include "ParseMatrixForMPI.h" +#include "mpi.h" #include #define MCW MPI_COMM_WORLD @@ -14,6 +15,7 @@ int main(int argc, char* argv[]) MPI_Comm_size(MCW, &size); std::vector> matrix; std::vector cities; + std::vector flatMatrix; if (rank == 0) { std::cout << "Reading in file" << std::endl; cities = ReadFromFile::ReadFile("../input"); @@ -26,6 +28,7 @@ int main(int argc, char* argv[]) } std::cout << std::endl; } + flatMatrix = matrixTools::FlattenMatrix(matrix); } MPI_Bcast(&citiesSize, 1, MPI_INT, 0, MPI_COMM_WORLD); if(rank){ @@ -35,10 +38,9 @@ int main(int argc, char* argv[]) matrix[i].resize(citiesSize); } } - for(int i = 0; i < citiesSize; i++) { - MPI_Bcast(&(matrix[0][i]), citiesSize, MPI_DOUBLE, 0, MPI_COMM_WORLD); - } + MPI_Bcast(&flatMatrix, flatMatrix.size(), MPI_DOUBLE, 0, MPI_COMM_WORLD); if(rank){ + matrix = matrixTools::UnflattenMatrix(flatMatrix, citiesSize, citiesSize); std::cout << "Process "<< rank << " has value " << citiesSize << " as size of city" << std::endl; for(int i = 0; i < citiesSize; i++) { for (int j = 0; j < citiesSize; j++) {