![]() |
(git:b77b4be)
|
Data Types | |
type | submatrix_dissection_type |
Functions/Subroutines | |
subroutine | submatrix_get_relevant_sm_columns (this, sm_id, first, last) |
determine which columns of the submatrix are relevant for the result matrix | |
The method is extended to minimize the required data transfers and floating-point operations under the assumption that non-zero blocks of the matrix are close to its diagonal.
Submatrices can be constructed not for single columns of the matrix but for a set of w consecutive submatrices. The underlying assumption is that columns next to each other have relatively similar occupation patterns, i.e., constructing a submatrix from columns x and x+1 should not lead to a much bigger submatrix than contructing it only from column x.
The construction of the submatrices requires communication between all ranks. It is crucial to implement this communication as efficient as possible, i.e., data should only ever be transferred once between two ranks and message sizes need to be sufficiently large to utilize the communication bandwidth. To achieve this, we communicate the required blocks for all submatrices at once and copy them to large buffers before transmitting them via MPI.
Note on multi-threading: Submatrices can be constructed and processed in parallel by multiple threads. However, generate_submatrix, get_sm_ids_for_rank and copy_resultcol are the only thread-safe routines in this module. All other routines involve MPI communication or operate on common, non-protected data and are hence not thread-safe.
TODO:
subroutine submatrix_dissection::submatrix_get_relevant_sm_columns | ( | class(submatrix_dissection_type), intent(in) | this, |
integer, intent(in) | sm_id, | ||
integer, intent(out) | first, | ||
integer, intent(out) | last | ||
) |
determine which columns of the submatrix are relevant for the result matrix
this | - object of class submatrix_dissection_type |
sm_id | - id of the submatrix |
first | - first column of submatrix that is relevant |
last | - last column of submatrix that is relevant |
Definition at line 100 of file submatrix_dissection.F.