[MPIWG Fortran] Data type of F08 subarray
Jeff Squyres (jsquyres)
jsquyres at cisco.com
Wed May 14 12:58:19 CDT 2014
On May 14, 2014, at 1:50 PM, Junchao Zhang <jczhang at mcs.anl.gov> wrote:
> The root reason is that subarray and the count/datatype argument contain the same kind of information, and MPI allows mismatch between them.
Offhand, I can think of several (additional) reasons why we didn't impose compile-time restrictions of the buffer type matching the MPI datatype:
1. The C bindings don't impose this restriction.
2. The C++ bindings didn't do this, either. They're defunct, but still.
3. If we did impose such a restriction, then there'd be no reason to have a datatype dummy argument. That would be a further digression from the C and language neutral bindings, which was not desirable.
4. The MPI datatypes section specifically states that the exact MPI datatypes don't have to match on the sender/receiver -- only the type maps have to agree.
5. There are legitimate use cases for using an MPI datatype that does not match the type of the buffer. For example, a C code could receive some MPI_INTEGERs sent from a Fortran sender. It then should really use MPI_INTEGER to send that buffer to a Fortran receiver (not MPI_INT). I.e., the C receiver acted like a middleman -- it received a blob that it didn't understand, and then re-sent that blob back to someone who could understand it. This is a simplistic example that is representative of some manager/worker codes out in the wild.
Plus, I'm not sure how you could implement such a compile-time check.
--
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 mpiwg-fortran
mailing list