diff --git a/master/band__to__tridiag_8h.html b/master/band__to__tridiag_8h.html index 2582c828e4..3488d56c9e 100644 --- a/master/band__to__tridiag_8h.html +++ b/master/band__to__tridiag_8h.html @@ -145,15 +145,15 @@
mat_a
is not distributed mat_a
has size (N x N)
mat_a
has blocksize (NB x NB)
mat_a
has tilesize (NB x NB)
band_size
is a divisor of mat_a.blockSize().cols()
, and band_size
>= 2
@@ -217,15 +217,15 @@ mat_a
is distributed according to grid
mat_a
has size (N x N)
mat_a
has blocksize (NB x NB)
mat_a
has tilesize (NB x NB)
band_size
is a divisor of mat_a.blockSize().cols()
, and band_size
>= 2
diff --git a/master/band__to__tridiag_8h_source.html b/master/band__to__tridiag_8h_source.html
index d774b74304..eafa399c31 100644
--- a/master/band__to__tridiag_8h_source.html
+++ b/master/band__to__tridiag_8h_source.html
@@ -92,61 +92,61 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-Functions | |
-template<Backend B, Device D, class T > | |
void | dlaf::eigensolver::internal::bt_band_to_tridiagonal (const SizeType band_size, matrix::Matrix< T, D > &mat_e, matrix::Matrix< const T, Device::CPU > &mat_hh) |
template<Backend B, Device D, class T > | |
void | dlaf::eigensolver::internal::bt_band_to_tridiagonal (const SizeType band_size, matrix::Matrix< T, D > &mat_e, matrix::Matrix< const T, Device::CPU > &mat_hh) |
-template<Backend B, Device D, class T > | |
void | dlaf::eigensolver::internal::bt_band_to_tridiagonal (comm::CommunicatorGrid grid, const SizeType band_size, matrix::Matrix< T, D > &mat_e, matrix::Matrix< const T, Device::CPU > &mat_hh) |
template<Backend B, Device D, class T > | |
void | dlaf::eigensolver::internal::bt_band_to_tridiagonal (comm::CommunicatorGrid grid, const SizeType band_size, matrix::Matrix< T, D > &mat_e, matrix::Matrix< const T, Device::CPU > &mat_hh) |
void dlaf::eigensolver::internal::bt_band_to_tridiagonal | +( | +comm::CommunicatorGrid | +grid, | +
+ | + | const SizeType | +band_size, | +
+ | + | matrix::Matrix< T, D > & | +mat_e, | +
+ | + | matrix::Matrix< const T, Device::CPU > & | +mat_hh | +
+ | ) | ++ |
Eigenvalue back-transformation implementation, which applies the inverse of the transformation used to get a tridiagonal matrix from a band one.
+It computes E -= V T V* E, applying to a general matrix E the inverse of the transformation described by the reflectors in V (block-wise, so T represents the T factor which embeds the information about taus), which are the ones used to transform a band matrix to a tridiagonal matrix.
+In particular, V and T are obtained using data about reflectors and taus passed via mat_hh
where they are stored using following compact representation
compact extended AT BT CT DT 1 0 0 0 A1 B1 C1 D1 A1 1 0 0 A2 B2 C2 D2 A2 B1 1 0 A3 B3 C3 D3 A3 B2 C1 1 0 B3 C2 D1 0 0 C3 D2 0 0 0 D3
+where A, B, C and D refers to distinct reflectors, with their components numbered and their taus identified by the letter T.
+mat_hh | matrix containing reflectors together with taus (compact form see representation above) |
mat_hh
is distributed according to grid
mat_hh
has size (N x N) mat_hh
has blocksize (NB x NB) mat_hh
has tilesize (NB x NB)mat_e | matrix to which the inverse transformation is applied to |
mat_e
is distributed according to grid
mat_e
has size (N x M) mat_e
has blocksize (NB x MB) mat_e
has tilesize (NB x MB)band_size | size of the reflectors (normal one, not constrained by any matrix size limit) |
band_size
is a divisor of mat_hh.blockSize().cols()
void dlaf::eigensolver::internal::bt_band_to_tridiagonal | +( | +const SizeType | +band_size, | +
+ | + | matrix::Matrix< T, D > & | +mat_e, | +
+ | + | matrix::Matrix< const T, Device::CPU > & | +mat_hh | +
+ | ) | ++ |
Eigenvalue back-transformation implementation on local memory, which applies the inverse of the transformation used to get a tridiagonal matrix from a band one.
+It computes E -= V T V* E, applying to a general matrix E the inverse of the transformation described by the reflectors in V (block-wise, so T represents the T factor which embeds the information about taus), which are the ones used to transform a band matrix to a tridiagonal matrix.
+In particular, V and T are obtained using data about reflectors and taus passed via mat_hh
where they are stored using following compact representation
compact extended AT BT CT DT 1 0 0 0 A1 B1 C1 D1 A1 1 0 0 A2 B2 C2 D2 A2 B1 1 0 A3 B3 C3 D3 A3 B2 C1 1 0 B3 C2 D1 0 0 C3 D2 0 0 0 D3
+where A, B, C and D refers to distinct reflectors, with their components numbered and their taus identified by the letter T.
+mat_hh | matrix containing reflectors together with taus (compact form see representation above) |
mat_hh
is not distributed mat_hh
has size (N x N) mat_hh
has blocksize (NB x NB) mat_hh
has tilesize (NB x NB)mat_e | matrix to which the inverse transformation is applied to |
mat_e
is not distributed mat_e
has size (N x M) mat_e
has blocksize (NB x MB) mat_e
has tilesize (NB x MB)band_size | size of the reflectors (normal one, not constrained by any matrix size limit) |
band_size
is a divisor of mat_hh.blockSize().cols()
mat_c | contains the (m x n) matrix C (blocksize (mb x nb)), while on exit it contains Q C. |
mat_v | is (m x m) matrix with blocksize (mb x mb), which contains the Householder reflectors. The j-th HH reflector is v_j = (1, V(mb + j : n, j)). |
mat_taus | is the tau vector as returned by reductionToBand. The j-th element is the scaling factor for the j-th HH tranformation. |
mat_c | contains the (m x n) matrix C (blocksize (mb x nb)), while on exit it contains Q C |
mat_c
is distributed according to grid
mat_c
has blocksize (NB x NB) mat_c
has tilesize (NB x NB)mat_v | is (m x m) matrix with blocksize (mb x mb), which contains the Householder reflectors. The j-th HH reflector is v_j = (1, V(mb + j : n, j)). |
mat_v
is distributed according to grid
mat_v
has blocksize (NB x NB)
mat_v
has tilesize (NB x NB)mat_taus | is the tau vector as returned by reductionToBand. The j-th element is the scaling factor for the j-th HH tranformation. |
mat_c | contains the (m x n) matrix C (blocksize (mb x nb)), while on exit it contains Q C. |
mat_v | is (m x m) matrix with blocksize (mb x mb), which contains the Householder reflectors. The j-th HH reflector is v_j = (1, V(mb + j : n, j)). |
mat_taus | is the tau vector as returned by reductionToBand. The j-th element is the scaling factor for the j-th HH tranformation. |
mat_c
is not distributed mat_c
has blocksize (NB x NB)
mat_c
has tilesize (NB x NB)mat_v | is (m x m) matrix with blocksize (mb x mb), which contains the Householder reflectors. The j-th HH reflector is v_j = (1, V(mb + j : n, j)). |
mat_v
is not distributed mat_v
has blocksize (NB x NB)
+mat_v
has tilesize (NB x NB)mat_taus | is the tau vector as returned by reductionToBand. The j-th element is the scaling factor for the j-th HH tranformation. |
uplo | specifies if upper or lower triangular part of mat will be referenced | |
mat | contains the Hermitian matrix A | |
uplo | specifies if upper or lower triangular part of mat will be referenced | |
[in,out] | mat | contains the Hermitian matrix A |
mat
is not distributed mat
has size (N x N) mat
has blocksize (NB x NB) mat
has tilesize (NB x NB) uplo | specifies if upper or lower triangular part of mat will be referenced | |
mat | contains the Hermitian matrix A | |
eigenvalues | is a N x 1 matrix which on output contains the eigenvalues | |
eigenvectors | is a N x N matrix which on output contains the eigenvectors | |
uplo | specifies if upper or lower triangular part of mat will be referenced | |
[in,out] | mat | contains the Hermitian matrix A |
mat
is not distributed mat
has size (N x N) mat
has blocksize (NB x NB) mat
has tilesize (NB x NB)[out] | eigenvalues | contains the eigenvalues |
eigenvalues
is not distributed eigenvalues
has size (N x 1) eigenvalues
has blocksize (NB x 1) eigenvalues
has tilesize (NB x 1)[out] | eigenvectors | contains the eigenvectors |
eigenvectors
is not distributed eigenvectors
has size (N x N) eigenvectors
has blocksize (NB x NB) eigenvectors
has tilesize (NB x NB) grid | is the communicator grid on which the matrix mat has been distributed, | |
uplo | specifies if upper or lower triangular part of mat will be referenced | |
mat | contains the Hermitian matrix A | |
grid | is the communicator grid on which the matrix mat has been distributed | |
uplo | specifies if upper or lower triangular part of mat will be referenced | |
[in,out] | mat | contains the Hermitian matrix A |
mat
is distributed according to grid
mat
has size (N x N) mat
has blocksize (NB x NB) mat
has tilesize (NB x NB) grid | is the communicator grid on which the matrix mat has been distributed, | |
uplo | specifies if upper or lower triangular part of mat will be referenced | |
mat | contains the Hermitian matrix A | |
eigenvalues | is a N x 1 matrix which on output contains the eigenvalues | |
eigenvectors | is a N x N matrix which on output contains the eigenvectors | |
grid | is the communicator grid on which the matrix mat has been distributed | |
uplo | specifies if upper or lower triangular part of mat will be referenced | |
[in,out] | mat | contains the Hermitian matrix A |
mat
is distributed according to grid
mat
has size (N x N) mat
has blocksize (NB x NB) mat
has tilesize (NB x NB)[out] | eigenvalues | contains the eigenvalues |
eigenvalues
is stored on all ranks eigenvalues
has size (N x 1) eigenvalues
has blocksize (NB x 1) eigenvalues
has tilesize (NB x 1)[out] | eigenvectors | contains the eigenvectors |
eigenvectors
is distributed according to grid
eigenvectors
has size (N x N) eigenvectors
has blocksize (NB x NB) eigenvectors
has tilesize (NB x NB) uplo | specifies if the elements of the Hermitian matrix to be referenced are the elements in the lower or upper triangular part, |
uplo | specifies if the elements of the Hermitian matrix to be referenced are the elements in the lower or upper triangular part, |
mat_a | on entry it contains the triangular matrix A, on exit the matrix elements are overwritten with the elements of the Cholesky factor. Only the tiles of the matrix which contain the upper or the lower triangular part (depending on the value of uplo), |
mat_a
is not distributed mat_a
has size (N x N)
mat_a
has blocksize (NB x NB)
mat_a
has tilesize (NB x NB) mat_a
is distributed according to grid
mat_a
has size (N x N)
mat_a
has blocksize (NB x NB)
mat_a
has tilesize (NB x NB)
diff --git a/master/factorization_2cholesky_8h_source.html b/master/factorization_2cholesky_8h_source.html
index 5759ff309b..c97d4c35c3 100644
--- a/master/factorization_2cholesky_8h_source.html
+++ b/master/factorization_2cholesky_8h_source.html
@@ -91,37 +91,37 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
mat_a | contains the Hermitian matrix A |
mat_a
is not distributed mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | contains the Hermitian positive definite matrix B |
mat_b
is not distributed mat_b
has size (N x N) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB) uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
mat_a | contains the Hermitian matrix A |
mat_a
is not distributed mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | contains the Hermitian positive definite matrix B |
eigenvalues | is a N x 1 matrix which on output contains the eigenvalues |
eigenvectors | is a N x N matrix which on output contains the eigenvectors |
mat_b
is not distributed mat_b
has size (N x N) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)[out] | eigenvalues | contains the eigenvalues |
eigenvalues
is not distributed eigenvalues
has size (N x 1) eigenvalues
has blocksize (NB x NB) eigenvalues
has tilesize (NB x NB)[out] | eigenvectors | contains the eigenvectors |
eigenvectors
is not distributed eigenvectors
has size (N x N) eigenvectors
has blocksize (NB x NB) eigenvectors
has tilesize (NB x NB) grid | is the communicator grid on which the matrices mat_a and mat_b have been distributed, |
uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
mat_a | contains the Hermitian matrix A |
mat_a
is distributed according to grid
mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | contains the Hermitian positive definite matrix B |
mat_b
is distributed according to grid
mat_b
has size (N x N) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB) grid | is the communicator grid on which the matrices mat_a and mat_b have been distributed, |
uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
uplo | specifies if upper or lower triangular part of mat_a and mat_b will be referenced |
mat_a | contains the Hermitian matrix A |
mat_a
is distributed according to grid
mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | contains the Hermitian positive definite matrix B |
mat_b
is distributed according to grid
mat_b
has size (N x N) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)eigenvalues | is a N x 1 matrix which on output contains the eigenvalues |
eigenvectors | is a N x N matrix which on output contains the eigenvectors |
eigenvalues
is not distributed eigenvalues
has size (N x 1) eigenvalues
has blocksize (NB x 1) eigenvalues
has tilesize (NB x 1)[out] | eigenvectors | contains the eigenvectors |
eigenvectors
is distributed according to grid
eigenvectors
has size (N x N) eigenvectors
has blocksize (NB x NB) eigenvectors
has tilesize (NB x NB) uplo | specifies if the elements of the Hermitian matrix A and the triangular matrix B to be referenced are the elements in the lower or upper triangular part, |
uplo | specifies if the elements of the Hermitian matrix A and the triangular matrix B to be referenced are the elements in the lower or upper triangular part, |
mat_a | on entry it contains the Hermitian matrix A (if A is real, the matrix is symmetric), on exit the matrix elements are overwritten with the elements of the matrix B. Only the tiles of the matrix which contain the lower triangular or the upper triangular part are accessed. |
mat_b | contains the triangular matrix. It can be lower (L) or upper (U). Only the tiles of the matrix which contain the lower triangular or the upper triangular part are accessed. Note: B should be modifiable as the diagonal tiles might be temporarly modified during the calculation. |
mat_a
is not distributed mat_a
has size (N x N)
mat_a
has blocksize (NB x NB)
mat_a
has tilesize (NB x NB)mat_b | contains the triangular matrix. It can be lower (L) or upper (U). Only the tiles of the matrix which contain the lower triangular or the upper triangular part are accessed. Note: B should be modifiable as the diagonal tiles might be temporarily modified during the calculation. |
mat_b
is not distributed mat_b
has size (N x N) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB) grid | is the communicator grid on which the matrix A has been distributed, |
uplo | specifies if the elements of the Hermitian matrix A and the triangular matrix B to be referenced are the elements in the lower or upper triangular part, |
uplo | specifies if the elements of the Hermitian matrix A and the triangular matrix B to be referenced are the elements in the lower or upper triangular part, |
mat_a | on entry it contains the Hermitian matrix A (if A is real, the matrix is symmetric), on exit the matrix elements are overwritten with the elements of the matrix B. Only the tiles of the matrix which contain the lower triangular or the upper triangular part are accessed. |
mat_b | contains the triangular matrix. It can be lower (L) or upper (U). Only the tiles of the matrix which contain the lower triangular or the upper triangular part are accessed. Note: B should be modifiable as the diagonal tiles might be temporarly modified during the calculation. |
mat_a
is distributed according to grid
mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | contains the triangular matrix. It can be lower (L) or upper (U). Only the tiles of the matrix which contain the lower triangular or the upper triangular part are accessed. Note: B should be modifiable as the diagonal tiles might be temporarily modified during the calculation. |
mat_b
is distributed according to grid
mat_b
has size (N x N)
mat_b
has blocksize (NB x NB)
mat_b
has tilesize (NB x NB) side | specifies whether A appears on the Left or on the Right of matrix B, |
uplo | specifies if the elements of the Hermitian matrix A to be referenced are the elements in the lower or upper triangular part, |
uplo | specifies if the elements of the Hermitian matrix A to be referenced are the elements in the lower or upper triangular part, |
mat_a | contains the hermitian matrix A. Only the tiles of the matrix which contain the upper or the lower triangular part which represent the Hermitian matrix (depending on the value of uplo) are accessed in read-only mode (the elements are not modified), |
mat_b
is not distributed mat_b
has size (N x M) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)mat_b | contains the matrix B accessed in read-only mode (the elements are not modified), |
mat_c | on entry it contains the matrix C, on exit the matrix elements are overwritten with the elements of the result. |
mat_b
is not distributed mat_b
has size (M x K)
+mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)mat_c | on entry it contains the matrix C, on exit the matrix elements are overwritten with the elements of the result. |
mat_b
is not distributed mat_b
has size (N x K)
mat_b
has blocksize (NB x NB)
mat_b
has tilesize (NB x NB) side | specifies whether A appears on the Left or on the Right of matrix B, |
uplo | specifies if the elements of the Hermitian matrix A to be referenced are the elements in the lower or upper triangular part, |
uplo | specifies if the elements of the Hermitian matrix A to be referenced are the elements in the lower or upper triangular part, |
mat_a | contains the hermitian matrix A. Only the tiles of the matrix which contain the upper or the lower triangular part which represent the Hermitian matrix (depending on the value of uplo) are accessed in read-only mode (the elements are not modified), |
mat_b
is distributed according to grid
mat_b
has size (N x M) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)mat_b | contains the matrix B accessed in read-only mode (the elements are not modified), |
mat_c | on entry it contains the matrix C, on exit the matrix elements are overwritten with the elements of the result. |
mat_b
is distributed according to grid
mat_b
has size (M x K)
+mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)mat_c | on entry it contains the matrix C, on exit the matrix elements are overwritten with the elements of the result. |
mat_b
is distributed according to grid
mat_b
has size (N x K)
mat_b
has blocksize (NB x NB)
mat_b
has tilesize (NB x NB) mat_a | contains the input matrix A. Only tiles whose both row and col tile coords are in the closed range [a,b] are accessed in read-only mode (elements are not modified) |
mat_a
is distributed according to grid
mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | contains the input matrix B. Only tiles whose both row and col tile coords are in the closed range [a,b] are accessed in read-only mode (elements are not modified) |
mat_b
is distributed according to grid
mat_b
has size (N x N) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)mat_c | On entry it contains the input matrix C. On exit matrix tiles in the range will be overwritten with the result, while others are left untouched. Only tiles whose both row and col tile coords are in the closed range [a,b] are accessed. |
mat_c
is distributed according to grid
mat_c
has size (N x N)
mat_c
has blocksize (NB x NB)
mat_c
has tilesize (NB x NB)
a <= b <= mat_a.nrTiles().rows()
opA | specifies the form of opA(A) to be used in the matrix multiplication: NoTrans, Trans, ConjTrans, |
opB | specifies the form of opB(B) to be used in the matrix multiplication: NoTrans, Trans, ConjTrans, |
opB | specifies the form of opB(B) to be used in the matrix multiplication: NoTrans, Trans, ConjTrans, |
mat_a | contains the input matrix A. Only tiles whose both row and col tile coords are in the closed range [a,b] are accessed in read-only mode (elements are not modified) |
mat_a
is not distributed mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | contains the input matrix B. Only tiles whose both row and col tile coords are in the closed range [a,b] are accessed in read-only mode (elements are not modified) |
mat_b
is not distributed mat_b
has size (N x N) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)mat_c | On entry it contains the input matrix C. On exit matrix tiles in the range will be overwritten with the result, while others are left untouched. Only tiles whose both row and col tile coords are in the closed range [a,b] are accessed. |
mat_c
is not distributed mat_c
has size (N x N)
mat_c
has blocksize (NB x NB)
mat_c
has tilesize (NB x NB)
a <= b <= mat_a.nrTiles().rows()
mat_a
is not distributed mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | on entry it contains the matrix B, on exit the matrix elements are overwritten with the elements of the result. |
mat_b
is not distributed mat_b
has size (N x N)
mat_b
has blocksize (NB x NB)
mat_b
has tilesize (NB x NB) mat_a
is distributed according to grid
mat_a
has size (N x N) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | on entry it contains the matrix B, on exit the matrix elements are overwritten with the elements of the result. |
mat_b
is distributed according to grid
mat_b
has size (N x N)
mat_b
has blocksize (NB x NB)
mat_b
has tilesize (NB x NB) Compute the max norm of the distributed Matrix A
(ge/sy/he)
uplo
== blas::uplo::Upper not yet implementedA.blockSize().rows() == A.blockSize().cols()
, A
is distributed according to grid
A
is distributed according to grid
, A
has blocksize (NB x NB)
A
has equal tile and block sizes, A
has tilesize (NB x NB) A
or 0 if A.size().isEmpty()
coord | is Coord::Col, a row communicator pipeline is expected, otherwise if |
is | Coord::Row a column communicator pipeline is expected. |
is | Coord::Row a column communicator pipeline is expected. |
perms | is the index map of permutations represented as a local tiled column vector. Indices are in the range [0, n) where n is the global size of the submatrix (i.e. submatrix indices are used instead of the full matrix indices). Only tiles whose row tile coords are in the range [i_begin,i_end) are accessed in read-only mode. |
perms
is not distributed perms
has blocksize (NB x MB) perms
has tilesize (NB x MB)mat_in | is the distributed input matrix. Only tiles whose both global row and col tile coords are in the range [i_begin,i_end) are accessed in readwrite-mode. |
mat_out | is the distributed output matrix. Only tiles whose both global row and col tile coords are in the range [i_begin,i_end) are accessed in readwrite-mode. |
mat_in
is distributed according to grid
mat_in
has size (N x N) mat_in
has blocksize (NB x NB) mat_in
has tilesize (NB x NB)mat_out | is the distributed output matrix. Only tiles whose both global row and col tile coords are in the range [i_begin,i_end) are accessed in readwrite-mode. |
mat_out
is distributed according to grid
mat_out
has size (N x N) mat_out
has blocksize (NB x NB) mat_out
has tilesize (NB x NB)Note: The Pipeline<> API allows to use permute() within other algorithms without having to clone communicators internally.
@@ -226,11 +255,38 @@perms | is the index map of permutations represented as a tiled column vector. Indices are in the range [0, n) where n is the size of the submatrix (i.e. the indices are local to the submatrix, they are not global). Only tiles whose row tile coords are in the range [i_begin,i_end) are accessed in read-only mode. |
perms
is not distributed perms
has blocksize (NB x MB) perms
has tilesize (NB x MB)mat_in | is the input matrix. Only tiles whose both row and col tile coords are in the range [i_begin,i_end) are accessed in read-only mode. |
mat_in
is not distributed mat_in
has size (N x N) mat_in
has blocksize (NB x NB) mat_in
has tilesize (NB x NB)mat_out | is the output matrix. Only tiles whose both row and col tile coords are in the range [i_begin,i_end) are accessed in write-only mode. |
mat_out
has size (N x N) mat_out
has blocksize (NB x NB) mat_out
has tilesize (NB x NB) grid | is the CommunicatorGrid on which mat_a is distributed |
grid | is the CommunicatorGrid on which mat_a is distributed |
mat_a | on entry it contains an Hermitian matrix, on exit it is overwritten with the band-diagonal result together with the elementary reflectors as described above. Just the tiles of the lower triangular part will be used. |
band_size | size of the band of the resulting matrix (main diagonal + band_size sub-diagonals) |
mat_a
is distributed according to grid
mat_a
has size (N x N)
grid
mat_a
has blocksize (NB x NB)
mat_a
has tilesize (NB x NB)band_size | size of the band of the resulting matrix (main diagonal + band_size sub-diagonals) |
mat_a.blockSize().rows() % band_size == 0
mat_a | on entry it contains an Hermitian matrix, on exit it is overwritten with the band-diagonal result together with the elementary reflectors. Just the tiles of the lower triangular part will be used. |
band_size | size of the band of the resulting matrix (main diagonal + band_size sub-diagonals) |
mat_a
is not distributed mat_a
has size (N x N)
mat_a
has blocksize (NB x NB)
mat_a
has tilesize (NB x NB)band_size | size of the band of the resulting matrix (main diagonal + band_size sub-diagonals) |
mat_a.blockSize()
.rows() % band_size == 0
mat_a
is not distributed mat_a
has size (N x M) mat_a
has blocksize (NB x NB) mat_a
has tilesize (NB x NB)mat_b | on entry it contains the matrix B, on exit the matrix elements are overwritten with the elements of the matrix X, |
mat_b
is not distributed mat_b
has size (M x K)
mat_b
has blocksize (NB x NB)
mat_b
has tilesize (NB x NB) mat_b
is distributed according to grid
mat_b
has size (N x M) mat_b
has blocksize (NB x NB) mat_b
has tilesize (NB x NB)mat_b | on entry it contains the matrix B, on exit the matrix elements are overwritten with the elements of the matrix X, |
mat_b
is distributed according to grid
mat_b
has size (M x K)
mat_b
has blocksize (NB x NB)
mat_b
has tilesize (NB x NB) Helper type for wrapping MPI calls.
-Wrapper type around calls to MPI functions. Provides a call operator that creates an MPI request and passes it as the last argument to the provided callable. The wrapper then waits for the the request to complete with yield_while.
+Wrapper type around calls to MPI functions. Provides a call operator that creates an MPI request and passes it as the last argument to the provided callable. The wrapper then waits for the request to complete with yield_while.
This could in theory be a lambda inside transformMPI. However, clang at least until version 12 fails with an internal compiler error with a trailing decltype for SFINAE. GCC has no problems with a lambda.
tridiag | [in/out] (n x 2) local matrix with the diagonal and off-diagonal of the symmetric tridiagonal matrix in the first column and second columns respectively. The last entry of the second column is not used. |
evals | [out] (n x 1) local matrix holding the eigenvalues of the the symmetric tridiagonal matrix |
evecs | [out] (n x n) distributed matrix holding the eigenvectors of the the symmetric tridiagonal matrix on exit. |
tridiag | matrix with the diagonal and off-diagonal of the symmetric tridiagonal matrix in the first column and second columns respectively. The last entry of the second column is not used. |
evals
are local matrices and are the same on all ranks tridiag
is not distributed tridiag
has size (N x 2)
tridiag
has blocksize (NB x 2)
tridiag
and evals
tridiag
has tilesize (NB x 2)[out] | evals | holds the eigenvalues of the symmetric tridiagonal matrix |
evals
is not distributed evals
has size (N x 1) evals
has blocksize (NB x 1) evals
has tilesize (NB x 1)[out] | evecs | holds the eigenvectors of the symmetric tridiagonal matrix |
evecs
is distributed according to grid
tridiag
and evals
evecs
has size (N x N)
evecs
has blocksize (NB x NB)
evecs
has tilesize (NB x NB) tridiag | [in/out] (n x 2) local matrix with the diagonal and off-diagonal of the symmetric tridiagonal matrix in the first column and second columns respectively. The last entry of the second column is not used. |
evals | [out] (n x 1) local matrix holding the eigenvalues of the the symmetric tridiagonal matrix |
evecs | [out] (n x n) local matrix holding the eigenvectors of the the symmetric tridiagonal matrix on exit. |
tridiag | local matrix with the diagonal and off-diagonal of the symmetric tridiagonal matrix in the first column and second columns respectively. The last entry of the second column is not used. |
evals
and evecs
are local matrices tridiag
is not distributed tridiag
has size (N x 2)
tridiag
has blocksize (NB x 2)
tridiag
and evals
tridiag
has tilesize (NB x 2)[out] | evals | contains the eigenvalues of the symmetric tridiagonal matrix |
evals
is not distributed evals
has size (N x 1) evals
has blocksize (NB x 1) evals
has tilesize (NB x 1)[out] | evecs | contains the eigenvectors of the symmetric tridiagonal matrix |
evecs
is not distributed tridiag
and evals
evecs
has size (N x N)
evecs
has blocksize (NB x NB)
evecs
has tilesize (NB x NB)