Documentation for module message_passing

Interface to the message passing library MPI

source: message_passing.F
Loading...

public Types:

mp_file_descriptor_type
...
mp_type_descriptor_type
...
mp_perf_env_type
...

Generic procedures:

mp_allgather
mp_allocate
mp_alltoall
mp_bcast
mp_deallocate
mp_environ
mp_file_read_at_all
mp_file_write_at
mp_file_write_at_all
mp_gather
mp_gatherv
mp_iallgather
mp_ibcast
mp_irecv
mp_iscatter
mp_isend
mp_isendrecv
mp_isum
mp_max
mp_maxloc
mp_min
mp_minloc
mp_recv
mp_rget
mp_send
mp_sendrecv
mp_shift
mp_sum
mp_sum_partial
mp_test
mp_test_1
mp_testall
mp_testany
mp_type_make
mp_waitall
mp_win_create

public Subroutines/Functions:

start and stop the performance indicators for every call to start there has to be (exactly) one call to stop
...
...
Tests the MPI library
SUBROUTINE
mp_abort
globally stops all tasks this is intended to be low level, most of CP2K should call cp_abort()
...
...
SUBROUTINE
mp_cart_rank (group, pos, rank)
...
SUBROUTINE
mp_cart_sub (comm, rdim, sub_comm)
...
...
SUBROUTINE
mp_comm_dup (comm1, comm2)
...
SUBROUTINE
mp_comm_free (comm)
...
splits the given communicator in group in subgroups trying to organize them in a way that the communication within each subgroup is efficent (but not necessarily the comunication between subgroups)
the direct way to split a communicator each color is a sub_comm, the rank order is accoring to the order in the orig comm
SUBROUTINE
mp_dims_create (nodes, dims)
...
SUBROUTINE
mp_file_close (fh)
Closes a file
Returns the file size
Opens a file
(parallel) Collective, blocking read of a character array from a file. File access pattern
Releases the type used for MPI I/O
Creates an indexed MPI type for arrays of strings using bytes for spacing (hindexed type)
Uses a previously created indexed MPI character type to tell the MPI processes how to partition (set_view) an opened file
Get Version of the MPI Library (MPI 3)
SUBROUTINE
mp_isync (group, request)
synchronizes with a barrier a given group of mpi tasks
...
...
SUBROUTINE
mp_probe (source, comm, tag)
probes for an incomming message with any tag
...
re-create the system default communicator with a different MPI rank order
SUBROUTINE
mp_sync (group)
synchronizes with a barrier a given group of mpi tasks
...
...
...
...
Returns the size of a data type in bytes
SUBROUTINE
mp_wait (request)
waits for completion of the given request
waits for completion of any of the given requests
SUBROUTINE
mp_win_flush_all (win)
Window flush
SUBROUTINE
mp_win_free (win)
Window free
SUBROUTINE
mp_win_lock_all (win)
Window lock
SUBROUTINE
mp_win_unlock_all (win)
Window lock
SUBROUTINE
mp_world_finalize
finalizes the system default communicator
SUBROUTINE
mp_world_init (mp_comm)
initializes the system default communicator
SUBROUTINE
rm_mp_perf_env
...

Parameters:

LOGICAL
:: cp2k_is_parallel = .true.
INTEGER
:: file_amode_create = mpi_mode_create
INTEGER
:: file_amode_excl = mpi_mode_excl
INTEGER
:: file_amode_rdonly = mpi_mode_rdonly
INTEGER
:: file_amode_rdwr = mpi_mode_rdwr
INTEGER
:: file_amode_wronly = mpi_mode_wronly
INTEGER
:: file_offset = mpi_offset_kind
INTEGER
:: mpi_character_size = 1
INTEGER
:: mpi_integer_size = 4
INTEGER
:: mp_any_source = mpi_any_source
INTEGER
:: mp_any_tag = mpi_any_tag
INTEGER
:: mp_comm_null = mpi_comm_null
INTEGER
:: mp_comm_self = mpi_comm_self
INTEGER
:: mp_comm_world = mpi_comm_world
INTEGER
:: mp_max_library_version_string = mpi_max_library_version_string
INTEGER
:: mp_proc_null = mpi_proc_null
INTEGER
:: mp_request_null = mpi_request_null
INTEGER
:: mp_status_size = mpi_status_size
INTEGER
:: mp_win_null = mpi_win_null

Module variables:

LOGICAL
:: mp_collect_timings = .false.

public Types:

TYPE :: mp_file_descriptor_type

...


INTEGER
:: type_handle ...
INTEGER
:: length ...
LOGICAL
:: has_indexing = .FALSE. ...
:: index_descriptor ...

TYPE :: mp_perf_env_type

...


INTEGER
:: ref_count ...
INTEGER
:: id_nr ...
DIMENSION(MAX_PERF) :: mp_perfs ...

TYPE :: mp_type_descriptor_type

...


INTEGER
:: type_handle ...
INTEGER
:: length ...
INTEGER(mpi_address_kind)
:: base ...
INTEGER(int_4),
DIMENSION(:), POINTER :: data_i ...
INTEGER(int_8),
DIMENSION(:), POINTER :: data_l ...
REAL(real_4),
DIMENSION(:), POINTER :: data_r ...
REAL(real_8),
DIMENSION(:), POINTER :: data_d ...
COMPLEX(real_4),
DIMENSION(:), POINTER :: data_c ...
COMPLEX(real_8),
DIMENSION(:), POINTER :: data_z ...
DIMENSION(:), POINTER :: subtype ...
INTEGER
:: vector_descriptor ...
LOGICAL
:: has_indexing ...
:: index_descriptor ...


Generic procedure mp_allgather

...

INTEGER(int_4),
INTENT(in)
:: msgout × ×
INTEGER(int_4),
INTENT(in)
:: msgout(:) × ×
INTEGER(int_4),
INTENT(in)
:: msgout(:,:) × ×
INTEGER(int_4),
INTENT(in)
:: msgout(:,:,:) ×
INTEGER(int_8),
INTENT(in)
:: msgout × ×
INTEGER(int_8),
INTENT(in)
:: msgout(:) × ×
INTEGER(int_8),
INTENT(in)
:: msgout(:,:) × ×
INTEGER(int_8),
INTENT(in)
:: msgout(:,:,:) ×
REAL(real_4),
INTENT(in)
:: msgout × ×
REAL(real_4),
INTENT(in)
:: msgout(:) × ×
REAL(real_4),
INTENT(in)
:: msgout(:,:) × ×
REAL(real_4),
INTENT(in)
:: msgout(:,:,:) ×
REAL(real_8),
INTENT(in)
:: msgout × ×
REAL(real_8),
INTENT(in)
:: msgout(:) × ×
REAL(real_8),
INTENT(in)
:: msgout(:,:) × ×
REAL(real_8),
INTENT(in)
:: msgout(:,:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msgout × ×
COMPLEX(real_4),
INTENT(in)
:: msgout(:) × ×
COMPLEX(real_4),
INTENT(in)
:: msgout(:,:) × ×
COMPLEX(real_4),
INTENT(in)
:: msgout(:,:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msgout × ×
COMPLEX(real_8),
INTENT(in)
:: msgout(:) × ×
COMPLEX(real_8),
INTENT(in)
:: msgout(:,:) × ×
COMPLEX(real_8),
INTENT(in)
:: msgout(:,:,:) ×
INTEGER(int_4),
INTENT(out)
:: msgin(:) × ×
INTEGER(int_4),
INTENT(out)
:: msgin(:,:) × × ×
INTEGER(int_4),
INTENT(out)
:: msgin(:,:,:) ×
INTEGER(int_4),
INTENT(out)
:: msgin(:,:,:,:) ×
INTEGER(int_8),
INTENT(out)
:: msgin(:) × ×
INTEGER(int_8),
INTENT(out)
:: msgin(:,:) × × ×
INTEGER(int_8),
INTENT(out)
:: msgin(:,:,:) ×
INTEGER(int_8),
INTENT(out)
:: msgin(:,:,:,:) ×
REAL(real_4),
INTENT(out)
:: msgin(:) × ×
REAL(real_4),
INTENT(out)
:: msgin(:,:) × × ×
REAL(real_4),
INTENT(out)
:: msgin(:,:,:) ×
REAL(real_4),
INTENT(out)
:: msgin(:,:,:,:) ×
REAL(real_8),
INTENT(out)
:: msgin(:) × ×
REAL(real_8),
INTENT(out)
:: msgin(:,:) × × ×
REAL(real_8),
INTENT(out)
:: msgin(:,:,:) ×
REAL(real_8),
INTENT(out)
:: msgin(:,:,:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:) × ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:,:) × × ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:,:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:,:,:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:) × ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:,:) × × ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:,:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:,:,:,:) ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: rcount(:) × × × × × ×
INTEGER,
INTENT(in)
:: rdispl(:) × × × × × ×

Generic procedure mp_allocate

Allocates special parallel memory

INTEGER(int_4),
POINTER
:: data(:) ×
INTEGER(int_8),
POINTER
:: data(:) ×
REAL(real_4),
POINTER
:: data(:) ×
REAL(real_8),
POINTER
:: data(:) ×
COMPLEX(real_4),
POINTER
:: data(:) ×
COMPLEX(real_8),
POINTER
:: data(:) ×
INTEGER,
INTENT(in)
:: len × × × × × ×
INTEGER,
INTENT(out),
OPTIONAL
:: stat × × × × × ×

Generic procedure mp_alltoall

...

INTEGER(int_4),
INTENT(in)
:: sb(:) × ×
INTEGER(int_4),
INTENT(in)
:: sb(:,:) × ×
INTEGER(int_4),
INTENT(in)
:: sb(:,:,:) × ×
INTEGER(int_4),
INTENT(in)
:: sb(:,:,:,:) × ×
INTEGER(int_4),
INTENT(in)
:: sb(:,:,:,:,:) × ×
INTEGER(int_8),
INTENT(in)
:: sb(:) × ×
INTEGER(int_8),
INTENT(in)
:: sb(:,:) × ×
INTEGER(int_8),
INTENT(in)
:: sb(:,:,:) × ×
INTEGER(int_8),
INTENT(in)
:: sb(:,:,:,:) × ×
INTEGER(int_8),
INTENT(in)
:: sb(:,:,:,:,:) × ×
REAL(real_4),
INTENT(in)
:: sb(:) × ×
REAL(real_4),
INTENT(in)
:: sb(:,:) × ×
REAL(real_4),
INTENT(in)
:: sb(:,:,:) × ×
REAL(real_4),
INTENT(in)
:: sb(:,:,:,:) × ×
REAL(real_4),
INTENT(in)
:: sb(:,:,:,:,:) × ×
REAL(real_8),
INTENT(in)
:: sb(:) × ×
REAL(real_8),
INTENT(in)
:: sb(:,:) × ×
REAL(real_8),
INTENT(in)
:: sb(:,:,:) × ×
REAL(real_8),
INTENT(in)
:: sb(:,:,:,:) × ×
REAL(real_8),
INTENT(in)
:: sb(:,:,:,:,:) × ×
COMPLEX(real_4),
INTENT(in)
:: sb(:) × ×
COMPLEX(real_4),
INTENT(in)
:: sb(:,:) × ×
COMPLEX(real_4),
INTENT(in)
:: sb(:,:,:) × ×
COMPLEX(real_4),
INTENT(in)
:: sb(:,:,:,:) × ×
COMPLEX(real_4),
INTENT(in)
:: sb(:,:,:,:,:) × ×
COMPLEX(real_8),
INTENT(in)
:: sb(:) × ×
COMPLEX(real_8),
INTENT(in)
:: sb(:,:) × ×
COMPLEX(real_8),
INTENT(in)
:: sb(:,:,:) × ×
COMPLEX(real_8),
INTENT(in)
:: sb(:,:,:,:) × ×
COMPLEX(real_8),
INTENT(in)
:: sb(:,:,:,:,:) × ×
INTEGER(int_4),
INTENT(out)
:: rb(:) ×
INTEGER(int_4),
INTENT(out)
:: rb(:,:) ×
INTEGER(int_4),
INTENT(out)
:: rb(:,:,:) ×
INTEGER(int_4),
INTENT(out)
:: rb(:,:,:,:) × × ×
INTEGER(int_4),
INTENT(out)
:: rb(:,:,:,:,:) × ×
INTEGER(int_4),
INTENT(inout)
:: rb(:) ×
INTEGER(int_4),
INTENT(inout)
:: rb(:,:) ×
INTEGER(int_8),
INTENT(out)
:: rb(:) ×
INTEGER(int_8),
INTENT(out)
:: rb(:,:) ×
INTEGER(int_8),
INTENT(out)
:: rb(:,:,:) ×
INTEGER(int_8),
INTENT(out)
:: rb(:,:,:,:) × × ×
INTEGER(int_8),
INTENT(out)
:: rb(:,:,:,:,:) × ×
INTEGER(int_8),
INTENT(inout)
:: rb(:) ×
INTEGER(int_8),
INTENT(inout)
:: rb(:,:) ×
REAL(real_4),
INTENT(out)
:: rb(:) ×
REAL(real_4),
INTENT(out)
:: rb(:,:) ×
REAL(real_4),
INTENT(out)
:: rb(:,:,:) ×
REAL(real_4),
INTENT(out)
:: rb(:,:,:,:) × × ×
REAL(real_4),
INTENT(out)
:: rb(:,:,:,:,:) × ×
REAL(real_4),
INTENT(inout)
:: rb(:) ×
REAL(real_4),
INTENT(inout)
:: rb(:,:) ×
REAL(real_8),
INTENT(out)
:: rb(:) ×
REAL(real_8),
INTENT(out)
:: rb(:,:) ×
REAL(real_8),
INTENT(out)
:: rb(:,:,:) ×
REAL(real_8),
INTENT(out)
:: rb(:,:,:,:) × × ×
REAL(real_8),
INTENT(out)
:: rb(:,:,:,:,:) × ×
REAL(real_8),
INTENT(inout)
:: rb(:) ×
REAL(real_8),
INTENT(inout)
:: rb(:,:) ×
COMPLEX(real_4),
INTENT(out)
:: rb(:) ×
COMPLEX(real_4),
INTENT(out)
:: rb(:,:) ×
COMPLEX(real_4),
INTENT(out)
:: rb(:,:,:) ×
COMPLEX(real_4),
INTENT(out)
:: rb(:,:,:,:) × × ×
COMPLEX(real_4),
INTENT(out)
:: rb(:,:,:,:,:) × ×
COMPLEX(real_4),
INTENT(inout)
:: rb(:) ×
COMPLEX(real_4),
INTENT(inout)
:: rb(:,:) ×
COMPLEX(real_8),
INTENT(out)
:: rb(:) ×
COMPLEX(real_8),
INTENT(out)
:: rb(:,:) ×
COMPLEX(real_8),
INTENT(out)
:: rb(:,:,:) ×
COMPLEX(real_8),
INTENT(out)
:: rb(:,:,:,:) × × ×
COMPLEX(real_8),
INTENT(out)
:: rb(:,:,:,:,:) × ×
COMPLEX(real_8),
INTENT(inout)
:: rb(:) ×
COMPLEX(real_8),
INTENT(inout)
:: rb(:,:) ×
INTEGER,
INTENT(in)
:: count × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: group × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: scount(:) × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: sdispl(:) × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: rcount(:) × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: rdispl(:) × × × × × × × × × × × ×

Generic procedure mp_bcast

...

INTEGER(int_4)
:: msg ×
INTEGER(int_4)
:: msg(:) ×
INTEGER(int_4)
:: msg(:,:) ×
INTEGER(int_4)
:: msg(:,:,:) ×
INTEGER(int_8)
:: msg ×
INTEGER(int_8)
:: msg(:) ×
INTEGER(int_8)
:: msg(:,:) ×
INTEGER(int_8)
:: msg(:,:,:) ×
REAL(real_4)
:: msg ×
REAL(real_4)
:: msg(:) ×
REAL(real_4)
:: msg(:,:) ×
REAL(real_4)
:: msg(:,:,:) ×
REAL(real_8)
:: msg ×
REAL(real_8)
:: msg(:) ×
REAL(real_8)
:: msg(:,:) ×
REAL(real_8)
:: msg(:,:,:) ×
COMPLEX(real_4)
:: msg ×
COMPLEX(real_4)
:: msg(:) ×
COMPLEX(real_4)
:: msg(:,:) ×
COMPLEX(real_4)
:: msg(:,:,:) ×
COMPLEX(real_8)
:: msg ×
COMPLEX(real_8)
:: msg(:) ×
COMPLEX(real_8)
:: msg(:,:) ×
COMPLEX(real_8)
:: msg(:,:,:) ×
LOGICAL
:: msg ×
LOGICAL
:: msg(:) ×
CHARACTER(*)
:: msg ×
CHARACTER(*)
:: msg(:) ×
INTEGER
:: source × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER
:: gid × × × × × × × × × × × × × × × × × × × × × × × × × × × ×

Generic procedure mp_deallocate

Deallocates special parallel memory

INTEGER(int_4),
POINTER
:: data(:) ×
INTEGER(int_8),
POINTER
:: data(:) ×
REAL(real_4),
POINTER
:: data(:) ×
REAL(real_8),
POINTER
:: data(:) ×
COMPLEX(real_4),
POINTER
:: data(:) ×
COMPLEX(real_8),
POINTER
:: data(:) ×
INTEGER,
INTENT(out),
OPTIONAL
:: stat × × × × × ×

Generic procedure mp_environ

returns number of tasks and task id for a given mpi group simple and cartesian version.. recursive needed in case of failing mpi_comm_rank.

INTEGER,
INTENT(out)
:: numtask × ×
INTEGER,
INTENT(out)
:: taskid ×
INTEGER,
INTENT(in)
:: groupid × ×
INTEGER,
INTENT(out)
:: dims(2) ×
INTEGER,
INTENT(out)
:: dims(ndims) ×
INTEGER,
INTENT(out)
:: task_coor(2) ×
INTEGER,
INTENT(out)
:: task_coor(ndims) ×
INTEGER,
INTENT(in)
:: comm ×
INTEGER,
INTENT(in)
:: ndims ×
LOGICAL,
INTENT(out)
:: periods(ndims) ×

Generic procedure mp_file_read_at_all

(parallel) Blocking collective file read using explicit offsets (serial) Unformatted stream read

INTEGER,
INTENT(in)
:: fh × × × × × × × × × × × × × ×
INTEGER(file_offset),
INTENT(in)
:: offset × × × × × × × × × × × × × ×
CHARACTER(*),
INTENT(out)
:: msg ×
CHARACTER,
INTENT(out)
:: msg(:) ×
INTEGER(int_4),
INTENT(out)
:: msg ×
INTEGER(int_4),
INTENT(out)
:: msg(:) ×
INTEGER(int_8),
INTENT(out)
:: msg ×
INTEGER(int_8),
INTENT(out)
:: msg(:) ×
REAL(real_4),
INTENT(out)
:: msg ×
REAL(real_4),
INTENT(out)
:: msg(:) ×
REAL(real_8),
INTENT(out)
:: msg ×
REAL(real_8),
INTENT(out)
:: msg(:) ×
COMPLEX(real_4),
INTENT(out)
:: msg ×
COMPLEX(real_4),
INTENT(out)
:: msg(:) ×
COMPLEX(real_8),
INTENT(out)
:: msg ×
COMPLEX(real_8),
INTENT(out)
:: msg(:) ×
INTEGER,
INTENT(in),
OPTIONAL
:: msglen × × × × × × ×

Generic procedure mp_file_write_at

(parallel) Blocking individual file write using explicit offsets (serial) Unformatted stream write

INTEGER,
INTENT(in)
:: fh × × × × × × × × × × × × × ×
INTEGER(file_offset),
INTENT(in)
:: offset × × × × × × × × × × × × × ×
CHARACTER(*),
INTENT(in)
:: msg ×
CHARACTER,
INTENT(in)
:: msg(:) ×
INTEGER(int_4),
INTENT(in)
:: msg ×
INTEGER(int_4),
INTENT(in)
:: msg(:) ×
REAL(real_4),
INTENT(in)
:: msg ×
REAL(real_4),
INTENT(in)
:: msg(:) ×
REAL(real_8),
INTENT(in)
:: msg ×
REAL(real_8),
INTENT(in)
:: msg(:) ×
COMPLEX(real_4),
INTENT(in)
:: msg ×
COMPLEX(real_4),
INTENT(in)
:: msg(:) ×
COMPLEX(real_8),
INTENT(in)
:: msg ×
COMPLEX(real_8),
INTENT(in)
:: msg(:) ×
INTEGER(int_8),
INTENT(in)
:: msg ×
INTEGER(int_8),
INTENT(in)
:: msg(:) ×
INTEGER,
INTENT(in),
OPTIONAL
:: msglen × × × × × × ×

Generic procedure mp_file_write_at_all

(parallel) Blocking collective file write using explicit offsets (serial) Unformatted stream write

INTEGER,
INTENT(in)
:: fh × × × × × × × × × × × × × ×
INTEGER(file_offset),
INTENT(in)
:: offset × × × × × × × × × × × × × ×
CHARACTER(*),
INTENT(in)
:: msg ×
CHARACTER,
INTENT(in)
:: msg(:) ×
INTEGER(int_4),
INTENT(in)
:: msg ×
INTEGER(int_4),
INTENT(in)
:: msg(:) ×
INTEGER(int_8),
INTENT(in)
:: msg ×
INTEGER(int_8),
INTENT(in)
:: msg(:) ×
REAL(real_4),
INTENT(in)
:: msg ×
REAL(real_4),
INTENT(in)
:: msg(:) ×
REAL(real_8),
INTENT(in)
:: msg ×
REAL(real_8),
INTENT(in)
:: msg(:) ×
COMPLEX(real_4),
INTENT(in)
:: msg ×
COMPLEX(real_4),
INTENT(in)
:: msg(:) ×
COMPLEX(real_8),
INTENT(in)
:: msg ×
COMPLEX(real_8),
INTENT(in)
:: msg(:) ×
INTEGER,
INTENT(in),
OPTIONAL
:: msglen × × × × × × ×

Generic procedure mp_gather

...

INTEGER(int_4),
INTENT(in)
:: msg ×
INTEGER(int_4),
INTENT(in)
:: msg(:) ×
INTEGER(int_4),
INTENT(in)
:: msg(:,:) ×
INTEGER(int_8),
INTENT(in)
:: msg ×
INTEGER(int_8),
INTENT(in)
:: msg(:) ×
INTEGER(int_8),
INTENT(in)
:: msg(:,:) ×
REAL(real_4),
INTENT(in)
:: msg ×
REAL(real_4),
INTENT(in)
:: msg(:) ×
REAL(real_4),
INTENT(in)
:: msg(:,:) ×
REAL(real_8),
INTENT(in)
:: msg ×
REAL(real_8),
INTENT(in)
:: msg(:) ×
REAL(real_8),
INTENT(in)
:: msg(:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msg ×
COMPLEX(real_4),
INTENT(in)
:: msg(:) ×
COMPLEX(real_4),
INTENT(in)
:: msg(:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msg ×
COMPLEX(real_8),
INTENT(in)
:: msg(:) ×
COMPLEX(real_8),
INTENT(in)
:: msg(:,:) ×
INTEGER(int_4),
INTENT(out)
:: msg_gather(:) × ×
INTEGER(int_4),
INTENT(out)
:: msg_gather(:,:) ×
INTEGER(int_8),
INTENT(out)
:: msg_gather(:) × ×
INTEGER(int_8),
INTENT(out)
:: msg_gather(:,:) ×
REAL(real_4),
INTENT(out)
:: msg_gather(:) × ×
REAL(real_4),
INTENT(out)
:: msg_gather(:,:) ×
REAL(real_8),
INTENT(out)
:: msg_gather(:) × ×
REAL(real_8),
INTENT(out)
:: msg_gather(:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msg_gather(:) × ×
COMPLEX(real_4),
INTENT(out)
:: msg_gather(:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msg_gather(:) × ×
COMPLEX(real_8),
INTENT(out)
:: msg_gather(:,:) ×
INTEGER,
INTENT(in)
:: root × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × × × × × × × ×

Generic procedure mp_gatherv

Gathers data from all processes to one.

INTEGER(int_4),
INTENT(in)
:: sendbuf(:) ×
INTEGER(int_8),
INTENT(in)
:: sendbuf(:) ×
REAL(real_4),
INTENT(in)
:: sendbuf(:) ×
REAL(real_8),
INTENT(in)
:: sendbuf(:) ×
COMPLEX(real_4),
INTENT(in)
:: sendbuf(:) ×
COMPLEX(real_8),
INTENT(in)
:: sendbuf(:) ×
INTEGER(int_4),
INTENT(out)
:: recvbuf(:) ×
INTEGER(int_8),
INTENT(out)
:: recvbuf(:) ×
REAL(real_4),
INTENT(out)
:: recvbuf(:) ×
REAL(real_8),
INTENT(out)
:: recvbuf(:) ×
COMPLEX(real_4),
INTENT(out)
:: recvbuf(:) ×
COMPLEX(real_8),
INTENT(out)
:: recvbuf(:) ×
INTEGER,
INTENT(in)
:: recvcounts(:) × × × × × ×
INTEGER,
INTENT(in)
:: displs(:) × × × × × ×
INTEGER,
INTENT(in)
:: root × × × × × ×
INTEGER,
INTENT(in)
:: comm × × × × × ×

Generic procedure mp_iallgather

...

INTEGER(int_4),
INTENT(in)
:: msgout ×
INTEGER(int_8),
INTENT(in)
:: msgout ×
REAL(real_4),
INTENT(in)
:: msgout ×
REAL(real_8),
INTENT(in)
:: msgout ×
COMPLEX(real_4),
INTENT(in)
:: msgout ×
COMPLEX(real_8),
INTENT(in)
:: msgout ×
INTEGER(int_4),
INTENT(in)
:: msgout(:) × × × ×
INTEGER(int_8),
INTENT(in)
:: msgout(:) × × × ×
REAL(real_4),
INTENT(in)
:: msgout(:) × × × ×
REAL(real_8),
INTENT(in)
:: msgout(:) × × × ×
COMPLEX(real_4),
INTENT(in)
:: msgout(:) × × × ×
COMPLEX(real_8),
INTENT(in)
:: msgout(:) × × × ×
INTEGER(int_4),
INTENT(in)
:: msgout(:,:) × ×
INTEGER(int_8),
INTENT(in)
:: msgout(:,:) × ×
REAL(real_4),
INTENT(in)
:: msgout(:,:) × ×
REAL(real_8),
INTENT(in)
:: msgout(:,:) × ×
COMPLEX(real_4),
INTENT(in)
:: msgout(:,:) × ×
COMPLEX(real_8),
INTENT(in)
:: msgout(:,:) × ×
INTEGER(int_4),
INTENT(in)
:: msgout(:,:,:) ×
INTEGER(int_8),
INTENT(in)
:: msgout(:,:,:) ×
REAL(real_4),
INTENT(in)
:: msgout(:,:,:) ×
REAL(real_8),
INTENT(in)
:: msgout(:,:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msgout(:,:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msgout(:,:,:) ×
INTEGER(int_4),
INTENT(out)
:: msgin(:) × × × ×
INTEGER(int_8),
INTENT(out)
:: msgin(:) × × × ×
REAL(real_4),
INTENT(out)
:: msgin(:) × × × ×
REAL(real_8),
INTENT(out)
:: msgin(:) × × × ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:) × × × ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:) × × × ×
INTEGER(int_4),
INTENT(out)
:: msgin(:,:,:) × ×
INTEGER(int_8),
INTENT(out)
:: msgin(:,:,:) × ×
REAL(real_4),
INTENT(out)
:: msgin(:,:,:) × ×
REAL(real_8),
INTENT(out)
:: msgin(:,:,:) × ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:,:,:) × ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:,:,:) × ×
INTEGER(int_4),
INTENT(out)
:: msgin(:,:) ×
INTEGER(int_8),
INTENT(out)
:: msgin(:,:) ×
REAL(real_4),
INTENT(out)
:: msgin(:,:) ×
REAL(real_8),
INTENT(out)
:: msgin(:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:,:) ×
INTEGER(int_4),
INTENT(out)
:: msgin(:,:,:,:) ×
INTEGER(int_8),
INTENT(out)
:: msgin(:,:,:,:) ×
REAL(real_4),
INTENT(out)
:: msgin(:,:,:,:) ×
REAL(real_8),
INTENT(out)
:: msgin(:,:,:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msgin(:,:,:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msgin(:,:,:,:) ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(inout)
:: request × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(out)
:: request × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: rcount(:) × × × × × ×
INTEGER,
INTENT(in)
:: rcount(:,:) × × × × × ×
INTEGER,
INTENT(in)
:: rdispl(:) × × × × × ×
INTEGER,
INTENT(in)
:: rdispl(:,:) × × × × × ×

Generic procedure mp_ibcast

...

INTEGER(int_4)
:: msg ×
INTEGER(int_4)
:: msg(:) ×
INTEGER(int_8)
:: msg ×
INTEGER(int_8)
:: msg(:) ×
REAL(real_4)
:: msg ×
REAL(real_4)
:: msg(:) ×
REAL(real_8)
:: msg ×
REAL(real_8)
:: msg(:) ×
COMPLEX(real_4)
:: msg ×
COMPLEX(real_4)
:: msg(:) ×
COMPLEX(real_8)
:: msg ×
COMPLEX(real_8)
:: msg(:) ×
INTEGER
:: source × × × × × × × × × × × ×
INTEGER
:: gid × × × × × × × × × × × ×
INTEGER,
INTENT(inout)
:: request × × × × × × × × × × × ×

Generic procedure mp_irecv

...

INTEGER(int_4)
:: msgout(:) ×
INTEGER(int_4)
:: msgout(:,:) ×
INTEGER(int_4)
:: msgout(:,:,:) ×
INTEGER(int_4)
:: msgout(:,:,:,:) ×
INTEGER(int_8)
:: msgout(:) ×
INTEGER(int_8)
:: msgout(:,:) ×
INTEGER(int_8)
:: msgout(:,:,:) ×
INTEGER(int_8)
:: msgout(:,:,:,:) ×
REAL(real_4)
:: msgout(:) ×
REAL(real_4)
:: msgout(:,:) ×
REAL(real_4)
:: msgout(:,:,:) ×
REAL(real_4)
:: msgout(:,:,:,:) ×
REAL(real_8)
:: msgout(:) ×
REAL(real_8)
:: msgout(:,:) ×
REAL(real_8)
:: msgout(:,:,:) ×
REAL(real_8)
:: msgout(:,:,:,:) ×
COMPLEX(real_4)
:: msgout(:) ×
COMPLEX(real_4)
:: msgout(:,:) ×
COMPLEX(real_4)
:: msgout(:,:,:) ×
COMPLEX(real_4)
:: msgout(:,:,:,:) ×
COMPLEX(real_8)
:: msgout(:) ×
COMPLEX(real_8)
:: msgout(:,:) ×
COMPLEX(real_8)
:: msgout(:,:,:) ×
COMPLEX(real_8)
:: msgout(:,:,:,:) ×
LOGICAL
:: msgout(:) ×
LOGICAL
:: msgout(:,:,:) ×
INTENT(inout)
:: msgout ×
INTEGER,
INTENT(in)
:: source × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: comm × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(out)
:: request × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in),
OPTIONAL
:: tag × × × × × × × × × × × × × × × × × × × × × × × × × × ×

Generic procedure mp_iscatter

Scatters data from one processes to all others

INTEGER(int_4),
INTENT(in)
:: msg_scatter(:) × ×
INTEGER(int_8),
INTENT(in)
:: msg_scatter(:) × ×
REAL(real_4),
INTENT(in)
:: msg_scatter(:) × ×
REAL(real_8),
INTENT(in)
:: msg_scatter(:) × ×
COMPLEX(real_4),
INTENT(in)
:: msg_scatter(:) × ×
COMPLEX(real_8),
INTENT(in)
:: msg_scatter(:) × ×
INTEGER(int_4),
INTENT(in)
:: msg_scatter(:,:) ×
INTEGER(int_8),
INTENT(in)
:: msg_scatter(:,:) ×
REAL(real_4),
INTENT(in)
:: msg_scatter(:,:) ×
REAL(real_8),
INTENT(in)
:: msg_scatter(:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msg_scatter(:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msg_scatter(:,:) ×
INTEGER(int_4),
INTENT(inout)
:: msg ×
INTEGER(int_8),
INTENT(inout)
:: msg ×
REAL(real_4),
INTENT(inout)
:: msg ×
REAL(real_8),
INTENT(inout)
:: msg ×
COMPLEX(real_4),
INTENT(inout)
:: msg ×
COMPLEX(real_8),
INTENT(inout)
:: msg ×
INTEGER(int_4),
INTENT(inout)
:: msg(:) × ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) × ×
REAL(real_4),
INTENT(inout)
:: msg(:) × ×
REAL(real_8),
INTENT(inout)
:: msg(:) × ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:) × ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:) × ×
INTEGER,
INTENT(in)
:: root × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(inout)
:: request × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: sendcounts(:) × × × × × ×
INTEGER,
INTENT(in)
:: displs(:) × × × × × ×
INTEGER,
INTENT(in)
:: recvcount × × × × × ×

Generic procedure mp_isend

...

INTEGER(int_4)
:: msgin(:) ×
INTEGER(int_4)
:: msgin(:,:) ×
INTEGER(int_4)
:: msgin(:,:,:) ×
INTEGER(int_4)
:: msgin(:,:,:,:) ×
INTEGER(int_8)
:: msgin(:) ×
INTEGER(int_8)
:: msgin(:,:) ×
INTEGER(int_8)
:: msgin(:,:,:) ×
INTEGER(int_8)
:: msgin(:,:,:,:) ×
REAL(real_4)
:: msgin(:) ×
REAL(real_4)
:: msgin(:,:) ×
REAL(real_4)
:: msgin(:,:,:) ×
REAL(real_4)
:: msgin(:,:,:,:) ×
REAL(real_8)
:: msgin(:) ×
REAL(real_8)
:: msgin(:,:) ×
REAL(real_8)
:: msgin(:,:,:) ×
REAL(real_8)
:: msgin(:,:,:,:) ×
COMPLEX(real_4)
:: msgin(:) ×
COMPLEX(real_4)
:: msgin(:,:) ×
COMPLEX(real_4)
:: msgin(:,:,:) ×
COMPLEX(real_4)
:: msgin(:,:,:,:) ×
COMPLEX(real_8)
:: msgin(:) ×
COMPLEX(real_8)
:: msgin(:,:) ×
COMPLEX(real_8)
:: msgin(:,:,:) ×
COMPLEX(real_8)
:: msgin(:,:,:,:) ×
LOGICAL
:: msgin(:) ×
LOGICAL
:: msgin(:,:,:) ×
INTENT(in)
:: msgin ×
INTEGER,
INTENT(in)
:: dest × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: comm × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(out)
:: request × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in),
OPTIONAL
:: tag × × × × × × × × × × × × × × × × × × × × × × × × × × ×

Generic procedure mp_isendrecv

...

INTEGER(int_4)
:: msgin ×
INTEGER(int_4)
:: msgin(:) ×
INTEGER(int_8)
:: msgin ×
INTEGER(int_8)
:: msgin(:) ×
REAL(real_4)
:: msgin ×
REAL(real_4)
:: msgin(:) ×
REAL(real_8)
:: msgin ×
REAL(real_8)
:: msgin(:) ×
COMPLEX(real_4)
:: msgin ×
COMPLEX(real_4)
:: msgin(:) ×
COMPLEX(real_8)
:: msgin ×
COMPLEX(real_8)
:: msgin(:) ×
INTEGER,
INTENT(in)
:: dest × × × × × × × × × × × ×
INTEGER(int_4)
:: msgout ×
INTEGER(int_4)
:: msgout(:) ×
INTEGER(int_8)
:: msgout ×
INTEGER(int_8)
:: msgout(:) ×
REAL(real_4)
:: msgout ×
REAL(real_4)
:: msgout(:) ×
REAL(real_8)
:: msgout ×
REAL(real_8)
:: msgout(:) ×
COMPLEX(real_4)
:: msgout ×
COMPLEX(real_4)
:: msgout(:) ×
COMPLEX(real_8)
:: msgout ×
COMPLEX(real_8)
:: msgout(:) ×
INTEGER,
INTENT(in)
:: source × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: comm × × × × × × × × × × × ×
INTEGER,
INTENT(out)
:: send_request × × × × × × × × × × × ×
INTEGER,
INTENT(out)
:: recv_request × × × × × × × × × × × ×
INTEGER,
INTENT(in),
OPTIONAL
:: tag × × × × × × × × × × × ×

Generic procedure mp_isum

...

INTEGER(int_4),
INTENT(inout)
:: msg(:) ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) ×
REAL(real_4),
INTENT(inout)
:: msg(:) ×
REAL(real_8),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:) ×
LOGICAL,
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(in)
:: gid × × × × × × ×
INTEGER,
INTENT(inout)
:: request × × × × × × ×

Generic procedure mp_max

...

INTEGER(int_4),
INTENT(inout)
:: msg ×
INTEGER(int_4),
INTENT(inout)
:: msg(:) ×
INTEGER(int_8),
INTENT(inout)
:: msg ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) ×
REAL(real_4),
INTENT(inout)
:: msg ×
REAL(real_4),
INTENT(inout)
:: msg(:) ×
REAL(real_8),
INTENT(inout)
:: msg ×
REAL(real_8),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × ×

Generic procedure mp_maxloc

Finds the location of the maximal element in a vector.

INTEGER(int_4),
INTENT(inout)
:: msg(:) ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) ×
REAL(real_4),
INTENT(inout)
:: msg(:) ×
REAL(real_8),
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(in)
:: gid × × × ×

Generic procedure mp_min

...

INTEGER(int_4),
INTENT(inout)
:: msg ×
INTEGER(int_4),
INTENT(inout)
:: msg(:) ×
INTEGER(int_8),
INTENT(inout)
:: msg ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) ×
REAL(real_4),
INTENT(inout)
:: msg ×
REAL(real_4),
INTENT(inout)
:: msg(:) ×
REAL(real_8),
INTENT(inout)
:: msg ×
REAL(real_8),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × ×

Generic procedure mp_minloc

Finds the location of the minimal element in a vector.

INTEGER(int_4),
INTENT(inout)
:: msg(:) ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) ×
REAL(real_4),
INTENT(inout)
:: msg(:) ×
REAL(real_8),
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(in)
:: gid × × × ×

Generic procedure mp_recv

...

INTEGER(int_4),
INTENT(inout)
:: msg ×
INTEGER(int_4),
INTENT(inout)
:: msg(:) ×
INTEGER(int_8),
INTENT(inout)
:: msg ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) ×
REAL(real_4),
INTENT(inout)
:: msg ×
REAL(real_4),
INTENT(inout)
:: msg(:) ×
REAL(real_8),
INTENT(inout)
:: msg ×
REAL(real_8),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(inout)
:: source × × × × × × × × × × × ×
INTEGER,
INTENT(inout)
:: tag × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × ×

Generic procedure mp_rget

Single-sided get function for vector data

INTEGER(int_4)
:: base(:) ×
INTEGER(int_8)
:: base(:) ×
REAL(real_4)
:: base(:) ×
REAL(real_8)
:: base(:) ×
COMPLEX(real_4)
:: base(:) ×
COMPLEX(real_8)
:: base(:) ×
INTEGER,
INTENT(in)
:: source × × × × × ×
INTEGER,
INTENT(in)
:: win × × × × × ×
INTEGER(int_4)
:: win_data(:) ×
INTEGER(int_8)
:: win_data(:) ×
REAL(real_4)
:: win_data(:) ×
REAL(real_8)
:: win_data(:) ×
COMPLEX(real_4)
:: win_data(:) ×
COMPLEX(real_8)
:: win_data(:) ×
INTEGER,
INTENT(in),
OPTIONAL
:: myproc × × × × × ×
INTEGER,
INTENT(in),
OPTIONAL
:: disp × × × × × ×
INTEGER,
INTENT(out)
:: request × × × × × ×
INTENT(in),
OPTIONAL
:: origin_datatype × × × × × ×
INTENT(in),
OPTIONAL
:: target_datatype × × × × × ×

Generic procedure mp_send

...

INTEGER(int_4)
:: msg ×
INTEGER(int_4)
:: msg(:) ×
INTEGER(int_8)
:: msg ×
INTEGER(int_8)
:: msg(:) ×
REAL(real_4)
:: msg ×
REAL(real_4)
:: msg(:) ×
REAL(real_8)
:: msg ×
REAL(real_8)
:: msg(:) ×
COMPLEX(real_4)
:: msg ×
COMPLEX(real_4)
:: msg(:) ×
COMPLEX(real_8)
:: msg ×
COMPLEX(real_8)
:: msg(:) ×
INTEGER
:: dest × × × × × × × × × × × ×
INTEGER
:: tag × × × × × × × × × × × ×
INTEGER
:: gid × × × × × × × × × × × ×

Generic procedure mp_sendrecv

...

INTEGER(int_4),
INTENT(in)
:: msgin(:) ×
INTEGER(int_4),
INTENT(in)
:: msgin(:,:) ×
INTEGER(int_4),
INTENT(in)
:: msgin(:,:,:) ×
INTEGER(int_4),
INTENT(in)
:: msgin(:,:,:,:) ×
INTEGER(int_8),
INTENT(in)
:: msgin(:) ×
INTEGER(int_8),
INTENT(in)
:: msgin(:,:) ×
INTEGER(int_8),
INTENT(in)
:: msgin(:,:,:) ×
INTEGER(int_8),
INTENT(in)
:: msgin(:,:,:,:) ×
REAL(real_4),
INTENT(in)
:: msgin(:) ×
REAL(real_4),
INTENT(in)
:: msgin(:,:) ×
REAL(real_4),
INTENT(in)
:: msgin(:,:,:) ×
REAL(real_4),
INTENT(in)
:: msgin(:,:,:,:) ×
REAL(real_8),
INTENT(in)
:: msgin(:) ×
REAL(real_8),
INTENT(in)
:: msgin(:,:) ×
REAL(real_8),
INTENT(in)
:: msgin(:,:,:) ×
REAL(real_8),
INTENT(in)
:: msgin(:,:,:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msgin(:) ×
COMPLEX(real_4),
INTENT(in)
:: msgin(:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msgin(:,:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msgin(:,:,:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msgin(:) ×
COMPLEX(real_8),
INTENT(in)
:: msgin(:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msgin(:,:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msgin(:,:,:,:) ×
INTEGER,
INTENT(in)
:: dest × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER(int_4),
INTENT(out)
:: msgout(:) ×
INTEGER(int_4),
INTENT(out)
:: msgout(:,:) ×
INTEGER(int_4),
INTENT(out)
:: msgout(:,:,:) ×
INTEGER(int_4),
INTENT(out)
:: msgout(:,:,:,:) ×
INTEGER(int_8),
INTENT(out)
:: msgout(:) ×
INTEGER(int_8),
INTENT(out)
:: msgout(:,:) ×
INTEGER(int_8),
INTENT(out)
:: msgout(:,:,:) ×
INTEGER(int_8),
INTENT(out)
:: msgout(:,:,:,:) ×
REAL(real_4),
INTENT(out)
:: msgout(:) ×
REAL(real_4),
INTENT(out)
:: msgout(:,:) ×
REAL(real_4),
INTENT(out)
:: msgout(:,:,:) ×
REAL(real_4),
INTENT(out)
:: msgout(:,:,:,:) ×
REAL(real_8),
INTENT(out)
:: msgout(:) ×
REAL(real_8),
INTENT(out)
:: msgout(:,:) ×
REAL(real_8),
INTENT(out)
:: msgout(:,:,:) ×
REAL(real_8),
INTENT(out)
:: msgout(:,:,:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msgout(:) ×
COMPLEX(real_4),
INTENT(out)
:: msgout(:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msgout(:,:,:) ×
COMPLEX(real_4),
INTENT(out)
:: msgout(:,:,:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msgout(:) ×
COMPLEX(real_8),
INTENT(out)
:: msgout(:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msgout(:,:,:) ×
COMPLEX(real_8),
INTENT(out)
:: msgout(:,:,:,:) ×
INTEGER,
INTENT(in)
:: source × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: comm × × × × × × × × × × × × × × × × × × × × × × × ×

Generic procedure mp_shift

Shift around the data in msg

INTEGER(int_4),
INTENT(inout)
:: msg(:,:) ×
INTEGER(int_4),
INTENT(inout)
:: msg(:) ×
INTEGER(int_8),
INTENT(inout)
:: msg(:,:) ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) ×
REAL(real_4),
INTENT(inout)
:: msg(:,:) ×
REAL(real_4),
INTENT(inout)
:: msg(:) ×
REAL(real_8),
INTENT(inout)
:: msg(:,:) ×
REAL(real_8),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:,:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:,:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(in)
:: group × × × × × × × × × × × ×
INTEGER,
INTENT(in),
OPTIONAL
:: displ_in × × × × × × × × × × × ×

Generic procedure mp_sum

...

INTEGER(int_4),
INTENT(inout)
:: msg ×
INTEGER(int_4),
INTENT(inout)
:: msg(:) × ×
INTEGER(int_4),
INTENT(inout)
:: msg(:,:) × ×
INTEGER(int_4),
INTENT(inout)
:: msg(:,:,:) ×
INTEGER(int_4),
INTENT(inout)
:: msg(:,:,:,:) ×
INTEGER(int_8),
INTENT(inout)
:: msg ×
INTEGER(int_8),
INTENT(inout)
:: msg(:) × ×
INTEGER(int_8),
INTENT(inout)
:: msg(:,:) × ×
INTEGER(int_8),
INTENT(inout)
:: msg(:,:,:) ×
INTEGER(int_8),
INTENT(inout)
:: msg(:,:,:,:) ×
REAL(real_4),
INTENT(inout)
:: msg ×
REAL(real_4),
INTENT(inout)
:: msg(:) × ×
REAL(real_4),
INTENT(inout)
:: msg(:,:) × ×
REAL(real_4),
INTENT(inout)
:: msg(:,:,:) ×
REAL(real_4),
INTENT(inout)
:: msg(:,:,:,:) ×
REAL(real_8),
INTENT(inout)
:: msg ×
REAL(real_8),
INTENT(inout)
:: msg(:) × ×
REAL(real_8),
INTENT(inout)
:: msg(:,:) × ×
REAL(real_8),
INTENT(inout)
:: msg(:,:,:) ×
REAL(real_8),
INTENT(inout)
:: msg(:,:,:,:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:) × ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:,:) × ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:,:,:) ×
COMPLEX(real_4),
INTENT(inout)
:: msg(:,:,:,:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:) × ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:,:) × ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:,:,:) ×
COMPLEX(real_8),
INTENT(inout)
:: msg(:,:,:,:) ×
LOGICAL,
INTENT(inout)
:: msg ×
LOGICAL,
INTENT(inout)
:: msg(:) ×
INTEGER,
INTENT(in)
:: gid × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × ×
INTEGER,
INTENT(in)
:: root × × × × × × × × × × × ×

Generic procedure mp_sum_partial

Partial sum of data from all processes with result on each process.

INTEGER(int_4),
INTENT(in)
:: msg(:,:) ×
INTEGER(int_8),
INTENT(in)
:: msg(:,:) ×
REAL(real_4),
INTENT(in)
:: msg(:,:) ×
REAL(real_8),
INTENT(in)
:: msg(:,:) ×
COMPLEX(real_4),
INTENT(in)
:: msg(:,:) ×
COMPLEX(real_8),
INTENT(in)
:: msg(:,:) ×
INTEGER(int_4),
INTENT(out)
:: res(:,:) ×
INTEGER(int_8),
INTENT(out)
:: res(:,:) ×
REAL(real_4),
INTENT(out)
:: res(:,:) ×
REAL(real_8),
INTENT(out)
:: res(:,:) ×
COMPLEX(real_4),
INTENT(out)
:: res(:,:) ×
COMPLEX(real_8),
INTENT(out)
:: res(:,:) ×
INTEGER,
INTENT(in)
:: gid × × × × × ×

Generic procedure mp_test

Tests for completion of the given request.

INTEGER,
INTENT(inout)
:: request ×
LOGICAL,
INTENT(out)
:: flag ×

Generic procedure mp_testall

Tests for completion of the given requests.

INTEGER
:: requests(:) ×

Generic procedure mp_testany

tests for completion of the given requests

INTEGER,
INTENT(inout)
:: requests(:) ×
INTEGER,
INTENT(inout)
:: requests(:,:) ×
INTEGER,
INTENT(out),
OPTIONAL
:: completed × ×
LOGICAL,
INTENT(out),
OPTIONAL
:: flag × ×

Generic procedure mp_type_make

...

INTENT(in)
:: subtypes(:) ×
INTEGER,
INTENT(in),
OPTIONAL
:: vector_descriptor(2) × × × × × × ×
INTENT(in),
OPTIONAL
:: index_descriptor × × × × × × ×
INTEGER(int_4),
POINTER
:: ptr(:) ×
INTEGER(int_8),
POINTER
:: ptr(:) ×
REAL(real_4),
POINTER
:: ptr(:) ×
REAL(real_8),
POINTER
:: ptr(:) ×
COMPLEX(real_4),
POINTER
:: ptr(:) ×
COMPLEX(real_8),
POINTER
:: ptr(:) ×

Generic procedure mp_waitall

waits for completion of the given requests

INTEGER,
INTENT(inout)
:: requests(:) ×
INTEGER,
INTENT(inout)
:: requests(:,:) ×

Generic procedure mp_win_create

Window initialization function for vector data

INTEGER(int_4)
:: base(:) ×
INTEGER(int_8)
:: base(:) ×
REAL(real_4)
:: base(:) ×
REAL(real_8)
:: base(:) ×
COMPLEX(real_4)
:: base(:) ×
COMPLEX(real_8)
:: base(:) ×
INTEGER,
INTENT(in)
:: comm × × × × × ×
INTEGER,
INTENT(inout)
:: win × × × × × ×

SUBROUTINEadd_mp_perf_env(perf_env)

start and stop the performance indicators for every call to start there has to be (exactly) one call to stop

Arguments:
OPTIONAL, POINTER
:: perf_env ...

SUBROUTINEdescribe_mp_perf_env(scr)

...

Arguments:
INTEGER,
INTENT(in)
:: scr ...

FUNCTIONget_mp_perf_env()

...

Return Value ::

SUBROUTINEmpi_perf_test(comm, npow, output_unit)

Tests the MPI library

Arguments:
INTEGER,
INTENT(in)
:: comm the relevant, initialized communicator
INTEGER,
INTENT(in)
:: npow number of sizes to test, 10**1 .. 10**npow
INTEGER,
INTENT(in)
:: output_unit where to direct output

SUBROUTINEmp_abort()

globally stops all tasks this is intended to be low level, most of CP2K should call cp_abort()

SUBROUTINEmp_cart_coords(comm, rank, coords)

...

Arguments:
INTEGER,
INTENT(in)
:: comm ...
INTEGER,
INTENT(in)
:: rank ...
INTEGER,
INTENT(out)
:: coords(:) ...

SUBROUTINEmp_cart_create(comm_old, ndims, dims, pos, comm_cart)

...

Arguments:
INTEGER,
INTENT(in)
:: comm_old ...
INTEGER,
INTENT(in)
:: ndims ...
INTEGER,
INTENT(inout)
:: dims(:) ...
INTEGER,
INTENT(out)
:: pos(:) ...
INTEGER,
INTENT(out)
:: comm_cart ...

SUBROUTINEmp_cart_rank(group, pos, rank)

...

Arguments:
INTEGER,
INTENT(in)
:: group ...
INTEGER,
INTENT(in)
:: pos(:) ...
INTEGER,
INTENT(out)
:: rank ...

SUBROUTINEmp_cart_sub(comm, rdim, sub_comm)

...

Arguments:
INTEGER,
INTENT(in)
:: comm ...
LOGICAL,
INTENT(in)
:: rdim(:) ...
INTEGER,
INTENT(out)
:: sub_comm ...

SUBROUTINEmp_comm_compare(comm1, comm2, res)

...

Arguments:
INTEGER,
INTENT(in)
:: comm1 ...
INTEGER,
INTENT(in)
:: comm2 ...
INTEGER,
INTENT(out)
:: res ...

SUBROUTINEmp_comm_dup(comm1, comm2)

...

Arguments:
INTEGER,
INTENT(in)
:: comm1 ...
INTEGER,
INTENT(out)
:: comm2 ...

SUBROUTINEmp_comm_free(comm)

...

Arguments:
INTEGER,
INTENT(inout)
:: comm ...

SUBROUTINEmp_comm_split(comm, sub_comm, ngroups, group_distribution, subgroup_min_size, n_subgroups, group_partition, stride)

splits the given communicator in group in subgroups trying to organize them in a way that the communication within each subgroup is efficent (but not necessarily the comunication between subgroups)

Arguments:
INTEGER,
INTENT(in)
:: comm the mpi communicator that you want to split
INTEGER,
INTENT(out)
:: sub_comm the communicator for the subgroup (created, needs to be freed later)
INTEGER,
INTENT(out)
:: ngroups actual number of groups
INTEGER
:: group_distribution(0:) input : allocated with array with the nprocs entries (0 .. nprocs-1)
INTEGER,
INTENT(in),
OPTIONAL
:: subgroup_min_size the minimum size of the subgroup
INTEGER,
INTENT(in),
OPTIONAL
:: n_subgroups the number of subgroups wanted
INTEGER,
OPTIONAL
:: group_partition(0:) n_subgroups sized array containing the number of cpus wanted per group. should match the total number of cpus (only used if present and associated) (0..ngroups-1)
INTEGER,
OPTIONAL
:: stride create groups using a stride (default=1) through the ranks of the comm to be split.

SUBROUTINEmp_comm_split_direct(comm, sub_comm, color, key)

the direct way to split a communicator each color is a sub_comm, the rank order is accoring to the order in the orig comm

Arguments:
INTEGER,
INTENT(in)
:: comm ...
INTEGER,
INTENT(out)
:: sub_comm ...
INTEGER,
INTENT(in)
:: color ...
INTEGER,
INTENT(in),
OPTIONAL
:: key ...

SUBROUTINEmp_dims_create(nodes, dims)

...

Arguments:
INTEGER,
INTENT(in)
:: nodes ...
INTEGER,
INTENT(inout)
:: dims(:) ...

SUBROUTINEmp_file_close(fh)

Closes a file

Arguments:
INTEGER,
INTENT(inout)
:: fh file handle (file storage unit)

SUBROUTINEmp_file_get_size(fh, file_size)

Returns the file size

Arguments:
INTEGER,
INTENT(in)
:: fh file handle (file storage unit)
INTEGER(file_offset),
INTENT(out)
:: file_size the file size

SUBROUTINEmp_file_open(groupid, fh, filepath, amode_status, info)

Opens a file

Arguments:
INTEGER,
INTENT(in)
:: groupid message passing environment identifier
INTEGER,
INTENT(out)
:: fh file handle (file storage unit)
CHARACTER(*),
INTENT(in)
:: filepath path to the file
INTEGER,
INTENT(in)
:: amode_status access mode
INTEGER,
INTENT(in),
OPTIONAL
:: info info object

SUBROUTINEmp_file_read_all_chv(fh, msglen, ndims, buffer, type_descriptor)

(parallel) Collective, blocking read of a character array from a file. File access pattern

Arguments:
INTEGER,
INTENT(in)
:: fh ...
INTEGER,
INTENT(in)
:: msglen ...
INTEGER,
INTENT(in)
:: ndims ...
CHARACTER(msglen)
:: buffer(ndims) ...
INTENT(in),
OPTIONAL
:: type_descriptor ...

SUBROUTINEmp_file_type_free(type_descriptor)

Releases the type used for MPI I/O

Arguments:
:: type_descriptor the container for the MPI type

FUNCTIONmp_file_type_hindexed_make_chv(count, lengths, displs)

Creates an indexed MPI type for arrays of strings using bytes for spacing (hindexed type)

Return Value ::
container holding the created type
Arguments:
INTEGER,
INTENT(in)
:: count number of array blocks to read
INTEGER,
INTENT(in),
TARGET
:: lengths(1:count) lengths of each array block
INTEGER(file_offset),
INTENT(in),
TARGET
:: displs(1:count) byte offsets for array blocks

SUBROUTINEmp_file_type_set_view_chv(fh, offset, type_descriptor)

Uses a previously created indexed MPI character type to tell the MPI processes how to partition (set_view) an opened file

Arguments:
INTEGER,
INTENT(in)
:: fh the file handle associated with the input file
INTEGER(file_offset),
INTENT(in)
:: offset global offset determing where the relevant data begins
:: type_descriptor container for the MPI type

SUBROUTINEmp_get_library_version(version, resultlen)

Get Version of the MPI Library (MPI 3)

Arguments:
CHARACTER(*),
INTENT(out)
:: version Version of the library, declared as CHARACTER(LEN=mp_max_library_version_string)
INTEGER,
INTENT(out)
:: resultlen Length (in printable characters) of the result returned in version (integer)

SUBROUTINEmp_isync(group, request)

synchronizes with a barrier a given group of mpi tasks

Arguments:
INTEGER,
INTENT(in)
:: group mpi communicator
INTEGER,
INTENT(out)
:: request ...

SUBROUTINEmp_perf_env_release(perf_env)

...

Arguments:
POINTER
:: perf_env ...

SUBROUTINEmp_perf_env_retain(perf_env)

...

Arguments:
POINTER
:: perf_env ...

SUBROUTINEmp_probe(source, comm, tag)

probes for an incomming message with any tag

Arguments:
INTEGER
:: source the source of the possible incomming message, if MP_ANY_SOURCE it is a blocking one and return value is the source of the next incomming message if source is a different value it is a non-blocking probe retuning MP_ANY_SOURCE if there is no incomming message
INTEGER,
INTENT(in)
:: comm the communicator
INTEGER,
INTENT(out)
:: tag the tag of the incomming message

SUBROUTINEmp_rank_compare(comm1, comm2, rank)

...

Arguments:
INTEGER,
INTENT(in)
:: comm1 ...
INTEGER,
INTENT(in)
:: comm2 ...
INTEGER,
INTENT(out)
:: rank(:) ...

SUBROUTINEmp_reordering(mp_comm, mp_new_comm, ranks_order)

re-create the system default communicator with a different MPI rank order

Arguments:
INTEGER,
INTENT(in)
:: mp_comm handle of the default communicator
INTEGER,
INTENT(out)
:: mp_new_comm ...
INTEGER
:: ranks_order(:) ...

SUBROUTINEmp_sync(group)

synchronizes with a barrier a given group of mpi tasks

Arguments:
INTEGER,
INTENT(in)
:: group mpi communicator

FUNCTIONmp_type_indexed_make_c(count, lengths, displs)

...

Return Value ::
Arguments:
INTEGER,
INTENT(in)
:: count ...
INTEGER,
INTENT(in),
TARGET
:: lengths(1:count) ...
INTEGER,
INTENT(in),
TARGET
:: displs(1:count) ...

FUNCTIONmp_type_indexed_make_d(count, lengths, displs)

...

Return Value ::
Arguments:
INTEGER,
INTENT(in)
:: count ...
INTEGER,
INTENT(in),
TARGET
:: lengths(1:count) ...
INTEGER,
INTENT(in),
TARGET
:: displs(1:count) ...

FUNCTIONmp_type_indexed_make_r(count, lengths, displs)

...

Return Value ::
Arguments:
INTEGER,
INTENT(in)
:: count ...
INTEGER,
INTENT(in),
TARGET
:: lengths(1:count) ...
INTEGER,
INTENT(in),
TARGET
:: displs(1:count) ...

FUNCTIONmp_type_indexed_make_z(count, lengths, displs)

...

Return Value ::
Arguments:
INTEGER,
INTENT(in)
:: count ...
INTEGER,
INTENT(in),
TARGET
:: lengths(1:count) ...
INTEGER,
INTENT(in),
TARGET
:: displs(1:count) ...

SUBROUTINEmp_type_size(type_descriptor, type_size)

Returns the size of a data type in bytes

Arguments:
INTENT(in)
:: type_descriptor data type
INTEGER,
INTENT(out)
:: type_size size of the data type

SUBROUTINEmp_wait(request)

waits for completion of the given request

Arguments:
INTEGER,
INTENT(inout)
:: request ...

SUBROUTINEmp_waitany(requests, completed)

waits for completion of any of the given requests

Arguments:
INTEGER,
INTENT(inout)
:: requests(:) ...
INTEGER,
INTENT(out)
:: completed ...

SUBROUTINEmp_win_flush_all(win)

Window flush

Arguments:
INTEGER,
INTENT(in)
:: win ...

SUBROUTINEmp_win_free(win)

Window free

Arguments:
INTEGER,
INTENT(inout)
:: win ...

SUBROUTINEmp_win_lock_all(win)

Window lock

Arguments:
INTEGER,
INTENT(inout)
:: win ...

SUBROUTINEmp_win_unlock_all(win)

Window lock

Arguments:
INTEGER,
INTENT(inout)
:: win ...

SUBROUTINEmp_world_finalize()

finalizes the system default communicator

SUBROUTINEmp_world_init(mp_comm)

initializes the system default communicator

Arguments:
INTEGER,
INTENT(out)
:: mp_comm handle of the default communicator

SUBROUTINErm_mp_perf_env()

...

SUBROUTINEmp_allgather_i(msgout, msgin, gid)

Gathers a datum from all processes and all processes receive the same data

Arguments:
INTEGER(int_4),
INTENT(in)
:: msgout Datum to send
INTEGER(int_4),
INTENT(out)
:: msgin(:) Received data
INTEGER,
INTENT(in)
:: gid Message passing environment identifier

SUBROUTINEmp_allgather_i2(msgout, msgin, gid)

Gathers a datum from all processes and all processes receive the same data

Arguments:
INTEGER(int_4),
INTENT(in)
:: msgout Datum to send
INTEGER(int_4),
INTENT(out)
:: msgin(:,:) Received data
INTEGER,
INTENT(in)
:: gid Message passing environment identifier

SUBROUTINEmp_allgather_i12(msgout, msgin, gid)

Gathers vector data from all processes and all processes receive the same data

Arguments:
INTEGER(int_4),
INTENT(in)
:: msgout(:) Rank-1 data to send
INTEGER(int_4),
INTENT(out)
:: msgin(:,:) Received data
INTEGER,
INTENT(in)
:: gid Message passing environment identifier

SUBROUTINEmp_allgather_i23(msgout, msgin, gid)

Gathers matrix data from all processes and all processes receive the same data