![]() |
MAGMA
2.0.0
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magma_int_t | magma_clatrd (magma_uplo_t uplo, magma_int_t n, magma_int_t nb, magmaFloatComplex *A, magma_int_t lda, float *e, magmaFloatComplex *tau, magmaFloatComplex *W, magma_int_t ldw, magmaFloatComplex *work, magma_int_t lwork, magmaFloatComplex_ptr dA, magma_int_t ldda, magmaFloatComplex_ptr dW, magma_int_t lddw, magma_queue_t queue) |
CLATRD reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by an orthogonal similarity transformation Q' * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A. More... | |
magma_int_t | magma_clatrd2 (magma_uplo_t uplo, magma_int_t n, magma_int_t nb, magmaFloatComplex *A, magma_int_t lda, float *e, magmaFloatComplex *tau, magmaFloatComplex *W, magma_int_t ldw, magmaFloatComplex *work, magma_int_t lwork, magmaFloatComplex_ptr dA, magma_int_t ldda, magmaFloatComplex_ptr dW, magma_int_t lddw, magmaFloatComplex_ptr dwork, magma_int_t ldwork, magma_queue_t queue) |
CLATRD2 reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by an orthogonal similarity transformation Q' * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A. More... | |
magma_int_t | magma_clatrd_mgpu (magma_int_t ngpu, magma_uplo_t uplo, magma_int_t n, magma_int_t nb, magma_int_t nb0, magmaFloatComplex *A, magma_int_t lda, float *e, magmaFloatComplex *tau, magmaFloatComplex *W, magma_int_t ldw, magmaFloatComplex_ptr dA[], magma_int_t ldda, magma_int_t offset, magmaFloatComplex_ptr dW[], magma_int_t lddw, magmaFloatComplex *hwork, magma_int_t lhwork, magmaFloatComplex_ptr dwork[], magma_int_t ldwork, magma_queue_t queues[]) |
CLATRD reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by an orthogonal similarity transformation Q' * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A. More... | |
magma_int_t magma_clatrd | ( | magma_uplo_t | uplo, |
magma_int_t | n, | ||
magma_int_t | nb, | ||
magmaFloatComplex * | A, | ||
magma_int_t | lda, | ||
float * | e, | ||
magmaFloatComplex * | tau, | ||
magmaFloatComplex * | W, | ||
magma_int_t | ldw, | ||
magmaFloatComplex * | work, | ||
magma_int_t | lwork, | ||
magmaFloatComplex_ptr | dA, | ||
magma_int_t | ldda, | ||
magmaFloatComplex_ptr | dW, | ||
magma_int_t | lddw, | ||
magma_queue_t | queue | ||
) |
CLATRD reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by an orthogonal similarity transformation Q' * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A.
If UPLO = MagmaUpper, CLATRD reduces the last NB rows and columns of a matrix, of which the upper triangle is supplied; if UPLO = MagmaLower, CLATRD reduces the first NB rows and columns of a matrix, of which the lower triangle is supplied.
This is an auxiliary routine called by CHETRD.
[in] | uplo | magma_uplo_t Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored:
|
[in] | n | INTEGER The order of the matrix A. |
[in] | nb | INTEGER The number of rows and columns to be reduced. |
[in,out] | A | COMPLEX array, dimension (LDA,N) On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = MagmaLower, the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit:
|
[in] | lda | INTEGER The leading dimension of the array A. LDA >= (1,N). |
[out] | e | COMPLEX array, dimension (N-1) If UPLO = MagmaUpper, E(n-nb:n-1) contains the superdiagonal elements of the last NB columns of the reduced matrix; if UPLO = MagmaLower, E(1:nb) contains the subdiagonal elements of the first NB columns of the reduced matrix. |
[out] | tau | COMPLEX array, dimension (N-1) The scalar factors of the elementary reflectors, stored in TAU(n-nb:n-1) if UPLO = MagmaUpper, and in TAU(1:nb) if UPLO = MagmaLower. See Further Details. |
[out] | W | COMPLEX array, dimension (LDW,NB) The n-by-nb matrix W required to update the unreduced part of A. |
[in] | ldw | INTEGER The leading dimension of the array W. LDW >= max(1,N). |
dA | ||
ldda | ||
dW | ||
lddw | Further Details |
If UPLO = MagmaUpper, the matrix Q is represented as a product of elementary reflectors
Q = H(n) H(n-1) . . . H(n-nb+1).
Each H(i) has the form
H(i) = I - tau * v * v'
where tau is a complex scalar, and v is a complex vector with v(i:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i), and tau in TAU(i-1).
If UPLO = MagmaLower, the matrix Q is represented as a product of elementary reflectors
Q = H(1) H(2) . . . H(nb).
Each H(i) has the form
H(i) = I - tau * v * v'
where tau is a complex scalar, and v is a complex vector with v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), and tau in TAU(i).
The elements of the vectors v together form the n-by-nb matrix V which is needed, with W, to apply the transformation to the unreduced part of the matrix, using a Hermitian rank-2k update of the form: A := A - V*W' - W*V'.
The contents of A on exit are illustrated by the following examples with n = 5 and nb = 2:
if UPLO = MagmaUpper: if UPLO = MagmaLower:
( a a a v4 v5 ) ( d ) ( a a v4 v5 ) ( 1 d ) ( a 1 v5 ) ( v1 1 a ) ( d 1 ) ( v1 v2 a a ) ( d ) ( v1 v2 a a a )
where d denotes a diagonal element of the reduced matrix, a denotes an element of the original matrix that is unchanged, and vi denotes an element of the vector defining H(i).
magma_int_t magma_clatrd2 | ( | magma_uplo_t | uplo, |
magma_int_t | n, | ||
magma_int_t | nb, | ||
magmaFloatComplex * | A, | ||
magma_int_t | lda, | ||
float * | e, | ||
magmaFloatComplex * | tau, | ||
magmaFloatComplex * | W, | ||
magma_int_t | ldw, | ||
magmaFloatComplex * | work, | ||
magma_int_t | lwork, | ||
magmaFloatComplex_ptr | dA, | ||
magma_int_t | ldda, | ||
magmaFloatComplex_ptr | dW, | ||
magma_int_t | lddw, | ||
magmaFloatComplex_ptr | dwork, | ||
magma_int_t | ldwork, | ||
magma_queue_t | queue | ||
) |
CLATRD2 reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by an orthogonal similarity transformation Q' * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A.
If UPLO = MagmaUpper, CLATRD reduces the last NB rows and columns of a matrix, of which the upper triangle is supplied; if UPLO = MagmaLower, CLATRD reduces the first NB rows and columns of a matrix, of which the lower triangle is supplied.
This is an auxiliary routine called by CHETRD2_GPU. It uses an accelerated HEMV that needs extra memory.
[in] | uplo | magma_uplo_t Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored:
|
[in] | n | INTEGER The order of the matrix A. |
[in] | nb | INTEGER The number of rows and columns to be reduced. |
[in,out] | A | COMPLEX array, dimension (LDA,N) On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = MagmaLower, the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit:
|
[in] | lda | INTEGER The leading dimension of the array A. LDA >= (1,N). |
[out] | e | COMPLEX array, dimension (N-1) If UPLO = MagmaUpper, E(n-nb:n-1) contains the superdiagonal elements of the last NB columns of the reduced matrix; if UPLO = MagmaLower, E(1:nb) contains the subdiagonal elements of the first NB columns of the reduced matrix. |
[out] | tau | COMPLEX array, dimension (N-1) The scalar factors of the elementary reflectors, stored in TAU(n-nb:n-1) if UPLO = MagmaUpper, and in TAU(1:nb) if UPLO = MagmaLower. See Further Details. |
[out] | W | COMPLEX array, dimension (LDW,NB) The n-by-nb matrix W required to update the unreduced part of A. |
[in] | ldw | INTEGER The leading dimension of the array W. LDW >= max(1,N). |
dA | TODO: dimension (ldda, n) ?? | |
ldda | TODO: ldda >= n ?? | |
dW | TODO: dimension (lddw, 2*nb) ?? | |
lddw | TODO: lddw >= n ?? | |
dwork | TODO: dimension (ldwork) ?? | |
ldwork | TODO: ldwork >= ceil(n/64)*ldda ?? |
If UPLO = MagmaUpper, the matrix Q is represented as a product of elementary reflectors
Q = H(n) H(n-1) . . . H(n-nb+1).
Each H(i) has the form
H(i) = I - tau * v * v'
where tau is a complex scalar, and v is a complex vector with v(i:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i), and tau in TAU(i-1).
If UPLO = MagmaLower, the matrix Q is represented as a product of elementary reflectors
Q = H(1) H(2) . . . H(nb).
Each H(i) has the form
H(i) = I - tau * v * v'
where tau is a complex scalar, and v is a complex vector with v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), and tau in TAU(i).
The elements of the vectors v together form the n-by-nb matrix V which is needed, with W, to apply the transformation to the unreduced part of the matrix, using a Hermitian rank-2k update of the form: A := A - V*W' - W*V'.
The contents of A on exit are illustrated by the following examples with n = 5 and nb = 2:
if UPLO = MagmaUpper: if UPLO = MagmaLower:
( a a a v4 v5 ) ( d ) ( a a v4 v5 ) ( 1 d ) ( a 1 v5 ) ( v1 1 a ) ( d 1 ) ( v1 v2 a a ) ( d ) ( v1 v2 a a a )
where d denotes a diagonal element of the reduced matrix, a denotes an element of the original matrix that is unchanged, and vi denotes an element of the vector defining H(i).
magma_int_t magma_clatrd_mgpu | ( | magma_int_t | ngpu, |
magma_uplo_t | uplo, | ||
magma_int_t | n, | ||
magma_int_t | nb, | ||
magma_int_t | nb0, | ||
magmaFloatComplex * | A, | ||
magma_int_t | lda, | ||
float * | e, | ||
magmaFloatComplex * | tau, | ||
magmaFloatComplex * | W, | ||
magma_int_t | ldw, | ||
magmaFloatComplex_ptr | dA[], | ||
magma_int_t | ldda, | ||
magma_int_t | offset, | ||
magmaFloatComplex_ptr | dW[], | ||
magma_int_t | lddw, | ||
magmaFloatComplex * | hwork, | ||
magma_int_t | lhwork, | ||
magmaFloatComplex_ptr | dwork[], | ||
magma_int_t | ldwork, | ||
magma_queue_t | queues[] | ||
) |
CLATRD reduces NB rows and columns of a complex Hermitian matrix A to Hermitian tridiagonal form by an orthogonal similarity transformation Q' * A * Q, and returns the matrices V and W which are needed to apply the transformation to the unreduced part of A.
If UPLO = MagmaUpper, CLATRD reduces the last NB rows and columns of a matrix, of which the upper triangle is supplied; if UPLO = MagmaLower, CLATRD reduces the first NB rows and columns of a matrix, of which the lower triangle is supplied.
This is an auxiliary routine called by CHETRD.
[in] | ngpu | INTEGER Number of GPUs to use. ngpu > 0. |
[in] | uplo | magma_uplo_t Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored:
|
[in] | n | INTEGER The order of the matrix A. |
[in] | nb | INTEGER The number of rows and columns to be reduced. |
[in] | nb0 | INTEGER The block size used for the matrix distribution. nb and nb0 can be different for the final step of chetrd. |
[in,out] | A | COMPLEX array, dimension (LDA,N) On entry, the Hermitian matrix A. If UPLO = MagmaUpper, the leading n-by-n upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. If UPLO = MagmaLower, the leading n-by-n lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit:
|
[in] | lda | INTEGER The leading dimension of the array A. LDA >= (1,N). |
[out] | e | COMPLEX array, dimension (N-1) If UPLO = MagmaUpper, E(n-nb:n-1) contains the superdiagonal elements of the last NB columns of the reduced matrix; if UPLO = MagmaLower, E(1:nb) contains the subdiagonal elements of the first NB columns of the reduced matrix. |
[out] | tau | COMPLEX array, dimension (N-1) The scalar factors of the elementary reflectors, stored in TAU(n-nb:n-1) if UPLO = MagmaUpper, and in TAU(1:nb) if UPLO = MagmaLower. See Further Details. |
[out] | W | COMPLEX array, dimension (LDW,NB) The n-by-nb matrix W required to update the unreduced part of A. |
[in] | ldw | INTEGER The leading dimension of the array W. LDW >= max(1,N). |
dA | ||
[in] | ldda | |
[in] | offset | |
dW | ||
[in] | lddw | |
hwork | ||
[in] | lhwork | |
dwork | ||
[in] | ldwork | |
[in] | queues | magma_queue_t array of dimension (ngpu). queues[dev] is an execution queue on GPU dev. |
If UPLO = MagmaUpper, the matrix Q is represented as a product of elementary reflectors
Q = H(n) H(n-1) . . . H(n-nb+1).
Each H(i) has the form
H(i) = I - tau * v * v'
where tau is a complex scalar, and v is a complex vector with v(i:n) = 0 and v(i-1) = 1; v(1:i-1) is stored on exit in A(1:i-1,i), and tau in TAU(i-1).
If UPLO = MagmaLower, the matrix Q is represented as a product of elementary reflectors
Q = H(1) H(2) . . . H(nb).
Each H(i) has the form
H(i) = I - tau * v * v'
where tau is a complex scalar, and v is a complex vector with v(1:i) = 0 and v(i+1) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), and tau in TAU(i).
The elements of the vectors v together form the n-by-nb matrix V which is needed, with W, to apply the transformation to the unreduced part of the matrix, using a Hermitian rank-2k update of the form: A := A - V*W' - W*V'.
The contents of A on exit are illustrated by the following examples with n = 5 and nb = 2:
if UPLO = MagmaUpper: if UPLO = MagmaLower:
( a a a v4 v5 ) ( d ) ( a a v4 v5 ) ( 1 d ) ( a 1 v5 ) ( v1 1 a ) ( d 1 ) ( v1 v2 a a ) ( d ) ( v1 v2 a a a )
where d denotes a diagonal element of the reduced matrix, a denotes an element of the original matrix that is unchanged, and vi denotes an element of the vector defining H(i).