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. |
Copy one permutation to another in a safe way.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Permutation_t), | intent(in) | :: | permA |
Permutation to copy |
||
type(Permutation_t), | intent(inout) | :: | permB |
permB = permA |
Destruct a permutation object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(Permutation_t), | intent(inout) | :: | this |
The permutation to destruct. |