Utility to handle MPI communications
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(MPI_Datatype), | public | :: | COMPLEX_DP | ||||
type(MPI_Datatype), | public | :: | COMPLEX_SP | ||||
type(MPI_Datatype), | public | :: | COMPLEX_WP | ||||
type(MPI_Datatype), | public | :: | INT8 | ||||
type(MPI_Datatype), | public | :: | INTEGER | ||||
type(MPI_Datatype), | public | :: | LOGICAL | ||||
type(MPI_Datatype), | public | :: | REAL_DP | ||||
type(MPI_Datatype), | public | :: | REAL_SP | ||||
type(MPI_Datatype), | public | :: | REAL_WP | ||||
type(communicators), | public | :: | comm |
Communicators |
|||
type(MPI_Info), | public | :: | mpi_info | ||||
character(len=str8), | public | :: | mpiiofs | ||||
integer, | public | :: | np(3) |
Number of ranks in each direction |
|||
integer, | public | :: | nproc |
Total number of ranks |
|||
integer, | public | :: | npx |
Number of ranks in the x direction |
|||
integer, | public | :: | npy |
Number of ranks in the y direction |
|||
integer, | public | :: | npz |
Number of ranks in the z direction |
|||
type(patch), | public | :: | rank |
Rank and grid decompostion info |
MPI communicators
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(MPI_Comm), | public | :: | g |
Grid communicator |
|||
type(MPI_Comm), | public | :: | w |
Default World communicator |
Contains MPI ranks of current process and neighboring ones
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | L(3) |
Rank of left neighbor |
|||
integer, | public | :: | R(3) |
Rank of right neighbor |
|||
integer, | public | :: | dir(3) |
Process cooridnate in each direction |
|||
integer, | public | :: | mine | = | 1 |
Rank of this process |
|
integer, | public | :: | root | = | 1 |
Rank of root |
Returns the elapsed time since an arbitrary origin. Note that different ranks return different WTIMEs
Set the MPI file system hints
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
character(len=*), | intent(in) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:,:) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:,:,:) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in), | dimension(:) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | dimension(:,:) | :: | A |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in), | dimension(:,:,:) | :: | A |
Finalize MPI and the parallel environment
Initialize the parallel environement
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in) | :: | A | |||
integer, | intent(out) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:) | :: | A | ||
integer, | intent(out), | dimension(:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in) | :: | A | |||
real(kind=WP), | intent(out) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=wp), | intent(in), | dimension(:) | :: | A | ||
real(kind=wp), | intent(out), | dimension(:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in) | :: | A | |||
integer, | intent(out) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:) | :: | A | ||
integer, | intent(out), | dimension(:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in) | :: | A | |||
real(kind=WP), | intent(out) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=wp), | intent(in), | dimension(:) | :: | A | ||
real(kind=wp), | intent(out), | dimension(:) | :: | B |
Subroutine to gracefully stop the execution with an optional error message.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
character(len=*), | intent(in), | optional | :: | msg |
Error message |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in) | :: | A | |||
integer, | intent(out) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:) | :: | A | ||
integer, | intent(out), | dimension(:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:,:) | :: | A | ||
integer, | intent(out), | dimension(:,:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
integer, | intent(in), | dimension(:,:,:) | :: | A | ||
integer, | intent(out), | dimension(:,:,:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in) | :: | A | |||
real(kind=WP), | intent(out) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in), | dimension(:) | :: | A | ||
real(kind=WP), | intent(out), | dimension(:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in), | dimension(:,:) | :: | A | ||
real(kind=WP), | intent(out), | dimension(:,:) | :: | B |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
real(kind=WP), | intent(in), | dimension(:,:,:) | :: | A | ||
real(kind=WP), | intent(out), | dimension(:,:,:) | :: | B |
Builds a Cartesian topolgy with MPI
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(parallel_obj), | intent(inout) | :: | this |
Parallel object |
||
logical, | intent(in) | :: | is_periodic(3) |
Periodicity |
||
integer, | intent(in) | :: | Ng(3) |
|
||
integer, | intent(in), | optional | :: | Nb(3) |
Explicit block decomposition |