Documentation for module distribution_2d_types

stores a mapping of 2D info (e.g. matrix) on a 2D processor distribution (i.e. blacs grid) where cpus in the same blacs row own the same rows of the 2D info (and similar for the cols)

source: distribution_2d_types.F
Loading...

public Types:

distribution_2d_type
distributes pairs on a 2d grid of processors

public Subroutines/Functions:

initializes the distribution_2d
returns various attributes about the distribution_2d
...
...
writes out the given distribution

public Types:

TYPE :: distribution_2d_type

distributes pairs on a 2d grid of processors


INTEGER,
DIMENSION(:,:), POINTER :: row_distribution (i): processor row that owns the row i
INTEGER,
DIMENSION(:,:), POINTER :: col_distribution (i): processor col that owns the col i
INTEGER
:: n_row_distribution nuber of global rows
INTEGER
:: n_col_distribution number of global cols
INTEGER,
DIMENSION(:), POINTER :: n_local_rows (ikind): number of local rows of kind ikind
INTEGER,
DIMENSION(:), POINTER :: n_local_cols (ikind): number of local cols of kind ikind
DIMENSION(:), POINTER :: local_rows (ikind)%array: ordered global indexes of the local rows of kind ikind (might be oversized)
DIMENSION(:), POINTER :: local_cols (ikind)%array: ordered global indexes of the local cols of kind ikind (might be oversized)
INTEGER,
DIMENSION(:), POINTER :: flat_local_rows ordered global indexes of the local rows (allocated on request, might be oversized)
INTEGER,
DIMENSION(:), POINTER :: flat_local_cols ordered global indexes of the local cols (allocated on request, might be oversized)
POINTER :: blacs_env parallel environment in which the pairs are distributed
INTEGER
:: ref_count reference count (see doc/ReferenceCounting.html)
INTEGER
:: id_nr identification number (unique)

SUBROUTINEdistribution_2d_create(distribution_2d, blacs_env, local_rows_ptr, n_local_rows, local_cols_ptr, row_distribution_ptr, col_distribution_ptr, n_local_cols, n_row_distribution, n_col_distribution)

initializes the distribution_2d

Arguments:
POINTER
:: distribution_2d ...
POINTER
:: blacs_env ...
OPTIONAL, POINTER
:: local_rows_ptr(:) ...
INTEGER,
INTENT(in),
OPTIONAL
:: n_local_rows(:) ...
OPTIONAL, POINTER
:: local_cols_ptr(:) ...
INTEGER,
OPTIONAL, POINTER
:: row_distribution_ptr(:,:) 2D array, first is atom to processor 2nd is atom to cluster
INTEGER,
OPTIONAL, POINTER
:: col_distribution_ptr(:,:) ...
INTEGER,
INTENT(in),
OPTIONAL
:: n_local_cols(:) ...
INTEGER,
INTENT(in),
OPTIONAL
:: n_row_distribution ...
INTEGER,
INTENT(in),
OPTIONAL
:: n_col_distribution ...

SUBROUTINEdistribution_2d_get(distribution_2d, row_distribution, col_distribution, n_row_distribution, n_col_distribution, n_local_rows, n_local_cols, local_rows, local_cols, flat_local_rows, flat_local_cols, n_flat_local_rows, n_flat_local_cols, blacs_env, id_nr)

returns various attributes about the distribution_2d

Arguments:
POINTER
:: distribution_2d the object you want info about
INTEGER,
OPTIONAL, POINTER
:: row_distribution(:,:) ...
INTEGER,
OPTIONAL, POINTER
:: col_distribution(:,:) ...
INTEGER,
INTENT(out),
OPTIONAL
:: n_row_distribution ...
INTEGER,
INTENT(out),
OPTIONAL
:: n_col_distribution ...
INTEGER,
OPTIONAL, POINTER
:: n_local_rows(:) ...
INTEGER,
OPTIONAL, POINTER
:: n_local_cols(:) ...
OPTIONAL, POINTER
:: local_rows(:) ...
OPTIONAL, POINTER
:: local_cols(:) ...
INTEGER,
OPTIONAL, POINTER
:: flat_local_rows(:) ...
INTEGER,
OPTIONAL, POINTER
:: flat_local_cols(:) ...
INTEGER,
INTENT(out),
OPTIONAL
:: n_flat_local_rows ...
INTEGER,
INTENT(out),
OPTIONAL
:: n_flat_local_cols ...
OPTIONAL, POINTER
:: blacs_env ...
INTEGER,
INTENT(out),
OPTIONAL
:: id_nr ...

SUBROUTINEdistribution_2d_release(distribution_2d)

...

Arguments:
POINTER
:: distribution_2d ...

SUBROUTINEdistribution_2d_retain(distribution_2d)

...

Arguments:
POINTER
:: distribution_2d ...

SUBROUTINEdistribution_2d_write(distribution_2d, unit_nr, local, long_description)

writes out the given distribution

Arguments:
POINTER
:: distribution_2d the distribution to write out
INTEGER,
INTENT(in)
:: unit_nr the unit to write to
LOGICAL,
INTENT(in),
OPTIONAL
:: local if the unit is local to to each processor (otherwise only the processor with logger%para_env%source== logger%para_env%mepos writes), defaults to false.
LOGICAL,
INTENT(in),
OPTIONAL
:: long_description if a long description should be given, defaults to false