Hello, I have this example code:
#include <vector> #include <mpi.h> int main(int argc, char *argv[]) { MPI_Init(&argc, &argv); { MPI_Request req1, req2; std::vector<int> vec = {1, 2, 3}; int packSize = sizeof(int) * vec.size(); int position = 0; std::vector<char> packSendBuf(packSize); int vecSize = vec.size(); MPI_Pack(vec.data(), vec.size(), MPI_INT, packSendBuf.data(), packSize, &position, MPI_COMM_WORLD); int estimatedPackSize = 0; MPI_Pack_size(vec.size(), MPI_INT, MPI_COMM_WORLD, &estimatedPackSize); std::cout << "packSize = " << packSize << ", estimatedPackSize = " << estimatedPackSize << std::endl; MPI_Isend(&vecSize, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &req1); MPI_Isend(packSendBuf.data(), position, MPI_PACKED, 0, 0, MPI_COMM_WORLD, &req2); } { int vecSize, msgSize; int packSize = 0, position = 0; MPI_Recv(&vecSize, 1, MPI_INT, 0, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Status status; MPI_Probe(0, MPI_ANY_TAG, MPI_COMM_WORLD, &status); MPI_Get_count(&status, MPI_PACKED, &packSize); char packBuffer[packSize]; std::cout << "packSize from get_count = " << packSize << std::endl; std::vector<int> vec(vecSize); MPI_Recv(packBuffer, packSize, MPI_PACKED, 0, MPI_ANY_TAG, MPI_COMM_WORLD, MPI_STATUS_IGNORE); MPI_Unpack(packBuffer, vecSize, &position, vec.data(), vecSize, MPI_INT, MPI_COMM_WORLD); } MPI_Finalize(); } Which gives an MPI_ERR_TRUNCATE even when running on 1 rank only. Background is that I want to send multiple differently sized objects, also with more complex types that to not map to MPI_*, for which I plan to use MPI_BYTES. I plan to pack them into one stream and unpack them one after one. I suspect I got somthig with the sizes wrong. The lines int estimatedPackSize = 0; MPI_Pack_size(vec.size(), MPI_INT, MPI_COMM_WORLD, &estimatedPackSize); std::cout << "packSize = " << packSize << ", estimatedPackSize = " << estimatedPackSize << std::endl; Return the same number, that is 12, the packSize from get_cont is also 12. Could you give a hint, what the is problem is here? OpenMPI 3.0.0 @ Arch or OpenMPI 1.1.0.2 @ Ubuntu 16.04 Thanks, Florian _______________________________________________ users mailing list users@lists.open-mpi.org https://lists.open-mpi.org/mailman/listinfo/users