 <p>I'm not sure I understand the question correctly so forgive me if my answer is off. From what I understand you want to send non-POD datatypes using MPI. </p> <p>A library that can do this is <a href="http://www.boost.org/doc/libs/1_42_0/doc/html/mpi.html" rel="nofollow noreferrer">Boost.MPI</a>. It uses a serialization library to send even very complex data structures. There is a catch though: you will have to provide code to serialize the data yourself if you use complicated structures that Boost.Serialize does not already know about.</p> <p>I believe message passing is typically used to transmit POD datatypes.</p> <p>I'm not allowed to post more links so here is what I wanted to include:</p> <p>Explanation of POD: www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html</p> <p>Serialization Library: www.boost.org/libs/serialization/doc</p>