[bugfix] multiple n_local_active_rows > 0 had to be added to ensure the correctness. For example, prepend_column or colum routines require the active rows to be strictly positive. In addition, dgemm and dtrsm and MPI_Reduce (in the first step), also require this. Setting (n_local_active_rows == 0) continue is not valid because all ranks have to participate in the tournament pivoting and other communication routines until the end.
[bugfix] when all the ranks use the same seed, the generated matrix is singular.
[optimization] analyze_pivots function is added that extracts the pivots only once per step, instead of 4 times per step. This makes the routine push_pivots_up much faster.
This PR brings the following improvements:
n_local_active_rows > 0
had to be added to ensure the correctness. For example,prepend_column
orcolum
routines require the active rows to be strictly positive. In addition,dgemm
anddtrsm
andMPI_Reduce
(in the first step), also require this. Setting(n_local_active_rows == 0) continue
is not valid because all ranks have to participate in the tournament pivoting and other communication routines until the end.analyze_pivots
function is added that extracts the pivots only once per step, instead of 4 times per step. This makes the routinepush_pivots_up
much faster.