SRC/ssyev_2stage.f(3)
π NAME π
SRC/ssyev_2stage.f β bestie, this is the actual source file behind this whole page, straight out of the Library Functions Manual. It's the Fortran home of ssyev_2stage, and we're about to get into it β¨
β¨ SYNOPSIS β¨
π¦ Functions/Subroutines
subroutine ssyev_2stage (jobz, uplo, n, a, lda, w, work, lwork, info)β SSYEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices. That's the whole vibe, no cap π
πΈ Function/Subroutine Documentation πΈ
π subroutine ssyev_2stage (character jobz, character uplo, integer n, real, dimension( lda, * ) a, integer lda, real, dimension( * ) w, real, dimension( * ) work, integer lwork, integer info)
SSYEV_2STAGE computes the eigenvalues and, optionally, the left and/or right eigenvectors for SY matrices.
β Purpose β
Okay so real talk: SSYEV_2STAGE computes all eigenvalues, and optionally the eigenvectors too, of a real symmetric matrix A β and it does it using the 2stage technique for the reduction to tridiagonal. That's the whole personality. π
π Parameters π
JOBZ
JOBZ is CHARACTER*1 β your "what do you actually want from me" switch:
= 'N':Compute eigenvalues only;= 'V':Compute eigenvalues and eigenvectors. Not available in this release. π
UPLO
UPLO is CHARACTER*1 β which triangle of A you're giving it:
= 'U':Upper triangle ofAis stored;= 'L':Lower triangle ofAis stored.
N
N is INTEGER β the order of the matrix A. Constraint: N >= 0. π
A
A is REAL array, dimension (LDA, N)
On entry, the symmetric matrix A:
- If
UPLO = 'U', the leading N-by-N upper triangular part ofAcontains the upper triangular part of the matrixA. - If
UPLO = 'L', the leading N-by-N lower triangular part ofAcontains the lower triangular part of the matrixA.
On exit:
- if
JOBZ = 'V', then ifINFO = 0,Acontains the orthonormal eigenvectors of the matrixA. - If
JOBZ = 'N', then on exit the lower triangle (ifUPLO='L') or the upper triangle (ifUPLO='U') ofA, including the diagonal, is destroyed. π So don't come crying to me about your matrix afterwards.
LDA
LDA is INTEGER β the leading dimension of the array A. Constraint: LDA >= max(1,N). π«Ά
W
W is REAL array, dimension (N) β If INFO = 0, the eigenvalues in ascending order. Sorted and serving. β
WORK
WORK is REAL array, dimension LWORK β On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
LWORK
LWORK is INTEGER β the length of the array WORK. Buckle up, this one has lore:
LWORK >= 1, when N <= 1;
otherwise
If JOBZ = 'N' and N > 1, LWORK must be queried.
LWORK = MAX(1, dimension) where
dimension = max(stage1,stage2) + (KD+1)*N + 2*N
= N*KD + N*max(KD+1,FACTOPTNB)
+ max(2*KD*KD, KD*NTHREADS)
+ (KD+1)*N + 2*N
where KD is 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.
If JOBZ = 'V' and N > 1, LWORK must be queried. Not yet available
And then:
If LWORK = -1, then a workspace query is assumed; the routine
only calculates the optimal size of the WORK array, returns
this value as the first entry of the WORK array, and no error
message related to LWORK is issued by XERBLA.
Lowkey important: withLWORK = -1you get a workspace query β it just reports the optimal size back inWORK(1)andXERBLAwill not yell at you aboutLWORK. π§
INFO
INFO is INTEGER β the little status report at the end:
= 0:successful exit π< 0:ifINFO = -i, the i-th argument had an illegal value> 0:ifINFO = i, the algorithm failed to converge; i off-diagonal elements of an intermediate tridiagonal form did not converge to zero π
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π₯ Further Details: π₯
All details about the 2stage techniques are available in β the reading list, bestie, take notes:
- 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.
http://doi.acm.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.
http://doi.acm.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.
http://hpc.sagepub.com/content/28/2/196
π Definition π
Definition at line 181 of file ssyev_2stage.f. π¦
Ok that's the whole page, bestie, you ate that π
Fr fr, this page was generated automatically by Doxygen for LAPACK from the source code, and it's LAPACK Version 3.12.0 energy all the way. Periodt. πβ¨π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms