[MPI3 Fortran] Specify IN/OUT/INOUT in MPI spec?
Lionel, Steve
steve.lionel at intel.com
Thu May 28 10:41:26 CDT 2009
Here's how I'd do it. I'm assuming that MPI_INT_KIND exists and I used IMPORT from F2003 assuming that the types and kinds were defined elsewhere in the same module. How this might be represented in the text of the standard could vary.
subroutine MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
import
<type>, dimension(*), intent(IN) ::BUF
integer(MPI_INT_KIND), intent(IN) :: COUNT
integer(MPI_INT_KIND), intent(IN) :: DATATYPE
integer(MPI_INT_KIND), intent(IN) :: DEST
integer(MPI_INT_KIND), intent(IN) :: TAG
integer(MPI_INT_KIND), intent(IN) :: COMM
integer(MPI_INT_KIND), intent(OUT) :: IERROR
end subroutine MPI_SEND
subroutine MPI_STARTALL(COUNT, ARRAY_OF_REQUESTS, IERROR)
import
integer(MPI_INT_KIND), intent(IN) :: COUNT
integer(MPI_INT_KIND), dimension(*), intent(INOUT) :: ARRAY_OF_REQUESTS
integer(MPI_INT_KIND), intent(OUT) :: IERROR
end subroutine MPI_STARTALL
subroutine MPI_TYPE_CREATE_STRUCT(COUNT, ARRAY_OF_BLOCKLENGTHS, &
ARRAY_OF_DISPLACEMENTS, ARRAY_OF_TYPES, NEWTYPE, IERROR)
import
integer(MPI_INT_KIND), intent(IN) :: COUNT
integer(MPI_INT_KIND), dimension(*), intent(IN) :: ARRAY_OF_BLOCKLENGTHS
integer(MPI_ADDRESS_KIND), dimension(*), intent(IN) :: ARRAY_OF_DISPLACEMENTS
integer(MPI_INT_KIND), dimension(*), intent(IN) :: ARRAY_OF_TYPES
integer(MPI_INT_KIND), intent(OUT) :: NEWTYPE
integer(MPI_INT_KIND), intent(OUT) :: IERROR
end subroutine MPI_TYPE_CREATE_STRUCT
-----Original Message-----
From: mpi3-fortran-bounces at lists.mpi-forum.org [mailto:mpi3-fortran-bounces at lists.mpi-forum.org] On Behalf Of Jeff Squyres
Sent: Thursday, May 28, 2009 11:21 AM
To: MPI-3 Fortran working group
Subject: Re: [MPI3 Fortran] Specify IN/OUT/INOUT in MPI spec?
Importance: Low
On May 28, 2009, at 10:41 AM, Lionel, Steve wrote:
> Yes, I can do 2b (what am I getting myself into?)
>
:-)
> I would have expected that the canonical form of the binding was a
> Fortran source of a module, but it probably is helpful to show the
> declaration in the standard text alongside a C binding if that's
> there.
>
Throughout the MPI doc, we show language neutral, C, C++, and Fortran
bindings for each MPI API function. The C++ bindings may well go away
(yay!), and what I'm suggesting is that we include proper INTENT
declarations for each one.
The Forum text purists will likely want to have some input on the
format, spacing, font, etc. of how these new bindings will appear
(!). That's why I suggest that we don't do anything until I can run a
few examples by the Forum and see which ones they like. That way, we
should get some standardized latex macros for all the Fortran bindings
-- then it'll just be a matter of applying those macros throughout the
text.
I picked a few random Fortran bindings from the 2.1 doc -- can you
guys tell me how the text *should* read with the INTENT stuff? I'll
then dither over font, spacing, etc. with the Forum to get it to their
liking.
! all are IN except IERROR
MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
<type> BUF(*)
INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
! count is IN
! array_of_requests is INOUT
! ierror is OUT
MPI_STARTALL(COUNT, ARRAY_OF_REQUESTS, IERROR)
INTEGER COUNT, ARRAY_OF_REQUESTS(*), IERROR
! all are IN except NEWTYPE and IERROR
MPI_TYPE_CREATE_STRUCT(COUNT, ARRAY_OF_BLOCKLENGTHS,
ARRAY_OF_DISPLACEMENTS, ARRAY_OF_TYPES, NEWTYPE, IERROR)
INTEGER COUNT, ARRAY_OF_BLOCKLENGTHS(*), ARRAY_OF_TYPES(*), NEWTYPE,
IERROR
INTEGER(KIND=MPI_ADDRESS_KIND) ARRAY_OF_DISPLACEMENTS(*)
Thanks!
--
Jeff Squyres
Cisco Systems
_______________________________________________
mpi3-fortran mailing list
mpi3-fortran at lists.mpi-forum.org
http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi3-fortran
More information about the mpiwg-fortran
mailing list