mpimpi----routinesroutinesroutines (fortran binding ...€¦ · • the following datatypes are...

25
1 MPI MPI MPI MPI-Routines Routines Routines Routines (Fortran Binding) (Fortran Binding) (Fortran Binding) (Fortran Binding) A. A. A. A. General remarks: General remarks: General remarks: General remarks: A well written text about MPI and its practical usage can be found in: “Introduction to MPI – created by the PACS Training Group All rights reserved. NCSA Access ©2001 Board of Trustees of the University of Illinois” N:\Group\Physik\p0kurs\CT-III\Literatur\MPI\Introduction_to_mpi.pdf A selection of tutorials is given under: Tutorial Material on MPI (http://www-unix.mcs.anl.gov/mpi/tutorial/) Some basic definitions: The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION, MPI_REAL 3. Logical: MPI_LOGICAL 4. Complex: MPI_COMPLEX, MPI_DOUBLE_COMPLEX 5. Byte: MPI_BYTE MPI Operators in MPI-Reduce are as follows: MPI Operator Operation ---------------------------------------------- MPI_MAX maximum MPI_MIN minimum MPI_SUM sum MPI_PROD product MPI_LAND logical and MPI_BAND bitwise and MPI_LOR logical or MPI_BOR bitwise or MPI_LXOR logical exclusive or MPI_BXOR bitwise exclusive or MPI_MAXLOC max value and location MPI_MINLOC min value and location

Upload: others

Post on 19-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

1

MPIMPIMPIMPI----RoutinesRoutinesRoutinesRoutines (Fortran Binding) (Fortran Binding) (Fortran Binding) (Fortran Binding)

A.A.A.A. General remarks:General remarks:General remarks:General remarks:

A well written text about MPI and its practical usage can be found in:

“Introduction to MPI – created by the PACS Training Group All rights reserved.

NCSA Access ©2001 Board of Trustees of the University of Illinois”

N:\Group\Physik\p0kurs\CT-III\Literatur\MPI\Introduction_to_mpi.pdf

A selection of tutorials is given under:

Tutorial Material on MPI

(http://www-unix.mcs.anl.gov/mpi/tutorial/)

Some basic definitions:

• The following datatypes are supported within the Fortran Binding:

1. Integer: MPI_INTEGER

2. Floating Point: MPI_DOUBLE_PRECISION, MPI_REAL

3. Logical: MPI_LOGICAL

4. Complex: MPI_COMPLEX, MPI_DOUBLE_COMPLEX

5. Byte: MPI_BYTE

• MPI Operators in MPI-Reduce are as follows:

MPI Operator Operation

----------------------------------------------

MPI_MAX maximum

MPI_MIN minimum

MPI_SUM sum

MPI_PROD product

MPI_LAND logical and

MPI_BAND bitwise and

MPI_LOR logical or

MPI_BOR bitwise or

MPI_LXOR logical exclusive or

MPI_BXOR bitwise exclusive or

MPI_MAXLOC max value and location

MPI_MINLOC min value and location

Page 2: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

2

B.B.B.B. Description ofDescription ofDescription ofDescription of Fortran routines Fortran routines Fortran routines Fortran routines in mor in mor in mor in more detaile detaile detaile detail::::

MMMMPI_AbortPI_AbortPI_AbortPI_Abort (com (com (com (comm, errorcode, ierror) m, errorcode, ierror) m, errorcode, ierror) m, errorcode, ierror)

integer comm, errorcode, ierror

Terminates MPI execution environment

MPI_Address (1ocation, addMPI_Address (1ocation, addMPI_Address (1ocation, addMPI_Address (1ocation, address, ierror) ress, ierror) ress, ierror) ress, ierror)

(type> location

integer address, ierror

Gets the address of a location in memory.

Deprecated: Use MPI_Cet_address instead.

MMMMPI_A11gathPI_A11gathPI_A11gathPI_A11gatheeeerrrr ((((sesesesendbuf, ndbuf, ndbuf, ndbuf, sesesesendcount, ndcount, ndcount, ndcount, ssssendtypc, rendtypc, rendtypc, rendtypc, reeeecvbuf, rcvbuf, rcvbuf, rcvbuf, reeeecvcount,cvcount,cvcount,cvcount,

recvtype, comm, ierror)recvtype, comm, ierror)recvtype, comm, ierror)recvtype, comm, ierror)

<type> sendbuf(*), recvbuf(*)

integer sendcount, sendtype, recvcount, recvtype, comm, ierror

Gathers data from all tasks and deliver it to all.

MPI_AMPI_AMPI_AMPI_A11gatherv11gatherv11gatherv11gatherv (sendbu(sendbu(sendbu(sendbuffff, sendcount, sendtype, recvbuf, recvcounts, , sendcount, sendtype, recvbuf, recvcounts, , sendcount, sendtype, recvbuf, recvcounts, , sendcount, sendtype, recvbuf, recvcounts,

dispdispdispdisplllls, recvtype, comm, ierror)s, recvtype, comm, ierror)s, recvtype, comm, ierror)s, recvtype, comm, ierror)

<type> sendbuf(*), recvbuf(*)

integer sendcount, sendtype, recvcounts(*) ‚ displs(*), recvtype, comm, ierror

Gathers data from all tasks and deliver it to all.

MPI_A11reduceMPI_A11reduceMPI_A11reduceMPI_A11reduce (sendbuf, rec(sendbuf, rec(sendbuf, rec(sendbuf, recvbuf, vbuf, vbuf, vbuf, countcountcountcount, , , , datatype, op, comm, idatatype, op, comm, idatatype, op, comm, idatatype, op, comm, ierror) error) error) error)

<type> sendbuf(*), recvbuf(*)

integer count, datatype, op, comm, ierror

Combines values from all processes and distribute the result back to all

processes.

Page 3: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

3

MP_AIltoall (sendbMP_AIltoall (sendbMP_AIltoall (sendbMP_AIltoall (sendbuf, sendcount, sendtype, recvbuf, recvcounuf, sendcount, sendtype, recvbuf, recvcounuf, sendcount, sendtype, recvbuf, recvcounuf, sendcount, sendtype, recvbuf, recvcount,t,t,t,

recvtype, commrecvtype, commrecvtype, commrecvtype, comm, ierror) , ierror) , ierror) , ierror)

<type> sendbuf(*), recvbuf(*)

integer sendcount, sendtype, recvcount, recvtype, comm, ierror

Sends data from all to all process.

MMMMPI_AlltoallvPI_AlltoallvPI_AlltoallvPI_Alltoallv (sendbuf, sen(sendbuf, sen(sendbuf, sen(sendbuf, sendcounts, sdispls, sendtype, dcounts, sdispls, sendtype, dcounts, sdispls, sendtype, dcounts, sdispls, sendtype, recvrecvrecvrecvbuf,buf,buf,buf,

recvcounts, rdispls, recvtype, comm, ierror)recvcounts, rdispls, recvtype, comm, ierror)recvcounts, rdispls, recvtype, comm, ierror)recvcounts, rdispls, recvtype, comm, ierror)

type> sendbuf(*), recvbuf(*)

integer sendcounts(*), sdispls(*), sendtype, recvcounts(*), rdisp1s(*),

recvtype, comm, ierror

Sends data from all to all processes, with a displacement.

MMMMPI_Attr_deletePI_Attr_deletePI_Attr_deletePI_Attr_delete (c (c (c (comm, keyval, iomm, keyval, iomm, keyval, iomm, keyval, ierror) error) error) error)

integer comm, keyval, ierror

Deletes attribute value associated with a key.

Deprecated. Use MPI_Comm_delete_attr instead.

MMMMPI_Attr_getPI_Attr_getPI_Attr_getPI_Attr_get (comm, keyval, attribute_val, flag, ierror)(comm, keyval, attribute_val, flag, ierror)(comm, keyval, attribute_val, flag, ierror)(comm, keyval, attribute_val, flag, ierror)

integer comm, keyval, attribute_val, ierror

logical flag

Retrieves attribute value by key.

Deprecated: Use MPI_Comm_get_attr instead.

MPIMPIMPIMPI_Attr_put_Attr_put_Attr_put_Attr_put (comm, keyval, attribute_ (comm, keyval, attribute_ (comm, keyval, attribute_ (comm, keyval, attribute_val, ierror) val, ierror) val, ierror) val, ierror)

integer comm, keyval, attribute_val, ierror

Stores attribute value associated with a key.

Deprecated: Use MPI_Comm_set_attr instead.

Page 4: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

4

MPI_Barrier (comm, ierror) MPI_Barrier (comm, ierror) MPI_Barrier (comm, ierror) MPI_Barrier (comm, ierror)

integer comm, ierror

Blocks until all proccesses have reached this routine.

MPIMPIMPIMPI_Bcast(buffer, count, datatype, root, comm, ierror) _Bcast(buffer, count, datatype, root, comm, ierror) _Bcast(buffer, count, datatype, root, comm, ierror) _Bcast(buffer, count, datatype, root, comm, ierror)

<type> buffer(*)

integer count, datatype, root, comm, ierror

Broadcasts a message from the process with rank "root' to all other processes

of the group.

MMMMPI_BsendPI_BsendPI_BsendPI_Bsend (buf, count, datatype, dest, tag, comm, ierror)(buf, count, datatype, dest, tag, comm, ierror)(buf, count, datatype, dest, tag, comm, ierror)(buf, count, datatype, dest, tag, comm, ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, ierror

Basic send with user-specified buffering.

MMMMPI_Bsend_iniPI_Bsend_iniPI_Bsend_iniPI_Bsend_initttt (buf, count, datatype, dest, tag, comm, request,(buf, count, datatype, dest, tag, comm, request,(buf, count, datatype, dest, tag, comm, request,(buf, count, datatype, dest, tag, comm, request, ierror)ierror)ierror)ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, request, ierror

Builds a handle for a buffered send.

MPMPMPMP_Buffer_attach_Buffer_attach_Buffer_attach_Buffer_attach (b (b (b (buffer, size, ierror) uffer, size, ierror) uffer, size, ierror) uffer, size, ierror)

<type> buffer(*)

integer size, ierror

Attaches a user-defined buffer for sending.

MPI_Buffer_deMPI_Buffer_deMPI_Buffer_deMPI_Buffer_detachtachtachtach (buff(buff(buff(buffeeeer, size, irror)r, size, irror)r, size, irror)r, size, irror)

<type> buffer(*)

integer size, ierror

Removes an existing buffer (for use in MPI_Bsend, etc.)

Page 5: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

5

MPIMPIMPIMPI_Cancel (request, ierror)_Cancel (request, ierror)_Cancel (request, ierror)_Cancel (request, ierror)

integer request, ierror

Cancels a communication request.

MPIMPIMPIMPI_Cart_coords_Cart_coords_Cart_coords_Cart_coords (comm, rank, maxdims, coords, ierror(comm, rank, maxdims, coords, ierror(comm, rank, maxdims, coords, ierror(comm, rank, maxdims, coords, ierror)

integer comm, rank, maxdims, coords(*), ierror

Determines process coords in Cartesian topology, given rank in group.

MPIMPIMPIMPI_Cart_create_Cart_create_Cart_create_Cart_create (comm_old, ndim(comm_old, ndim(comm_old, ndim(comm_old, ndims, dims, periods, reorder, comms, dims, periods, reorder, comms, dims, periods, reorder, comms, dims, periods, reorder, comm_cart, _cart, _cart, _cart,

iiiierror)error)error)error)

integer comm_old, ndims, dims(*), comm_cart, ierrar

logical periods(*), reorder

Makes a new communicator to which topology information has been

attached.

MPIMPIMPIMPI_Cart_get_Cart_get_Cart_get_Cart_get (comm, maxdim (comm, maxdim (comm, maxdim (comm, maxdims, dims, periods, coords, ierror)s, dims, periods, coords, ierror)s, dims, periods, coords, ierror)s, dims, periods, coords, ierror)

Integer comm, maxdims, dims(*), coords(*), ierror

logical periods (*)

Retrieves Cartesian topology information associated with a communicator

MPIMPIMPIMPI_Cart_map_Cart_map_Cart_map_Cart_map (comm, ndims, dim (comm, ndims, dim (comm, ndims, dim (comm, ndims, dims, periods, newrank, ierror)s, periods, newrank, ierror)s, periods, newrank, ierror)s, periods, newrank, ierror)

integer comm, ndims, dims(*), newrank, ierror

logical periods(*)

Maps process to Cartesian topology information.

MPIMPIMPIMPI_Cart_rank_Cart_rank_Cart_rank_Cart_rank (comm (comm (comm (comm, coords, rank, ierror), coords, rank, ierror), coords, rank, ierror), coords, rank, ierror)

integer comm, coords(*), rank, ierror

Determines process rank in communicator, given Cartesian location.

Page 6: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

6

MPIMPIMPIMPI_Cart_shift_Cart_shift_Cart_shift_Cart_shift (comm (comm (comm (comm, direction, disp, rank_source, rank_dest, , direction, disp, rank_source, rank_dest, , direction, disp, rank_source, rank_dest, , direction, disp, rank_source, rank_dest,

iiiierror)error)error)error)

integer comm, direction, disp, rank_source, rank_dest, ierror

Returns the shifted source and destination ranks given a shift direction and

amount.

MPI_Cart_MPI_Cart_MPI_Cart_MPI_Cart_subsubsubsub (comm, remain_dims, newcomm, ierror) (comm, remain_dims, newcomm, ierror) (comm, remain_dims, newcomm, ierror) (comm, remain_dims, newcomm, ierror)

integer comm, newcomm, ierror

logical remain_dims(*)

Partitions a communicator into subgroups that form lower-dimensional

Cartesian subgrids.

MPI_Cartdim_get(comm, ndims, ierror)MPI_Cartdim_get(comm, ndims, ierror)MPI_Cartdim_get(comm, ndims, ierror)MPI_Cartdim_get(comm, ndims, ierror)

integer comm, ndims, ierror

Retrieves Cartesian topology information associated with a communicator.

MPI_Comm_compareMPI_Comm_compareMPI_Comm_compareMPI_Comm_compare (comm(comm(comm(comm1111, comm2, result, ierror) , comm2, result, ierror) , comm2, result, ierror) , comm2, result, ierror)

integer comm1, comm2, ierror

Compares two communicators.

MPI_Comm_createMPI_Comm_createMPI_Comm_createMPI_Comm_create (comm, group, newcomm, ierror)(comm, group, newcomm, ierror)(comm, group, newcomm, ierror)(comm, group, newcomm, ierror)

integer comm, group, newcomm, ierror

Creates a new communicator.

MPI_Comm_create_errhandlerMPI_Comm_create_errhandlerMPI_Comm_create_errhandlerMPI_Comm_create_errhandler (function, errhandler, ierror) (function, errhandler, ierror) (function, errhandler, ierror) (function, errhandler, ierror)

external function

integer errhandler, ierror

MPI-2: Creates an MPI-style error handler.

Page 7: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

7

MPI_Comm_create_keyvalMPI_Comm_create_keyvalMPI_Comm_create_keyvalMPI_Comm_create_keyval (copy_fn, delete_fn, keyval, extra_state,(copy_fn, delete_fn, keyval, extra_state,(copy_fn, delete_fn, keyval, extra_state,(copy_fn, delete_fn, keyval, extra_state, ierror)ierror)ierror)ierror)

external copy_fn, delete_fn

integer keyval, ierror

integer (kind=MPI_ADDRESS_KIND) extra_state

MPI-2: Generates a new attribute key.

MPI_Comm_delete_attrMPI_Comm_delete_attrMPI_Comm_delete_attrMPI_Comm_delete_attr (comm, keyval, ierror) (comm, keyval, ierror) (comm, keyval, ierror) (comm, keyval, ierror)

integer comm, keyval, ierror

MPI-2: Deletes attribute value associated with a key.

MPI_Comm_dupMPI_Comm_dupMPI_Comm_dupMPI_Comm_dup (comm, newcomm, ierror)(comm, newcomm, ierror)(comm, newcomm, ierror)(comm, newcomm, ierror)

integer comm, newcomm, ierror

Duplicates an existing communicator with all its cached information.

MPI_ComMPI_ComMPI_ComMPI_Comm_free (comm, ierror) m_free (comm, ierror) m_free (comm, ierror) m_free (comm, ierror)

integer comm, ierror

Marks the communicator object for deallocation.

MPI_Comm_free_keyvalMPI_Comm_free_keyvalMPI_Comm_free_keyvalMPI_Comm_free_keyval (keyval, ierror)(keyval, ierror)(keyval, ierror)(keyval, ierror)

integer keyval, ierror

MPI-2: Frees an attribute key for communicator cache attribute

MPIMPIMPIMPI____Comin_get_attrComin_get_attrComin_get_attrComin_get_attr (com (com (com (comm, keyval, attributem, keyval, attributem, keyval, attributem, keyval, attribute____val, flag, ierror) val, flag, ierror) val, flag, ierror) val, flag, ierror)

integer comm, keyval, ierror

integer (kind=MPI_ADDRESS_KIND) attribute_val

logical flag

MPI-2: Retrieves attribute value by key.

MPI_ComMPI_ComMPI_ComMPI_Comm_gm_gm_gm_get_errhand1er (comm, eet_errhand1er (comm, eet_errhand1er (comm, eet_errhand1er (comm, errhandler, ierror)rrhandler, ierror)rrhandler, ierror)rrhandler, ierror)

integer comm, errhandler, ierror

MPI-2: Gets the error handler for a communicator.

Page 8: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

8

MPI_Comm_groupMPI_Comm_groupMPI_Comm_groupMPI_Comm_group (comm, group, ierror)(comm, group, ierror)(comm, group, ierror)(comm, group, ierror)

integer comm, group, ierror

Accesses the group associated with given communicator.

MPI_Comm_rankMPI_Comm_rankMPI_Comm_rankMPI_Comm_rank (com(com(com(comm, rank, ierror)m, rank, ierror)m, rank, ierror)m, rank, ierror)

integer comm, rank. ierror

Determines the rank of the calling process in the communicator.

MMMMPI_Comm_remote_groupPI_Comm_remote_groupPI_Comm_remote_groupPI_Comm_remote_group (comm,group, ierror)(comm,group, ierror)(comm,group, ierror)(comm,group, ierror)

integer comm, group, ierror

Returns the remote group in an intercommunicator.

MMMMPI_Comm_remote_sizePI_Comm_remote_sizePI_Comm_remote_sizePI_Comm_remote_size (comm (comm (comm (comm, size, ierror), size, ierror), size, ierror), size, ierror)

integer comm, size, ierror

Returns the number of processes in the remote group

MPIMPIMPIMPI_Comm_set_attr_Comm_set_attr_Comm_set_attr_Comm_set_attr (comm, keyval, attribute_val, ierror)(comm, keyval, attribute_val, ierror)(comm, keyval, attribute_val, ierror)(comm, keyval, attribute_val, ierror)

integer comm, keyva1, ierror

integer (kind=MPI_ADDRESS_KIND) attribute_val

MPI-2: Stores attribute value associated with a key.

MPI_Comm_set_errhMPI_Comm_set_errhMPI_Comm_set_errhMPI_Comm_set_errhandler (comandler (comandler (comandler (comm, errhandler, ierror) m, errhandler, ierror) m, errhandler, ierror) m, errhandler, ierror)

integer comm, errhandler, ierror

MPI-2: Sets the error handler for a communicator.

MMMMPI_ComPI_ComPI_ComPI_Comm_sizem_sizem_sizem_size (comm, size, ierror)(comm, size, ierror)(comm, size, ierror)(comm, size, ierror)

integer comm, size, ierror

Determines the size of the group associated with a communicator.

Page 9: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

9

MPIMPIMPIMPI.,.,.,.,CommCommCommComm_split_split_split_split (comm, color, key, newcomm, ierror)(comm, color, key, newcomm, ierror)(comm, color, key, newcomm, ierror)(comm, color, key, newcomm, ierror)

integer comm, color, key, newcomm, ierror

Creates new communicators based on colors and keys

MMMMPI_Comm_test_interPI_Comm_test_interPI_Comm_test_interPI_Comm_test_inter (comm, flag, ierror) (comm, flag, ierror) (comm, flag, ierror) (comm, flag, ierror)

integer comm, ierror

logical flag

Tests to see whether a communicator is an intercommunicator.

MPI_Dims_createMPI_Dims_createMPI_Dims_createMPI_Dims_create (nnodes, ndims, dims, ierror) (nnodes, ndims, dims, ierror) (nnodes, ndims, dims, ierror) (nnodes, ndims, dims, ierror)

integer nnodes, ndims, dims(*), ierror

Creates a division of processes in a Cartesian grid.

MPI_Errhandler_create (function, errhandler, ierror) MPI_Errhandler_create (function, errhandler, ierror) MPI_Errhandler_create (function, errhandler, ierror) MPI_Errhandler_create (function, errhandler, ierror)

external function

integer errhandler, ierror

Creates an MPI-style error handler.

Deprecated. Use MPI Comm_create_errhandler instead.

MPI_Errhandler_freeMPI_Errhandler_freeMPI_Errhandler_freeMPI_Errhandler_free (errhandler, ierror)(errhandler, ierror)(errhandler, ierror)(errhandler, ierror)

integer errhandler, ierror

Frees an MPI-style error handler.

MPI_Errhandler_getMPI_Errhandler_getMPI_Errhandler_getMPI_Errhandler_get (comm, errhandler, ierror) (comm, errhandler, ierror) (comm, errhandler, ierror) (comm, errhandler, ierror)

integer comm, errhandler, ierror

Gets the error handler for a communicator.

Deprecated. Use MPI_Comm_get_errhandler instead.

MPI_Errhandler_setMPI_Errhandler_setMPI_Errhandler_setMPI_Errhandler_set (comm, errhandler, ierror) (comm, errhandler, ierror) (comm, errhandler, ierror) (comm, errhandler, ierror)

integer comm, errhandler, ierror

Sets the error handler for a communicator.

Deprecated. Use MPI_Comm_set_errhandler instead.

Page 10: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

10

MPI_Error_classMPI_Error_classMPI_Error_classMPI_Error_class (errorcode, errorclass, ierror) (errorcode, errorclass, ierror) (errorcode, errorclass, ierror) (errorcode, errorclass, ierror)

integer errorcode, errorclass, ierror

Converts an error code into an error class.

MPI_Error_stringMPI_Error_stringMPI_Error_stringMPI_Error_string (errorcode, string, resultlen, ierror) (errorcode, string, resultlen, ierror) (errorcode, string, resultlen, ierror) (errorcode, string, resultlen, ierror)

integer errorcode, resultlen, ierror

character*(MPI_MAX_ERROR_STRING) string

Returns a string for a given error code.

MPI_FinalizeMPI_FinalizeMPI_FinalizeMPI_Finalize (ierror) (ierror) (ierror) (ierror)

integer ierror

Terminates MPI execution environment.

MPI_Gather MPI_Gather MPI_Gather MPI_Gather (sendbuf(sendbuf(sendbuf(sendbuf, sendcou, sendcou, sendcou, sendcount, sendtype, recvbuf, recvcount, recvtype, root, nt, sendtype, recvbuf, recvcount, recvtype, root, nt, sendtype, recvbuf, recvcount, recvtype, root, nt, sendtype, recvbuf, recvcount, recvtype, root,

comm, ierror)comm, ierror)comm, ierror)comm, ierror)

<type> sendbuf(*), recvbuf(*)

integer sendcount, sendtype, recvcount, recvtype, root, comm, ierror

Gathers toqether values from a group of tasks.

MPIMPIMPIMPI_Gatherv_Gatherv_Gatherv_Gatherv (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displ (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displ (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displ (sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, s, s, s,

recvtype, root, comm, ierror)recvtype, root, comm, ierror)recvtype, root, comm, ierror)recvtype, root, comm, ierror)

<type>endbuf(*), recvbuf(*)

integer sendcount, sendtype, recvcounts(*), displs(*), recvtype, root, comm,

ierror

Gathers into specified locations from all tasks in a qroup.

MMMMPI_PI_PI_PI_Get_address (1ocation, address, iGet_address (1ocation, address, iGet_address (1ocation, address, iGet_address (1ocation, address, ierror) error) error) error)

<type> location(*)

integer (kindMFI_ADDRESSKIND) address

integer ierror

MPI-2: Gets the address of a location in memory.

Page 11: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

11

MPI_Get_countMPI_Get_countMPI_Get_countMPI_Get_count (status, datatype, count, ierror) (status, datatype, count, ierror) (status, datatype, count, ierror) (status, datatype, count, ierror)

integer status(*), datatype, count, ierror

Gets the number of top level elements.

MPI_Get_elements (status, datatype, elements, ieMPI_Get_elements (status, datatype, elements, ieMPI_Get_elements (status, datatype, elements, ieMPI_Get_elements (status, datatype, elements, ierror) rror) rror) rror)

integer stacus(*), datatype, elements, ierror

Returns the number of basic elements in a datatype.

MPI_GetMPI_GetMPI_GetMPI_Get........processor_nameprocessor_nameprocessor_nameprocessor_name (nam (nam (nam (name, resultlen, ierror) e, resultlen, ierror) e, resultlen, ierror) e, resultlen, ierror)

character* (MPI_MAX_PROCESSOR_NAME) name

integer resultlen, ierror

Gets the name of the processor.

MPI_Get_versionMPI_Get_versionMPI_Get_versionMPI_Get_version (version, subversion, ierror) (version, subversion, ierror) (version, subversion, ierror) (version, subversion, ierror)

integer version, subversion, ierror

Return the version of MPI.

MMMMPI_Graph_createPI_Graph_createPI_Graph_createPI_Graph_create (comm_old, nnodes, index, edges, reorder, (comm_old, nnodes, index, edges, reorder, (comm_old, nnodes, index, edges, reorder, (comm_old, nnodes, index, edges, reorder,

comm_graph, ierror)comm_graph, ierror)comm_graph, ierror)comm_graph, ierror)

integer comm_old, nnodes, index(*), edges(*), comm_graph, ierror

logical reorder

Makes a new communicator to which topology information has been attached.

MMMMPI_Graph_getPI_Graph_getPI_Graph_getPI_Graph_get (com (com (com (comm, maxindex, maxedges, index, edges, ierror) m, maxindex, maxedges, index, edges, ierror) m, maxindex, maxedges, index, edges, ierror) m, maxindex, maxedges, index, edges, ierror)

integer comm, rnaxindex, maxedges, index(*), edges(*), ierror

Retrieves graph topology information associated with a communicator.

MPI_Graph_mMPI_Graph_mMPI_Graph_mMPI_Graph_mapapapap (comm, nnodes, index, edges, newrank, ierror) (comm, nnodes, index, edges, newrank, ierror) (comm, nnodes, index, edges, newrank, ierror) (comm, nnodes, index, edges, newrank, ierror)

integer comm, nnodes, index(*), edges(*), newrank, ierror

Maps process to graph topology information.

Page 12: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

12

MPI_Graph_neiMPI_Graph_neiMPI_Graph_neiMPI_Graph_neighborghborghborghbors_count (comm, rank, nneighbs_count (comm, rank, nneighbs_count (comm, rank, nneighbs_count (comm, rank, nneighbororororssss,i,i,i,ierroerroerroerror)r)r)r)

integer comm, rank, nneighbors, ierror

Returns the number of neighbors of a node associated with a graph topology.

MPI_Graph_neighborsMPI_Graph_neighborsMPI_Graph_neighborsMPI_Graph_neighbors (com(com(com(comm, rank, maxneighbors, neighbors, m, rank, maxneighbors, neighbors, m, rank, maxneighbors, neighbors, m, rank, maxneighbors, neighbors,

ierror) ierror) ierror) ierror)

integer comm, rank, maxneighbors, neighbors(*), ierror

Returns the neiqhbors of a node associated with a graph topology.

MPI_GraphdimMPI_GraphdimMPI_GraphdimMPI_Graphdims_Gets_Gets_Gets_Get (comm (comm (comm (comm, nn, nn, nn, nnodes, nedges, iodes, nedges, iodes, nedges, iodes, nedges, ierror) error) error) error)

integer comm, nnodes, nedges, ierror

Retrieves graph topology information associated with a communicator.

MMMMP1_Group_compareP1_Group_compareP1_Group_compareP1_Group_compare (group1(group1(group1(group1, group2, result, ierror, group2, result, ierror, group2, result, ierror, group2, result, ierror) ) ) )

integer group1, group2, result, ierror

Compare two groups.

MMMMPI_Group_differencePI_Group_differencePI_Group_differencePI_Group_difference (group1 (group1 (group1 (group1, group2, newgroup, ierror) , group2, newgroup, ierror) , group2, newgroup, ierror) , group2, newgroup, ierror)

integer group1, group2, newgroup, ierror

Makes a group from the difference of two groups.

MMMMPI_Group_exc1PI_Group_exc1PI_Group_exc1PI_Group_exc1 (group, n, ran(group, n, ran(group, n, ran(group, n, ranks, newgroup, iks, newgroup, iks, newgroup, iks, newgroup, ieeeerror)rror)rror)rror)

integer group, n, ranks(*), newgroup, ierror

Produces a group by reordering an existing group and taking only unlisted

members.

MMMMPIPIPIPI____GroupGroupGroupGroup____free (group, ierror)free (group, ierror)free (group, ierror)free (group, ierror)

integer group, ierror

Frees a group.

Page 13: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

13

MMMMPI_Group_inc1PI_Group_inc1PI_Group_inc1PI_Group_inc1 (group, n, ranks, newgroup, i (group, n, ranks, newgroup, i (group, n, ranks, newgroup, i (group, n, ranks, newgroup, ierror) error) error) error)

integer group, n, ranks(*), newgroup, ierror

Produces a group by reordering an existing group and taking only listed

members.

MMMMPI_Group_intersectionPI_Group_intersectionPI_Group_intersectionPI_Group_intersection (group1, group2, newgroup, ierror) (group1, group2, newgroup, ierror) (group1, group2, newgroup, ierror) (group1, group2, newgroup, ierror)

integer group1, group2, newgroup, ierror

Produces a group as the intersection of two existing groups.

MPI_GroupMPI_GroupMPI_GroupMPI_Group____range_exclrange_exclrange_exclrange_excl (group, n, ranges, newgroup, ierror) (group, n, ranges, newgroup, ierror) (group, n, ranges, newgroup, ierror) (group, n, ranges, newgroup, ierror)

integer group, n, ranges(3,*), newgroup, ierror

Produces a group by excluding ranges of processes from an existing

group.

MPI_GMPI_GMPI_GMPI_Grouprouprouproup____range_incIrange_incIrange_incIrange_incI (group,(group,(group,(group, n, r n, r n, r n, ranges,anges,anges,anges, newgroup, ierror) newgroup, ierror) newgroup, ierror) newgroup, ierror)

integer group, n, ranges(3,*), newgroup, ierror

Creates a new group from ranges of ranks in an existing group.

MMMMPI_Group_rankPI_Group_rankPI_Group_rankPI_Group_rank (group, rank, ierror) (group, rank, ierror) (group, rank, ierror) (group, rank, ierror)

integer group, rank, ierror

Returns the rank of this process in the given group.

MPI_MPI_MPI_MPI_Group_sizeGroup_sizeGroup_sizeGroup_size (group, size, ier (group, size, ier (group, size, ier (group, size, ierror) ror) ror) ror)

integer group, size, ierror

Returns the size of a group.

MPI_Group_tran1ate_ranks (group1, n, ranksMPI_Group_tran1ate_ranks (group1, n, ranksMPI_Group_tran1ate_ranks (group1, n, ranksMPI_Group_tran1ate_ranks (group1, n, ranks1111, group2, ranks2, ierror, group2, ranks2, ierror, group2, ranks2, ierror, group2, ranks2, ierror))))

integer group1, n, ranks1(*), group2, ranks2(*), ierror

Translates the ranks of processes in one group to those in another group.

Page 14: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

14

MMMMPI_Group_unionPI_Group_unionPI_Group_unionPI_Group_union (group1, group2, newgroup, ierror) (group1, group2, newgroup, ierror) (group1, group2, newgroup, ierror) (group1, group2, newgroup, ierror)

integer group1, group2, newgroup, ierror

Produces a group by combining two groups.

MMMMPI_IbsendPI_IbsendPI_IbsendPI_Ibsend (buf, count, datatype, dest, tag, comm, request, ierror)(buf, count, datatype, dest, tag, comm, request, ierror)(buf, count, datatype, dest, tag, comm, request, ierror)(buf, count, datatype, dest, tag, comm, request, ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, request, ierror

Starts a nonblocking buffered send.

MPI_iMPI_iMPI_iMPI_initnitnitnit (i (i (i (ierror)error)error)error)

integer ierror

Initializes the MPI execution environment.

MPI_MPI_MPI_MPI_InitializedInitializedInitializedInitialized (flag, (flag, (flag, (flag, ierror) ierror) ierror) ierror)

logical flag

integer ierror

Indicates whether MPI_ Init has been called.

MPI_Intercomm_creaMPI_Intercomm_creaMPI_Intercomm_creaMPI_Intercomm_createtetete (1oca1_comm, local_lead(1oca1_comm, local_lead(1oca1_comm, local_lead(1oca1_comm, local_leader, peer_comm,er, peer_comm,er, peer_comm,er, peer_comm,

remote_leader, tag, newintercomremote_leader, tag, newintercomremote_leader, tag, newintercomremote_leader, tag, newintercomm, ierror)m, ierror)m, ierror)m, ierror)

integer local_comm, local_leader, peer_comm, remote_leader, tag,

newintercomm, ierror

Creates an intercommunicator from two intercommunicators.

MMMMPIPIPIPI_Jntercomm__Jntercomm__Jntercomm__Jntercomm_mergemergemergemerge (intercomm, high, intracomm (intercomm, high, intracomm (intercomm, high, intracomm (intercomm, high, intracomm, ierror) , ierror) , ierror) , ierror)

integer intercomm, intracomm, ierror

logical high

Creates an intracomrnunicator from an intercornrnunicator.

Page 15: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

15

MMMMPI_IprobePI_IprobePI_IprobePI_Iprobe ((((source, tag, comm, flag, status, ierrorsource, tag, comm, flag, status, ierrorsource, tag, comm, flag, status, ierrorsource, tag, comm, flag, status, ierror))))

integer source, tag, comm, status(*), ierror

logical flag

Nonblocking test for a message.

MMMMPI_IrecvPI_IrecvPI_IrecvPI_Irecv (buf, count, datatype, source, tag, comm, request, ierror)(buf, count, datatype, source, tag, comm, request, ierror)(buf, count, datatype, source, tag, comm, request, ierror)(buf, count, datatype, source, tag, comm, request, ierror)

<type> buf(*)

integer count, datatype, source, tag, comm, request, ierror

Begins a nonblockinq receive.

MMMMPI_IrsendPI_IrsendPI_IrsendPI_Irsend ((((buf, count, dabuf, count, dabuf, count, dabuf, count, datatype, dest, tag, comm, requestatype, dest, tag, comm, requestatype, dest, tag, comm, requestatype, dest, tag, comm, request, ierror)t, ierror)t, ierror)t, ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, request, ierror

Starts a nonblocking ready send.

MMMMPI_IsendPI_IsendPI_IsendPI_Isend (buf, (buf, (buf, (buf, count, datatype, dest, tag, commcount, datatype, dest, tag, commcount, datatype, dest, tag, commcount, datatype, dest, tag, comm, request, ierror), request, ierror), request, ierror), request, ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, request, ierror

Starts a nonblocking send.

MPIMPIMPIMPI_I_I_I_Isssssssseeeendndndnd (buf, coun (buf, coun (buf, coun (buf, count datatyp, dt datatyp, dt datatyp, dt datatyp, dest, tag, comm, request, ieest, tag, comm, request, ieest, tag, comm, request, ieest, tag, comm, request, ierror)rror)rror)rror)

<type> buf(*)

integer count, datatype, dost, tag, comm, request, ierror

Starts a nonblockinq synchronous send.

MPI_MPI_MPI_MPI_KKKKeyval_eyval_eyval_eyval_createcreatecreatecreate (copy_fn, delete_fn, keyval, extra_state, i (copy_fn, delete_fn, keyval, extra_state, i (copy_fn, delete_fn, keyval, extra_state, i (copy_fn, delete_fn, keyval, extra_state, ierror)error)error)error)

external copy_fn, delete_fn

integer keyval, extra_state, ierror

Generates a new attribute key.

Deprecated: Use MPI Comrn_create_keyval instead.

Page 16: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

16

MPI_MPI_MPI_MPI_KeyvalfreeKeyvalfreeKeyvalfreeKeyvalfree (keyval, (keyval, (keyval, (keyval, ierror) ierror) ierror) ierror)

integer keyval, ierror

Frees attribute key for communicator cache attribute

Deprecated: Use MPI_Comm_free_keyval instead.

MPI_Op_createMPI_Op_createMPI_Op_createMPI_Op_create (functlon, commute, op, i (functlon, commute, op, i (functlon, commute, op, i (functlon, commute, op, ierror) error) error) error)

external function

logical commute

integer op, ierror

Creates a user-defined combination function handle.

MPI_OpMPI_OpMPI_OpMPI_Op_fr_fr_fr_free (op, ierroee (op, ierroee (op, ierroee (op, ierror)r)r)r)

integer op, ierror

Frees a user-defined combination function handle.

MMMMPI_PackPI_PackPI_PackPI_Pack (inbuf, incount, datatype, outbuf, outcount, position, comm, (inbuf, incount, datatype, outbuf, outcount, position, comm, (inbuf, incount, datatype, outbuf, outcount, position, comm, (inbuf, incount, datatype, outbuf, outcount, position, comm,

ierrorierrorierrorierror))))

<type>inbuf(*), outbuf(*)

integer incount, datatype, outcount, position, comm, ierror

Packs data into a contiguous buffer.

MMMMPI_Pack_sizePI_Pack_sizePI_Pack_sizePI_Pack_size (incount, datatype, size, ierror) (incount, datatype, size, ierror) (incount, datatype, size, ierror) (incount, datatype, size, ierror)

integer incount, datatype, size, ierror

Return the size needed to pack a datatype.

MPIMPIMPIMPI_Pcontrol (level) _Pcontrol (level) _Pcontrol (level) _Pcontrol (level)

integer level

Controls profiling (no ierror argument!).

Page 17: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

17

MMMMPIPIPIPI_Probe_Probe_Probe_Probe (source, tag, comm, s (source, tag, comm, s (source, tag, comm, s (source, tag, comm, status, ierror)tatus, ierror)tatus, ierror)tatus, ierror)

integer source, tag, comm, status, ierror

Blocking test for a message.

MPI_RMPI_RMPI_RMPI_Recvecvecvecv (buf, count, datatype, source, tag, comm, status, ierror) (buf, count, datatype, source, tag, comm, status, ierror) (buf, count, datatype, source, tag, comm, status, ierror) (buf, count, datatype, source, tag, comm, status, ierror)

<type> buf(*)

integer count, datatype, source, tag, comm, status(*), ierror

Basic receive.

MPIMPIMPIMPI_Recv_init_Recv_init_Recv_init_Recv_init (buf, count, datatype, source, tag, comm, request, (buf, count, datatype, source, tag, comm, request, (buf, count, datatype, source, tag, comm, request, (buf, count, datatype, source, tag, comm, request, ierror)ierror)ierror)ierror)

<type> buf(*)

integer count, datatype, source, tag, comm, request, ierror

Creates a handle for a receive.

MPI_MPI_MPI_MPI_ReduceReduceReduceReduce (sendbuf, recvbuf, count, datatype, op (sendbuf, recvbuf, count, datatype, op (sendbuf, recvbuf, count, datatype, op (sendbuf, recvbuf, count, datatype, op, root,, root,, root,, root, comm, ierror)comm, ierror)comm, ierror)comm, ierror)

<type> sendbuf(*), recvbuf(*)

integer count, datatype, op, root, comm, ierror

Reduces values on all processes to a single value. Operation is defined by op –

see part A.

MMMMPI_Reduce_scatterPI_Reduce_scatterPI_Reduce_scatterPI_Reduce_scatter (sendbuf, recvbuf, recvcounts, datatype, op,(sendbuf, recvbuf, recvcounts, datatype, op,(sendbuf, recvbuf, recvcounts, datatype, op,(sendbuf, recvbuf, recvcounts, datatype, op, comm, comm, comm, comm,

iiiierroerroerroerror)r)r)r)

<type> sendbuf(*), recvbuf(*)

integer recvcounts(*), datatype, op, comm, ierror

Combines values and scatters the results.

MPIMPIMPIMPI_Request_free_Request_free_Request_free_Request_free (request, (request, (request, (request, ierror) ierror) ierror) ierror)

integer request, ierror

Frees a communication request object.

Page 18: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

18

MMMMPI_RsendPI_RsendPI_RsendPI_Rsend (buf, co(buf, co(buf, co(buf, count, datatype, dest, tag, comm, ierror)unt, datatype, dest, tag, comm, ierror)unt, datatype, dest, tag, comm, ierror)unt, datatype, dest, tag, comm, ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, ierror

Basic ready send.

MPIMPIMPIMPI_Rsend_init_Rsend_init_Rsend_init_Rsend_init (buf, count, datatype, dest, tag, comm, request, (buf, count, datatype, dest, tag, comm, request, (buf, count, datatype, dest, tag, comm, request, (buf, count, datatype, dest, tag, comm, request, ierrorierrorierrorierror))))

<type> buf(*)

integer count, datatype, dest, tag, comm, request, ierror

Builds a handle for a ready send.

MPI_Scan (sendbuf, recvbut, count, datatype, op, comm, ierror)

<type> sendbuf(*), recvbuf(*)

integer count, datatype, op, comm, ierror

Computes the scan (partial reductions) of data on a collection of processes.

MMMMPI_ScatterPI_ScatterPI_ScatterPI_Scatter (sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, (sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, (sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, (sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype,

root, comm, ierrorroot, comm, ierrorroot, comm, ierrorroot, comm, ierror))))

<type> sendbuf(*), recvbuf(*)

integer sendcount, sendtype, recvcount, recvtype, root, comm, ierror

Sends data from one task to all other tasks in a group.

MMMMPI_PI_PI_PI_ScattervScattervScattervScatterv (sendbuf, sendcounts, displ (sendbuf, sendcounts, displ (sendbuf, sendcounts, displ (sendbuf, sendcounts, displs, sendtype, recvbuf,s, sendtype, recvbuf,s, sendtype, recvbuf,s, sendtype, recvbuf,

recvcount, recvtype, root, comm, ierror)recvcount, recvtype, root, comm, ierror)recvcount, recvtype, root, comm, ierror)recvcount, recvtype, root, comm, ierror)

<type> sendbuf(*), recvbuf(*)

integer sendcounts(*), displs(*), sendtype, recvcount, recvtype, root, comm,

ierror

Scatters a buffer in parts to all tasks in a group.

Page 19: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

19

MMMMPI_PI_PI_PI_ssssendendendend (buf, coun (buf, coun (buf, coun (buf, count, datt, datt, datt, dataaaatype, det,tag,type, det,tag,type, det,tag,type, det,tag, comm comm comm comm,,,, ierror ierror ierror ierror))))

<type> buf(*)

integer count, datatyp, dest, tag, comm, ierror

Basic send.

MMMMPI_Send_initPI_Send_initPI_Send_initPI_Send_init (buf, count,(buf, count,(buf, count,(buf, count, datatype, dest, tag, comm, requ datatype, dest, tag, comm, requ datatype, dest, tag, comm, requ datatype, dest, tag, comm, request,est,est,est, ierror)ierror)ierror)ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, request, ierror

Builds a handle for a standard send.

MPIMPIMPIMPI_Sendrecv_Sendrecv_Sendrecv_Sendrecv (sendbuf, sendcount, sendtype, dest, sendtag, r(sendbuf, sendcount, sendtype, dest, sendtag, r(sendbuf, sendcount, sendtype, dest, sendtag, r(sendbuf, sendcount, sendtype, dest, sendtag, recvbuf, recvcount, ecvbuf, recvcount, ecvbuf, recvcount, ecvbuf, recvcount,

recvtype, source, recvtag, comm, srecvtype, source, recvtag, comm, srecvtype, source, recvtag, comm, srecvtype, source, recvtag, comm, status, ierror) tatus, ierror) tatus, ierror) tatus, ierror)

<type>sendbuf(*), recvbuf(*)

integer sendcount, sendtype, dest, sendtag, recvcount, recvtype,

source, recvtag, comm, status(*), ierror

Sends and receives.

MPI_Sendrecv_replaceMPI_Sendrecv_replaceMPI_Sendrecv_replaceMPI_Sendrecv_replace (buf, count, datatype, dest, sendtag, source, (buf, count, datatype, dest, sendtag, source, (buf, count, datatype, dest, sendtag, source, (buf, count, datatype, dest, sendtag, source,

recvtag, comm, status, recvtag, comm, status, recvtag, comm, status, recvtag, comm, status, iiiierror)error)error)error)

<type> buf(*)

integer count, datatype, dest, sendtag, source, recvtag, comrn, status(*), ierror

Sends and receives using a single buffer.

MPI_SsendMPI_SsendMPI_SsendMPI_Ssend (buf, count, datatype, dest, tag, comm, ierror) (buf, count, datatype, dest, tag, comm, ierror) (buf, count, datatype, dest, tag, comm, ierror) (buf, count, datatype, dest, tag, comm, ierror)

<type> buf(*)

integer count, datatype, dest, tag, comm, ierror

Basic synchronous send.

Page 20: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

20

MPI_SseMPI_SseMPI_SseMPI_Ssennnnd_initd_initd_initd_init (buf, coun (buf, coun (buf, coun (buf, count, dt, dt, dt, datatype, dest, tag, comm, request, atatype, dest, tag, comm, request, atatype, dest, tag, comm, request, atatype, dest, tag, comm, request, iiiierror)error)error)error)

<type> buf(*)

integer count, datatype, dest, tag, comm, request, ierror

Builds a handle for a synchronous send.

MPl_SMPl_SMPl_SMPl_Start (request, ierror)tart (request, ierror)tart (request, ierror)tart (request, ierror)

integer request, ierror

Initiates a communication with a persistent request handle.

MPIMPIMPIMPI_Starta1l (count, array_of_requests, ierror) _Starta1l (count, array_of_requests, ierror) _Starta1l (count, array_of_requests, ierror) _Starta1l (count, array_of_requests, ierror)

integer count, array_ot_requests(*), lerror

Starts a collection of requests

MPIMPIMPIMPI_Test_Test_Test_Test (request, flag, status, ierror) (request, flag, status, ierror) (request, flag, status, ierror) (request, flag, status, ierror)

integer request, status(*), ierror

logical f lag

Tests for the completion of a send or receive

MPIMPIMPIMPI_Testal1_Testal1_Testal1_Testal1 (count, (count, (count, (count, arrayarrayarrayarray____ofofofof____requests, flag, array_of_statuses, ierror)requests, flag, array_of_statuses, ierror)requests, flag, array_of_statuses, ierror)requests, flag, array_of_statuses, ierror)

integer count, array_of_requests(*),

array_of_statuses(MPI_STATUS_SIZE,*), ierror

logical flag

Tests for the completion of all previously initiated communications.

MPIMPIMPIMPI_Testany_Testany_Testany_Testany (count, array(count, array(count, array(count, array_of_requests, index, flag, status_of_requests, index, flag, status_of_requests, index, flag, status_of_requests, index, flag, status, icrror) , icrror) , icrror) , icrror)

integer count, array_of_requests(*), index, status(*), ierror

logical flag

Tests for completion of any previously initiated communication.

Page 21: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

21

MPIMPIMPIMPI_Testsome_Testsome_Testsome_Testsome (incount, ar(incount, ar(incount, ar(incount, arrayrayrayray____of_requests, outcount, array_ofof_requests, outcount, array_ofof_requests, outcount, array_ofof_requests, outcount, array_of____indices, indices, indices, indices,

arrayarrayarrayarray____of_statuses, ierror)of_statuses, ierror)of_statuses, ierror)of_statuses, ierror)

integer incount, array_of_requests(*), outcount, array_of_indices(*),

arry_of_statuses(MPLSTATUS_SIZE.*), ierror

Tests for some given communications to complete.

MPI_Test_MPI_Test_MPI_Test_MPI_Test_ccccancelledancelledancelledancelled (s(s(s(status, f lag, ierror) tatus, f lag, ierror) tatus, f lag, ierror) tatus, f lag, ierror)

integer status(*), ierror

logical flag

Tests to see whether a request was cancelled.

MPI_Topo_testMPI_Topo_testMPI_Topo_testMPI_Topo_test (cornm, top(cornm, top(cornm, top(cornm, top----type, itype, itype, itype, ierror) error) error) error)

integer comm, top-type, ierror

Determines the type of topology (if any) associated with a communicator.

MMMMPI_Type_comPI_Type_comPI_Type_comPI_Type_commit (datatype, ierror)mit (datatype, ierror)mit (datatype, ierror)mit (datatype, ierror)

integer datatype, ierror

Commits the datatype.

MPI_Type_contigous (count, oldtype, newtype, ierror)MPI_Type_contigous (count, oldtype, newtype, ierror)MPI_Type_contigous (count, oldtype, newtype, ierror)MPI_Type_contigous (count, oldtype, newtype, ierror)

integer count, oldtype, newtype, ierror

Creates a contiguous datatype.

MMMMPI_Type_create_hindexedPI_Type_create_hindexedPI_Type_create_hindexedPI_Type_create_hindexed (count, array(count, array(count, array(count, array____of_blockleof_blockleof_blockleof_blocklengths,ngths,ngths,ngths,

array_of_displacments, oarray_of_displacments, oarray_of_displacments, oarray_of_displacments, oldtyp, newtype, ldtyp, newtype, ldtyp, newtype, ldtyp, newtype, ieieieierror) rror) rror) rror)

integer count, array_of_blocklengths(*), oldtype, newtype, ierror

integer (kind=MPI_ADDRESS_KIND) array_of_dip1acements(*)

MPI-2: Creates an indexed datatype with offsets in bytes.

Page 22: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

22

MMMMPI_Type_create_hPI_Type_create_hPI_Type_create_hPI_Type_create_hvectorvectorvectorvector (count, blocklength, stride, oldtype, (count, blocklength, stride, oldtype, (count, blocklength, stride, oldtype, (count, blocklength, stride, oldtype, newtype, newtype, newtype, newtype,

ierror)ierror)ierror)ierror)

integer count, blocklength, oldtype, newtype, ierror

integer (kind=MP1_ADDRESS_KIND) stride

MPI-2: Creates a vector (strided) datatype with offset in bytes.

MPI_Type_create_struct (count, arrMPI_Type_create_struct (count, arrMPI_Type_create_struct (count, arrMPI_Type_create_struct (count, array_of_ay_of_ay_of_ay_of_b1ock1engths,arrayb1ock1engths,arrayb1ock1engths,arrayb1ock1engths,array_of_displacemen_of_displacemen_of_displacemen_of_displacements, ts, ts, ts,

array_of_types, netype, ierror) array_of_types, netype, ierror) array_of_types, netype, ierror) array_of_types, netype, ierror)

integer count, array_of_blocklengths(*), array_of_types(), newtype. ierror

integer (kind=MPI_ADDRES_KIND) array_of_disp1acements(*)

MPI-2: Creates a structure datatype.

MPIMPIMPIMPI_Typ_Typ_Typ_Typeeee____extentextentextentextent (datatype, extent, ierror) (datatype, extent, ierror) (datatype, extent, ierror) (datatype, extent, ierror)

integer datatype, extent, ierror

Returns the size of datatype.

Deprecated: Use MP1_Type_get_extent instead.

MPI_Type_freeMPI_Type_freeMPI_Type_freeMPI_Type_free (datatype, ierror) (datatype, ierror) (datatype, ierror) (datatype, ierror)

integer datatype, ierror

Marks the datatype object for deallocation.

MPI_TypeMPI_TypeMPI_TypeMPI_Type____getgetgetget____extentextentextentextent (datatype, lb, (datatype, lb, (datatype, lb, (datatype, lb, extent, ierror) extent, ierror) extent, ierror) extent, ierror)

integer datatype, ierror

integer (kind=MPI_ADDRESS_KIND) lb, extent

MPI-2: Return the lower bound and extent of a datatype.

MPI_Typ_hindexed (count, array_of_b1ock1engthMPI_Typ_hindexed (count, array_of_b1ock1engthMPI_Typ_hindexed (count, array_of_b1ock1engthMPI_Typ_hindexed (count, array_of_b1ock1engthssss(*)(*)(*)(*),,,, array_of_diarray_of_diarray_of_diarray_of_displacements, splacements, splacements, splacements,

oldtype, newtoldtype, newtoldtype, newtoldtype, newtype, iype, iype, iype, ierror)error)error)error)

integer count, array_of_BlockIengtIhs(*), array_ot_displacements(*),

oldtype, newtype, ierror

Creates an indexed datatype with offsets in bytes.

Deprecated: Use MPI_Type_create_hindexed instead.

Page 23: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

23

MMMMPI_Type_hvectorPI_Type_hvectorPI_Type_hvectorPI_Type_hvector (count, blocklength, stride, o(count, blocklength, stride, o(count, blocklength, stride, o(count, blocklength, stride, o1dtype, newtype, ierror)1dtype, newtype, ierror)1dtype, newtype, ierror)1dtype, newtype, ierror)

integer count, blocklength, stride, oldtype, newtype, ierror

Creates a vector (strided) datatype with offset in bytes.

Deprecated: Use MPI_Type_create_hvector instead.

MMMMPI_Type_indexedPI_Type_indexedPI_Type_indexedPI_Type_indexed ((((count, array_of_b1ock1enthscount, array_of_b1ock1enthscount, array_of_b1ock1enthscount, array_of_b1ock1enths,,,, array_of_displa array_of_displa array_of_displa array_of_displacemcemcemcements, ents, ents, ents,

oldtype, newtype, ierror)oldtype, newtype, ierror)oldtype, newtype, ierror)oldtype, newtype, ierror)

integer count, array_or_b1ock1engths(*), array_ot_disp1acements(*), oldtype,

newtype, ierror

Creates an indexed datatype.

MMMMPI_Type_1b (dPI_Type_1b (dPI_Type_1b (dPI_Type_1b (datatype, disatatype, disatatype, disatatype, disp1acement, ierror) p1acement, ierror) p1acement, ierror) p1acement, ierror)

integer datatype, displacement, ierror

Returns the 1ower bound of a datatype.

Deprecated: Use MPI_ Type_get_extent instead.

MMMMPI_TypePI_TypePI_TypePI_Type_si_si_si_sizezezeze (datatype, size, i (datatype, size, i (datatype, size, i (datatype, size, ierror) error) error) error)

integer datatype, size, ierror

Return the number of bytes occupied by entries in the datatype.

MMMMPI_Type_structPI_Type_structPI_Type_structPI_Type_struct (count, array_of_blocklengths,(count, array_of_blocklengths,(count, array_of_blocklengths,(count, array_of_blocklengths, array_of_displacements, array_of_displacements, array_of_displacements, array_of_displacements,

array_of_types, newtype, ierror) array_of_types, newtype, ierror) array_of_types, newtype, ierror) array_of_types, newtype, ierror)

integer count, array_of_blocklengths(*), array_of_displacements(*),

array_of_types(*), newtype, ierror

Creates a structure datatype.

Deprecated: Use MPI_Type_create_struct instead.

MMMMPI_TPI_TPI_TPI_Type_ub (daype_ub (daype_ub (daype_ub (datatype, displtatype, displtatype, displtatype, displacement, ierror) acement, ierror) acement, ierror) acement, ierror)

integer datatype, displacement, ierror

Returns the upper bound of a datatype

Deprecated: Use MPI_Type_get_extent instead.

Page 24: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

24

MPIMPIMPIMPI_Type_vector_Type_vector_Type_vector_Type_vector (count, blocklength, stride, oldtype, newtype, ierror)(count, blocklength, stride, oldtype, newtype, ierror)(count, blocklength, stride, oldtype, newtype, ierror)(count, blocklength, stride, oldtype, newtype, ierror)

integer count, blocklength, stride, oldtype, newtype, ierror

Creates a vector (strided) datatype.

MMMMPI_UnpackPI_UnpackPI_UnpackPI_Unpack (inbuf, insize, position, outbuf, outco (inbuf, insize, position, outbuf, outco (inbuf, insize, position, outbuf, outco (inbuf, insize, position, outbuf, outcount, datatype, unt, datatype, unt, datatype, unt, datatype, comm, comm, comm, comm,

ierror)ierror)ierror)ierror)

<type> inbuf(*), outbuf(*)

integer insize, position, outcount, datatype, comm, ierror

Unpacks data from a contiguous buffer.

MMMMPI_WaitPI_WaitPI_WaitPI_Wait (request, status, ierror)(request, status, ierror)(request, status, ierror)(request, status, ierror)

integer request, status(*), ierror

Waits for an MPI send or receive to complete.

MPI_WaiMPI_WaiMPI_WaiMPI_Waitttta11 (count, array_of_requests, arra11 (count, array_of_requests, arra11 (count, array_of_requests, arra11 (count, array_of_requests, arrayayayay_of_statuses, ierror_of_statuses, ierror_of_statuses, ierror_of_statuses, ierror))))

integer count, array_of_requests(*), array_of_statuses(MPI_STATUS_SIZE,*),

ierror

Waits for all given communications to complete.

MMMMPI_WaitanyPI_WaitanyPI_WaitanyPI_Waitany (count, array_or_requests, index, status, i (count, array_or_requests, index, status, i (count, array_or_requests, index, status, i (count, array_or_requests, index, status, ierror) error) error) error)

integer count, array_of_requests(*), index, status(*), ierror

Waits for any specified send or receive to complete.

MPI_MPI_MPI_MPI_WWWWaiaiaiaitsometsometsometsome (incount, array_of (incount, array_of (incount, array_of (incount, array_of_requests, outcount, array_requests, outcount, array_requests, outcount, array_requests, outcount, array_of__of__of__of_indices, indices, indices, indices,

array_ofarray_ofarray_ofarray_of_statuses, i_statuses, i_statuses, i_statuses, ierror)error)error)error)

integer incount, array_of_requests(*), outcount, array_of_indices(*),

array_of_statuses(MPI_STATUSSIZE,*), ierror

Waits for some given communications to complete.

Double precision MPI_WDouble precision MPI_WDouble precision MPI_WDouble precision MPI_Wtick()tick()tick()tick()

Returns the resolution of MPI_Wtime.

Page 25: MPIMPI----RoutinesRoutinesRoutines (Fortran Binding ...€¦ · • The following datatypes are supported within the Fortran Binding: 1. Integer: MPI_INTEGER 2. Floating Point: MPI_DOUBLE_PRECISION,

25

double precision Mdouble precision Mdouble precision Mdouble precision MPIPIPIPI____Wtime()Wtime()Wtime()Wtime()

Returns an elapsed time on the calling processor.