Module for load balancing the matrix multiplication calculation.
A data structure for storing permutations.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | DIMENSION(:), ALLOCATABLE | :: | index_lookup | For each row/column, what index does it correspond to in the unperturbed matrix. |
||
integer, | public, | DIMENSION(:), ALLOCATABLE | :: | reverse_index_lookup | For each row/column in the unperturbed, what index does it correspond to in this matrix. |
Constructs a permutation that preserves the original order.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Permutation_t), | intent(inout) | :: | this | The permutation to construct. |
||
integer, | intent(in) | :: | matrix_dimension | The dimension of the matrix. |
Constructs a permutation that reverses the original order.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Permutation_t), | intent(inout) | :: | this | A permutation that reverses the original order. |
||
integer, | intent(in) | :: | matrix_dimension | The size of the matrix. |
Constructs a permutation that has a random order. Implements Knuth shuffle.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Permutation_t), | intent(inout) | :: | this | A permutation that reverses the original order. |
||
integer, | intent(in) | :: | matrix_dimension | The size of the matrix. |
||
type(ProcessGrid_t), | intent(inout), | optional | :: | process_grid_in | A permutation should be shared amongst these processes. This is to synchronize random number across processes. |
Constructs a permutation that has a random order, but there is no permutation from beyond the actual matrix dimension.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Permutation_t), | intent(inout) | :: | this | The permutation to construct. |
||
integer, | intent(in) | :: | actual_matrix_dimension | Actual size of the matrix. |
||
integer, | intent(in) | :: | logical_matrix_dimension | Padded size of the matrix. |
||
type(ProcessGrid_t), | intent(inout), | optional | :: | process_grid_in | A permutation should be shared amongst these processes. This is to synchronize random number across processes. |
Destruct a permutation object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Permutation_t), | intent(inout) | :: | this | The permutation to destruct. |