--- trunk/src/io/RestWriter.cpp 2012/08/22 02:28:28 1782 +++ trunk/src/io/RestWriter.cpp 2014/02/26 14:14:50 1969 @@ -35,11 +35,14 @@ * * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). - * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). + * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (2008). * [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). */ +#ifdef IS_MPI +#include +#endif #include #include @@ -48,9 +51,6 @@ #include "io/RestWriter.hpp" #include "utils/simError.h" #include "brains/SnapshotManager.hpp" -#ifdef IS_MPI -#include -#endif namespace OpenMD { RestWriter::RestWriter(SimInfo* info, const std::string& filename, @@ -78,7 +78,7 @@ namespace OpenMD { #ifdef IS_MPI - MPI_Status istatus; + MPI_Status* istatus; #endif #ifndef IS_MPI @@ -149,19 +149,20 @@ namespace OpenMD { (*output_) << buffer; int nProc; - MPI_Comm_size(MPI_COMM_WORLD, &nProc); + MPI_Comm_size( MPI_COMM_WORLD, &nProc); + for (int i = 1; i < nProc; ++i) { // receive the length of the string buffer that was // prepared by processor i int recvLength; - MPI_Recv(&recvLength, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &istatus); + MPI_Recv(&recvLength, 1, MPI_INT, i, 0, MPI_COMM_WORLD, istatus); char* recvBuffer = new char[recvLength]; if (recvBuffer == NULL) { } else { - MPI_Recv(recvBuffer, recvLength, MPI_CHAR, i, 0, MPI_COMM_WORLD, - &istatus); + MPI_Recv(recvBuffer, recvLength, MPI_CHAR, i, 0, MPI_COMM_WORLD, + istatus); (*output_) << recvBuffer; delete [] recvBuffer; } @@ -170,8 +171,8 @@ namespace OpenMD { } else { int sendBufferLength = buffer.size() + 1; MPI_Send(&sendBufferLength, 1, MPI_INT, masterNode, 0, MPI_COMM_WORLD); - MPI_Send((void *)buffer.c_str(), sendBufferLength, MPI_CHAR, masterNode, - 0, MPI_COMM_WORLD); + MPI_Send((void *)buffer.c_str(), sendBufferLength, MPI_CHAR, + masterNode, 0, MPI_COMM_WORLD); } #endif // is_mpi @@ -181,7 +182,7 @@ namespace OpenMD { void RestWriter::writeRest(std::vector > restInfo) { #ifdef IS_MPI - MPI_Status istatus; + MPI_Status* istatus; #endif #ifndef IS_MPI @@ -225,19 +226,19 @@ namespace OpenMD { (*output_) << buffer; int nProc; - MPI_Comm_size(MPI_COMM_WORLD, &nProc); + MPI_Comm_size( MPI_COMM_WORLD, &nProc); for (int i = 1; i < nProc; ++i) { // receive the length of the string buffer that was // prepared by processor i int recvLength; - MPI_Recv(&recvLength, 1, MPI_INT, i, 0, MPI_COMM_WORLD, &istatus); + MPI_Recv(&recvLength, 1, MPI_INT, i, 0, MPI_COMM_WORLD, istatus); char* recvBuffer = new char[recvLength]; if (recvBuffer == NULL) { } else { - MPI_Recv(recvBuffer, recvLength, MPI_CHAR, i, 0, MPI_COMM_WORLD, - &istatus); + MPI_Recv(recvBuffer, recvLength, MPI_CHAR, i, 0, MPI_COMM_WORLD, + istatus); (*output_) << recvBuffer; delete [] recvBuffer; @@ -247,8 +248,8 @@ namespace OpenMD { } else { int sendBufferLength = buffer.size() + 1; MPI_Send(&sendBufferLength, 1, MPI_INT, masterNode, 0, MPI_COMM_WORLD); - MPI_Send((void *)buffer.c_str(), sendBufferLength, MPI_CHAR, masterNode, - 0, MPI_COMM_WORLD); + MPI_Send((void *)buffer.c_str(), sendBufferLength, + MPI_CHAR, masterNode, 0, MPI_COMM_WORLD); } #endif // is_mpi }