[MPI3 Fortran] Should we change string (character) API in MPI_Comm_spawn_multiple?

Rasmussen, Craig crasmussen at newmexicoconsortium.org
Wed May 26 11:27:58 CDT 2010


First the easy one, consider MPI_Comm_spawn.  Currently argv is declared as

     CHARACTER*(*) COMMAND, ARGV(*)


But I think we should change it to


     CHARACTER*(*) COMMAND, ARGV(:)


so that users don't have to pad an extra string with blanks.


But with MPI_Comm_spawn_multiple it becomes a little more complicated
because argv becomes a two dimensional array.  In reality the array is
ragged (each argv list can be of different lengths) so it seems we are back
to padding which I find ugly.


The alternative would be to create a derived type, say for the sake of
argument TYPE(argv):


    TYPE argv

        character(len=?) :: command  ! ? mark means I don't know what should
go here for an allocatable

        character(len=?) :: argv(:)

        integer :: error

    END TYPE


Then the user would create an array of argvs


     TYPE(argv) :: args(count)


but would then have to allocate the components of the args separately.
 Since I try to ignore all string manipulation in Fortran, I don't really
know of a good way to do this.  Any body have a better ideas.


-craig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mpi-forum.org/pipermail/mpiwg-fortran/attachments/20100526/a2d04b29/attachment.html>


More information about the mpiwg-fortran mailing list