[Mpi-forum] C++ types inaccessible after #281
Jeff Squyres
jsquyres at cisco.com
Wed Jun 27 15:10:20 CDT 2012
On Jun 27, 2012, at 3:59 PM, N.M. Maclaren wrote:
> Yes, this is an ungodly mess. I don't agree with the forum's decision,
> but let's accept it. The only reasonable approach is the one of having
> MPI types for C++'s types, which could still be used via the C interface
> from a C++ compiler. I believe that is what you were referring to, and
> what is intended.
Thanks for the excellent summary.
Don't forget a few points:
- As Jim pointed out, all MPI datatypes are supposed to be available in all language bindings. Hence, if we have (for example) MPI_CXX_COMPLEX, it needs to be available in both C and the various Fortran bindings.
- This is not as wonky as it sounds; you may have a C++ MPI process send an MPI_CXX_COMPLEX to a Fortran MPI process who simply receives that message into a buffer and doesn't try to interpret it. The Fortran MPI process could then send that same MPI_CXX_COMPLEX process back to a C++ MPI process later, who could then rightfully interpret it properly (this example can be made for any language-specific type, actually).
- From an MPI implementation's perspective, we don't have to worry too much about the behavior and semantics of a given type -- we mainly only have to worry about the byte layout in memory. Hence, getting the size of a given type (and sometimes its alignment) is all that is necessary for a C-based MPI implementation to be able to properly pack/unpack/send/receive MPI_CXX_COMPLEX. (right?)
- That being said, handling reductions on MPI_CXX_COMPLEX from C-based MPI implementations may be a little problematic if the types are not equivalent between C and C++, for example...
--
Jeff Squyres
jsquyres at cisco.com
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/
More information about the mpi-forum
mailing list