![]() |
(git:6344619)
|
Redistribution of full matrices and distributed arrays. More...
Functions/Subroutines | |
| subroutine, public | cp_fm_permute (fm_out, fm_in, beta, nrow_secidx_in, ncol_secidx_in, nrow_secidx_out, ncol_secidx_out, reordering, row_offset, col_offset, first_index, last_index) |
| Add a permuted or restricted four-index tensor stored as a full matrix. | |
| subroutine, public | cp_array_to_fm (mat2d, fm_struct, my_start_row, my_end_row, my_start_col, my_end_col, fm_mat, do_release_mat) |
| Assemble a full matrix from distributed rectangular array tiles. | |
| subroutine, public | cp_fm_to_array (mat2d, my_start_row, my_end_row, my_start_col, my_end_col, fm_mat) |
| Extract distributed rectangular array tiles from a full matrix. | |
| subroutine, public | cp_fm_to_replicated_array (fm_s, array_s, weight, add) |
| ... | |
| subroutine, public | cp_array_columns_to_fm (matrix, array, para_env, first_col, last_col, nrows) |
| Redistribute a column-distributed array into an existing full matrix. | |
Redistribution of full matrices and distributed arrays.
| subroutine, public cp_fm_redistribution::cp_fm_permute | ( | type(cp_fm_type), intent(inout) | fm_out, |
| type(cp_fm_type), intent(in) | fm_in, | ||
| real(kind=dp), intent(in) | beta, | ||
| integer, intent(in) | nrow_secidx_in, | ||
| integer, intent(in) | ncol_secidx_in, | ||
| integer, intent(in) | nrow_secidx_out, | ||
| integer, intent(in) | ncol_secidx_out, | ||
| integer, dimension(4), intent(in) | reordering, | ||
| integer, intent(in), optional | row_offset, | ||
| integer, intent(in), optional | col_offset, | ||
| integer, dimension(4), intent(in), optional | first_index, | ||
| integer, dimension(4), intent(in), optional | last_index ) |
Add a permuted or restricted four-index tensor stored as a full matrix.
| fm_out | destination; entries outside the mapped region remain unchanged |
| fm_in | source; each matrix coordinate encodes two tensor indices |
| beta | factor multiplying the source contribution |
| nrow_secidx_in | size of the second tensor index in source rows |
| ncol_secidx_in | size of the second tensor index in source columns |
| nrow_secidx_out | stride of the first tensor index in destination rows |
| ncol_secidx_out | stride of the first tensor index in destination columns |
| reordering | permutation of the four source indices |
| row_offset | zero-based destination row offset |
| col_offset | zero-based destination column offset |
| first_index | first retained value of each source index (default: one) |
| last_index | last retained value of each source index (default: full extent) |
Definition at line 48 of file cp_fm_redistribution.F.
| subroutine, public cp_fm_redistribution::cp_array_to_fm | ( | real(kind=dp), dimension(:, :), intent(inout), allocatable | mat2d, |
| type(cp_fm_struct_type), pointer | fm_struct, | ||
| integer, intent(in) | my_start_row, | ||
| integer, intent(in) | my_end_row, | ||
| integer, intent(in) | my_start_col, | ||
| integer, intent(in) | my_end_col, | ||
| type(cp_fm_type), intent(out) | fm_mat, | ||
| logical, intent(in), optional | do_release_mat ) |
Assemble a full matrix from distributed rectangular array tiles.
| mat2D | local tile; tiles on the FM communicator must not overlap |
| fm_struct | structure defining the destination layout and communicator |
| my_start_row | first global row of the tile |
| my_end_row | last global row of the tile |
| my_start_col | first global column of the tile |
| my_end_col | last global column of the tile |
| fm_mat | destination; entries outside the supplied tiles are zero |
| do_release_mat | whether to deallocate the input tile (default: true) |
Definition at line 151 of file cp_fm_redistribution.F.
| subroutine, public cp_fm_redistribution::cp_fm_to_array | ( | real(kind=dp), dimension(:, :), intent(out), allocatable | mat2d, |
| integer, intent(in) | my_start_row, | ||
| integer, intent(in) | my_end_row, | ||
| integer, intent(in) | my_start_col, | ||
| integer, intent(in) | my_end_col, | ||
| type(cp_fm_type), intent(inout) | fm_mat ) |
Extract distributed rectangular array tiles from a full matrix.
| mat2D | output tile, allocated here |
| my_start_row | first global row requested by this rank |
| my_end_row | last global row requested by this rank |
| my_start_col | first global column requested by this rank |
| my_end_col | last global column requested by this rank |
| fm_mat | source, released on return |
Definition at line 217 of file cp_fm_redistribution.F.
| subroutine, public cp_fm_redistribution::cp_fm_to_replicated_array | ( | type(cp_fm_type), dimension(:) | fm_s, |
| real(kind=dp), dimension(:, :, :), allocatable | array_s, | ||
| real(kind=dp), optional | weight, | ||
| logical, optional | add ) |
...
| fm_S | ... |
| array_S | ... |
| weight | ... |
| add | ... |
Definition at line 281 of file cp_fm_redistribution.F.
| subroutine, public cp_fm_redistribution::cp_array_columns_to_fm | ( | type(cp_fm_type), intent(in) | matrix, |
| real(kind=dp), dimension(:, :), intent(in), allocatable | array, | ||
| type(mp_para_env_type), intent(in) | para_env, | ||
| integer, intent(in) | first_col, | ||
| integer, intent(in) | last_col, | ||
| integer, intent(in) | nrows ) |
Redistribute a column-distributed array into an existing full matrix.
| matrix | destination; cleared before filling the received entries |
| array | local columns, with global rows and a one-based local column index |
| para_env | communicator covering all source and destination ranks |
| first_col | first global column held locally |
| last_col | last global column held locally |
| nrows | number of source rows to copy |
Definition at line 353 of file cp_fm_redistribution.F.