hetrd_2stage#
Functions
-
void chetrd_2stage(const char *vect, const char *uplo, const INT n, c64 *A, const INT lda, f32 *D, f32 *E, c64 *tau, c64 *hous2, const INT lhous2, c64 *work, const INT lwork, INT *info)#
CHETRD_2STAGE reduces a complex Hermitian matrix
Ato real symmetric tridiagonal form T by a unitary similarity transformation:Q1**H Q2**H * A * Q2 * Q1 = T.- Further Details:
Implemented by Azzam Haidar.
All details are available on technical report, SC11, SC13 papers.
Azzam Haidar, Hatem Ltaief, and Jack Dongarra. Parallel reduction to condensed forms for symmetric eigenvalue problems using aggregated fine-grained and memory-aware kernels. In Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC ‘11), New York, NY, USA, Article 8 , 11 pages. https://doi.org/10.1145/2063384.2063394
A. Haidar, J. Kurzak, P. Luszczek, 2013. An improved parallel singular value algorithm and its implementation for multicore hardware, In Proceedings of 2013 International Conference for High Performance Computing, Networking, Storage and Analysis (SC ‘13). Denver, Colorado, USA, 2013. Article 90, 12 pages. https://doi.org/10.1145/2503210.2503292
A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. A novel hybrid CPU-GPU generalized eigensolver for electronic structure calculations based on fine-grained memory aware tasks. International Journal of High Performance Computing Applications. Volume 28 Issue 2, Pages 196-209, May 2014. https://doi.org/10.1177/1094342013502097
Parameters
invect'N': No need for the Householder representation, in particular for the second stage (Band to tridiagonal) and thuslhous2is of sizemax(1,4*n);'V': the Householder representation is needed to either generate Q1 Q2 or to apply Q1 Q2, thenlhous2is to be queried and computed. (NOT AVAILABLE IN THIS RELEASE).inuplo'U': Upper triangle ofAis stored;'L': Lower triangle ofAis stored.innThe order of the matrix
A.n>=0.inoutAOn entry, the Hermitian matrix
A. Ifuplo='U', the leadingn-by-nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. Ifuplo='L', the leadingn-by-nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit, ifuplo='U', the band superdiagonal ofAare overwritten by the corresponding elements of the internal band-diagonal matrix AB, and the elements above the KD superdiagonal, with the arraytau, represent the unitary matrix Q1 as a product of elementary reflectors; ifuplo='L', the diagonal and band subdiagonal ofAare overwritten by the corresponding elements of the internal band-diagonal matrix AB, and the elements below the KD subdiagonal, with the arraytau, represent the unitary matrix Q1 as a product of elementary reflectors. See Further Details.inldaThe leading dimension of the array
A.lda>=max(1,n).outDArray of dimension (
n). The diagonal elements of the tridiagonal matrix T.outEArray of dimension (
n-1). The off-diagonal elements of the tridiagonal matrix T.outtauArray of dimension (
n-kd). The scalar factors of the elementary reflectors of the first stage (see Further Details).outhous2Array of dimension (
max(1,lhous2)). Stores the Householder representation of the stage2 band to tridiagonal.inlhous2The dimension of the array
hous2.lhous2>=1. Iflwork=-1, orlhous2=-1, then a query is assumed; the routine only calculates the optimal size of thehous2array, returns this value as the first entry of thehous2array. Ifvect='N',lhous2 = max(1,4*n); ifvect='V', option not yet available.outworkArray of dimension (
max(1,lwork)). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe dimension of the array
work. Ifn=0,lwork>=1, elselwork = max(1, dimension). Iflwork=-1, orlhous2=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray.wherelwork = MAX(1, dimension) where dimension = max(stage1,stage2) + (kd+1)*n = n*kd + n*max(kd+1,FACTOPTNB) + max(2*kd*kd, kd*NTHREADS) + (kd+1)*nkdis the blocking size of the reduction, FACTOPTNB is the blocking used by the QR or LQ algorithm, usually FACTOPTNB=128 is a good choice, NTHREADS is the number of threads used when openMP compilation is enabled, otherwise =1.outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal value
void chetrd_2stage(
const char* vect,
const char* uplo,
const INT n,
c64* A,
const INT lda,
f32* D,
f32* E,
c64* tau,
c64* hous2,
const INT lhous2,
c64* work,
const INT lwork,
INT* info
);
Functions
-
void zhetrd_2stage(const char *vect, const char *uplo, const INT n, c128 *A, const INT lda, f64 *D, f64 *E, c128 *tau, c128 *hous2, const INT lhous2, c128 *work, const INT lwork, INT *info)#
ZHETRD_2STAGE reduces a complex Hermitian matrix
Ato real symmetric tridiagonal form T by a unitary similarity transformation:Q1**H Q2**H * A * Q2 * Q1 = T.- Further Details:
Implemented by Azzam Haidar.
All details are available on technical report, SC11, SC13 papers.
Azzam Haidar, Hatem Ltaief, and Jack Dongarra. Parallel reduction to condensed forms for symmetric eigenvalue problems using aggregated fine-grained and memory-aware kernels. In Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis (SC ‘11), New York, NY, USA, Article 8 , 11 pages. https://doi.org/10.1145/2063384.2063394
A. Haidar, J. Kurzak, P. Luszczek, 2013. An improved parallel singular value algorithm and its implementation for multicore hardware, In Proceedings of 2013 International Conference for High Performance Computing, Networking, Storage and Analysis (SC ‘13). Denver, Colorado, USA, 2013. Article 90, 12 pages. https://doi.org/10.1145/2503210.2503292
A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. A novel hybrid CPU-GPU generalized eigensolver for electronic structure calculations based on fine-grained memory aware tasks. International Journal of High Performance Computing Applications. Volume 28 Issue 2, Pages 196-209, May 2014. https://doi.org/10.1177/1094342013502097
Parameters
invect'N': No need for the Householder representation, in particular for the second stage (Band to tridiagonal) and thuslhous2is of sizemax(1,4*n);'V': the Householder representation is needed to either generate Q1 Q2 or to apply Q1 Q2, thenlhous2is to be queried and computed. (NOT AVAILABLE IN THIS RELEASE).inuplo'U': Upper triangle ofAis stored;'L': Lower triangle ofAis stored.innThe order of the matrix
A.n>=0.inoutAOn entry, the Hermitian matrix
A. Ifuplo='U', the leadingn-by-nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. Ifuplo='L', the leadingn-by-nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit, ifuplo='U', the band superdiagonal ofAare overwritten by the corresponding elements of the internal band-diagonal matrix AB, and the elements above the KD superdiagonal, with the arraytau, represent the unitary matrix Q1 as a product of elementary reflectors; ifuplo='L', the diagonal and band subdiagonal ofAare overwritten by the corresponding elements of the internal band-diagonal matrix AB, and the elements below the KD subdiagonal, with the arraytau, represent the unitary matrix Q1 as a product of elementary reflectors. See Further Details.inldaThe leading dimension of the array
A.lda>=max(1,n).outDArray of dimension (
n). The diagonal elements of the tridiagonal matrix T.outEArray of dimension (
n-1). The off-diagonal elements of the tridiagonal matrix T.outtauArray of dimension (
n-kd). The scalar factors of the elementary reflectors of the first stage (see Further Details).outhous2Array of dimension (
max(1,lhous2)). Stores the Householder representation of the stage2 band to tridiagonal.inlhous2The dimension of the array
hous2.lhous2>=1. Iflwork=-1, orlhous2=-1, then a query is assumed; the routine only calculates the optimal size of thehous2array, returns this value as the first entry of thehous2array. Ifvect='N',lhous2 = max(1,4*n); ifvect='V', option not yet available.outworkArray of dimension (
max(1,lwork)). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe dimension of the array
work. Ifn=0,lwork>=1, elselwork = max(1, dimension). Iflwork=-1, orlhous2=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray.wherelwork = MAX(1, dimension) where dimension = max(stage1,stage2) + (kd+1)*n = n*kd + n*max(kd+1,FACTOPTNB) + max(2*kd*kd, kd*NTHREADS) + (kd+1)*nkdis the blocking size of the reduction, FACTOPTNB is the blocking used by the QR or LQ algorithm, usually FACTOPTNB=128 is a good choice, NTHREADS is the number of threads used when openMP compilation is enabled, otherwise =1.outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal value
void zhetrd_2stage(
const char* vect,
const char* uplo,
const INT n,
c128* A,
const INT lda,
f64* D,
f64* E,
c128* tau,
c128* hous2,
const INT lhous2,
c128* work,
const INT lwork,
INT* info
);