[MPIWG Fortran] Fwd: [Mpi-comments] MPI_Comm_spawn_multiple: parameter description and Fortran bindings

Jeff Squyres (jsquyres) jsquyres at cisco.com
Thu Feb 8 15:44:20 CST 2018


Forwarding this from the MPI-comments list to the Fortran working group...


Begin forwarded message:

From: Gilles Gouaillardet <gilles at rist.or.jp<mailto:gilles at rist.or.jp>>
Subject: [Mpi-comments] MPI_Comm_spawn_multiple: parameter description and Fortran bindings
Date: February 6, 2018 at 3:04:00 AM EST
To: <mpi-comments at lists.mpi-forum.org<mailto:mpi-comments at lists.mpi-forum.org>>
Reply-To: Comments on the MPI Standard <mpi-comments at lists.mpi-forum.org<mailto:mpi-comments at lists.mpi-forum.org>>

Dear MPI Forum,


The description of the 'array_of_commands` parameter passed to 'MPI_Comm_spawn_multiple()' is not crystal clear IMHO.

The standard simply states

  MPI_COMM_SPAWN_MULTIPLE(count, array_of_commands, ...)
  IN count number of commands (positive integer, significant to MPI
  only at root | see advice to users)
  IN array_of_commands programs to be executed (array of strings,
  significant only at root)

  Advice to users. The argument count is interpreted by MPI only at
  the root, as is
  array_of_argv. Since the leading dimension of array_of_argv is
  count, a non-positive
  value of count at a non-root node could theoretically cause a
  runtime bounds check
  error, even though array_of_argv should be ignored by the
  subroutine. If this happens,
  you should explicitly supply a reasonable value of count on the
  non-root nodes. (End
  of advice to users.)


And the Fortran binding is

MPI_COMM_SPAWN_MULTIPLE(COUNT, ARRAY_OF_COMMANDS, ...)
INTEGER  COUNT
CHARACTER*(*) ARRAY_OF_COMMANDS(*)


Intuitively, it seems obvious that 'array_of_commands' is an array of 'count' commands.

That being said, the standard does not state that, and it is unclear whether 'array_of_commands' should be

NULL-terminated (so to speak) or not.


Back to the Fortran binding, the following prototype, which is somehow consistent with 'array_of_argv',

could (help to) clear the confusion. The same comments also apply to the Fortran 2008 binding.


CHARACTER*(*) ARRAY_OF_COMMANDS(COUNT)



Gilles
_______________________________________________
mpi-comments mailing list
mpi-comments at lists.mpi-forum.org<mailto:mpi-comments at lists.mpi-forum.org>
https://lists.mpi-forum.org/mailman/listinfo/mpi-comments


--
Jeff Squyres
jsquyres at cisco.com<mailto:jsquyres at cisco.com>



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


More information about the mpiwg-fortran mailing list