From 906285025a009b7898a4a4596483d0f359dd4369 Mon Sep 17 00:00:00 2001 From: bbod Date: Mon, 30 Mar 2020 12:30:54 -0600 Subject: [PATCH] Auto Commit --- HW10/CMakeLists.txt | 2 +- HW10/SerializeCities.h | 43 +++++++++++++++++++ .../CMakeFiles/CMakeRuleHashes.txt | 2 +- .../CMakeFiles/ClangFormat.dir/build.make | 2 +- HW10/cmake-build-debug/HW10.cbp | 3 ++ HW10/main.cpp | 15 ++++++- 6 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 HW10/SerializeCities.h diff --git a/HW10/CMakeLists.txt b/HW10/CMakeLists.txt index dcd18bf..7ea32a8 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 ParseMatrixForMPI.h) + CostMatrixGenerator.cpp CostMatrixGenerator.h ParseMatrixForMPI.h SerializeCities.h) set(CMAKE_CXX_STANDARD 17) add_executable(HW10 ${HEADER_FILES} ${SOURCE_FILES} main.cpp) diff --git a/HW10/SerializeCities.h b/HW10/SerializeCities.h new file mode 100644 index 0000000..5572d3a --- /dev/null +++ b/HW10/SerializeCities.h @@ -0,0 +1,43 @@ +// +// Created by Brady Bodily on 3/30/20. +// + +#include +#include "City.h" + +#ifndef HW10_SERIALIZECITIES_H +#define HW10_SERIALIZECITIES_H + +class SerializeCities +{ + public: + static std::vector Serialize(std::vector cities); + static std::vector Deserialize(std::vector cities); +}; +std::vector SerializeCities::Serialize(std::vector cities) +{ + auto returnVector = std::vector(cities.size()*3, 0); + returnVector[0] = cities[0].GetName(); + returnVector[1] = cities[0].GetX(); + returnVector[2] = cities[0].GetY(); + for(int i = 3; i < cities.size()*3; i+=3){ + returnVector[i] = cities[i].GetName(); + returnVector[i+1] = cities[i].GetX(); + returnVector[i+2] = cities[i].GetY(); + + } + return returnVector; +} + +std::vector SerializeCities::Deserialize(std::vector cities) +{ + auto returnVector = std::vector(); + for(int i = 0; i < cities.size(); i+=3){ + City city; + city.SetCoordinates(cities[i+1], cities[i+2], cities[i]); + returnVector.push_back(city); + } + return returnVector; +} + +#endif //HW10_SERIALIZECITIES_H diff --git a/HW10/cmake-build-debug/CMakeFiles/CMakeRuleHashes.txt b/HW10/cmake-build-debug/CMakeFiles/CMakeRuleHashes.txt index 820ec7f..d2f467b 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. -ec43966e55ea917fde3b84076c03b167 CMakeFiles/ClangFormat +26a2bad7d1d2da4c60ef59c8ea5c8e8f 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 219b203..651ec3e 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/ParseMatrixForMPI.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/SerializeCities.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/HW10.cbp b/HW10/cmake-build-debug/HW10.cbp index 5e8160c..f2789d8 100644 --- a/HW10/cmake-build-debug/HW10.cbp +++ b/HW10/cmake-build-debug/HW10.cbp @@ -118,6 +118,9 @@ + + diff --git a/HW10/main.cpp b/HW10/main.cpp index 471f298..93053fc 100644 --- a/HW10/main.cpp +++ b/HW10/main.cpp @@ -3,6 +3,7 @@ #include "ParseMatrixForMPI.h" #include "ReadFromFile.h" #include "mpi.h" +#include "SerializeCities.h" #define MCW MPI_COMM_WORLD int main(int argc, char* argv[]) @@ -15,6 +16,7 @@ int main(int argc, char* argv[]) std::vector> costMatrix; std::vector cities; std::vector flatMatrix; + std::vector serializedCity; if (rank == 0) { std::cout << "Reading in file" << std::endl; cities = ReadFromFile::ReadFile("../input"); @@ -28,6 +30,7 @@ int main(int argc, char* argv[]) // std::cout << std::endl; // } flatMatrix = matrixTools::FlattenMatrix(costMatrix); + SerializeCities::Serialize(cities); std::cout << "Here: "; for(int i = 0; i < cities.size(); i++){ std::cout << cities[i].GetName() << " "; @@ -39,6 +42,7 @@ int main(int argc, char* argv[]) // reserve memory for vectors flatMatrix.resize(citiesSize*citiesSize); cities.resize(citiesSize); + serializedCity.resize(citiesSize*3); costMatrix.resize(citiesSize); for(int i = 0; i < citiesSize; i++) { costMatrix[i].resize(citiesSize); @@ -48,13 +52,22 @@ int main(int argc, char* argv[]) std::cout << cities[i].GetName() << " "; } std::cout << std::endl; + } MPI_Bcast(&flatMatrix[0], flatMatrix.size(), MPI_DOUBLE, 0, MPI_COMM_WORLD); - MPI_Bcast(&cities[0], citiesSize, MPI_DOUBLE, 0, MPI_COMM_WORLD); + MPI_Bcast(&serializedCity[0], citiesSize*3, MPI_DOUBLE, 0, MPI_COMM_WORLD); std::vector costs; if(rank){ + cities = SerializeCities::Deserialize(serializedCity); + + std::cout << "After B_cast: "; + for(int i = 0; i < cities.size(); i++){ + std::cout << cities[i].GetName() << " "; + } + std::cout << std::endl; + costMatrix = matrixTools::UnflattenMatrix(flatMatrix, citiesSize, citiesSize); //Make permutations std::cout << "source size from main " << cities.size() << std::endl;