hb2st_kernels(3)

🌸 NAME 🌸

hb2st_kernels β€” {hb,sb}2st_kernels: band to tridiagonal (2nd stage)

Okay bestie, so this is the hb2st_kernels(3) page from the Library Functions Manual, and it's giving "four Fortran subroutines who all do the same thing in different precisions" energy. Buckle up πŸ’…


✨ SYNOPSIS ✨

πŸŽ€ Functions

  • subroutine chb2st_kernels (uplo, wantz, ttype, st, ed, sweep, n, nb, ib, a, lda, v, tau, ldvt, work) β€” CHB2ST_KERNELS
  • subroutine dsb2st_kernels (uplo, wantz, ttype, st, ed, sweep, n, nb, ib, a, lda, v, tau, ldvt, work) β€” DSB2ST_KERNELS
  • subroutine ssb2st_kernels (uplo, wantz, ttype, st, ed, sweep, n, nb, ib, a, lda, v, tau, ldvt, work) β€” SSB2ST_KERNELS
  • subroutine zhb2st_kernels (uplo, wantz, ttype, st, ed, sweep, n, nb, ib, a, lda, v, tau, ldvt, work) β€” ZHB2ST_KERNELS

Like, all four take the exact same argument list, they just argue about whether your numbers are real, double, complex, or double complex. Classic. πŸ™ˆ


πŸ¦‹ Detailed Description πŸ¦‹

(There's literally no prose under this heading in the original β€” it just rolls straight into Function Documentation. Respect the minimalism, I guess. ✨)


πŸ’– Function Documentation πŸ’–

🌟 subroutine chb2st_kernels (...)

subroutine chb2st_kernels (character uplo, logical wantz, integer ttype,
    integer st, integer ed, integer sweep, integer n, integer nb, integer
    ib, complex, dimension( lda, * ) a, integer lda, complex, dimension( * )
    v, complex, dimension( * ) tau, integer ldvt, complex, dimension( * )
    work)

CHB2ST_KERNELS

πŸ’« Purpose:

CHB2ST_KERNELS is an internal routine used by the CHETRD_HB2ST subroutine.

Internal, bestie β€” meaning it's not out here for public consumption, it's a backstage-pass situation for CHETRD_HB2ST. 🎟️

🌸 Parameters

  • UPLO β€” UPLO is CHARACTER*1
  • WANTZ β€” WANTZ is LOGICAL which indicate if Eigenvalue are requested or both Eigenvalue/Eigenvectors.
  • TTYPE β€” TTYPE is INTEGER
  • ST β€” ST is INTEGER; internal parameter for indices.
  • ED β€” ED is INTEGER; internal parameter for indices.
  • SWEEP β€” SWEEP is INTEGER; internal parameter for indices.
  • N β€” N is INTEGER. The order of the matrix A.
  • NB β€” NB is INTEGER. The size of the band.
  • IB β€” IB is INTEGER.
  • A β€” A is COMPLEX array. A pointer to the matrix A.
  • LDA β€” LDA is INTEGER. The leading dimension of the matrix A.
  • V β€” V is COMPLEX array, dimension 2*n if eigenvalues only are requested or to be queried for vectors.
  • TAU β€” TAU is COMPLEX array, dimension (2*n). The scalar factors of the Householder reflectors are stored in this array.
  • LDVT β€” LDVT is INTEGER.
  • WORK β€” WORK is COMPLEX array. Workspace of size nb.

🌈 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. 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 at line 169 of file chb2st_kernels.f.


🌟 subroutine dsb2st_kernels (...)

subroutine dsb2st_kernels (character uplo, logical wantz, integer ttype,
    integer st, integer ed, integer sweep, integer n, integer nb, integer
    ib, double precision, dimension( lda, * ) a, integer lda, double
    precision, dimension( * ) v, double precision, dimension( * ) tau,
    integer ldvt, double precision, dimension( * ) work)

DSB2ST_KERNELS

πŸ’« Purpose:

DSB2ST_KERNELS is an internal routine used by the DSYTRD_SB2ST subroutine.

Same vibe, DOUBLE PRECISION edition. 🧊

🌸 Parameters

  • UPLO β€” UPLO is CHARACTER*1
  • WANTZ β€” WANTZ is LOGICAL which indicate if Eigenvalue are requested or both Eigenvalue/Eigenvectors.
  • TTYPE β€” TTYPE is INTEGER
  • ST β€” ST is INTEGER; internal parameter for indices.
  • ED β€” ED is INTEGER; internal parameter for indices.
  • SWEEP β€” SWEEP is INTEGER; internal parameter for indices.
  • N β€” N is INTEGER. The order of the matrix A.
  • NB β€” NB is INTEGER. The size of the band.
  • IB β€” IB is INTEGER.
  • A β€” A is DOUBLE PRECISION array. A pointer to the matrix A.
  • LDA β€” LDA is INTEGER. The leading dimension of the matrix A.
  • V β€” V is DOUBLE PRECISION array, dimension 2*n if eigenvalues only are requested or to be queried for vectors.
  • TAU β€” TAU is DOUBLE PRECISION array, dimension (2*n). The scalar factors of the Householder reflectors are stored in this array.
  • LDVT β€” LDVT is INTEGER.
  • WORK β€” WORK is DOUBLE PRECISION array. Workspace of size nb.

🌈 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. 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 at line 169 of file dsb2st_kernels.f.


🌟 subroutine ssb2st_kernels (...)

subroutine ssb2st_kernels (character uplo, logical wantz, integer ttype,
    integer st, integer ed, integer sweep, integer n, integer nb, integer
    ib, real, dimension( lda, * ) a, integer lda, real, dimension( * ) v,
    real, dimension( * ) tau, integer ldvt, real, dimension( * ) work)

SSB2ST_KERNELS

πŸ’« Purpose:

SSB2ST_KERNELS is an internal routine used by the SSYTRD_SB2ST subroutine.

Internal again, no cap β€” this one's the single-precision friend of SSYTRD_SB2ST. πŸ“

🌸 Parameters

  • UPLO β€” UPLO is CHARACTER*1
  • WANTZ β€” WANTZ is LOGICAL which indicate if Eigenvalue are requested or both Eigenvalue/Eigenvectors.
  • TTYPE β€” TTYPE is INTEGER
  • ST β€” ST is INTEGER; internal parameter for indices.
  • ED β€” ED is INTEGER; internal parameter for indices.
  • SWEEP β€” SWEEP is INTEGER; internal parameter for indices.
  • N β€” N is INTEGER. The order of the matrix A.
  • NB β€” NB is INTEGER. The size of the band.
  • IB β€” IB is INTEGER.
  • A β€” A is REAL array. A pointer to the matrix A.
  • LDA β€” LDA is INTEGER. The leading dimension of the matrix A.
  • V β€” V is REAL array, dimension 2*n if eigenvalues only are requested or to be queried for vectors.
  • TAU β€” TAU is REAL array, dimension (2*n). The scalar factors of the Householder reflectors are stored in this array.
  • LDVT β€” LDVT is INTEGER.
  • WORK β€” WORK is REAL array. Workspace of size nb.

🌈 Further Details:

(...and this is exactly where the original page cuts off for now β€” the further details for ssb2st_kernels are coming right up in the next chunk, so don't go anywhere πŸ’–)

Okay, the last little anchor from ssb2st_kernels.f before we slide into the next one is literally right here: Definition at line 170 of file ssb2st_kernels.f. Keep that in your pocket, bestie.

πŸ’… zhb2st_kernels

Here's the whole signature, exactly as it shows up, no edits, no remix:

subroutine zhb2st_kernels (character uplo, logical wantz, integer ttype,
    integer st, integer ed, integer sweep, integer n, integer nb, integer
    ib, complex*16, dimension( lda, * ) a, integer lda, complex*16,
    dimension( * ) v, complex*16, dimension( * ) tau, integer ldvt,
    complex*16, dimension( * ) work)

ZHB2ST_KERNELS β€” yes, that's the main character's name, and she is an internal routine. ✨

πŸ¦‹ Purpose

So ZHB2ST_KERNELS is an internal routine used by the ZHETRD_HB2ST subroutine. That's the whole purpose paragraph β€” short, sweet, and very "I'm here to do a job, not to explain my whole life story." πŸ’–

🌸 Parameters

  • UPLO β€” type CHARACTER*1. That's it. That's the description. Iconic minimalism.
  • WANTZ β€” type LOGICAL; it indicates if eigenvalues are requested or both eigenvalues and eigenvectors. Basically: just the numbers, or the numbers and the vectors? πŸŽ€
  • TTYPE β€” type INTEGER. No extra commentary in the original, so no invented lore here.
  • ST β€” type INTEGER; the original calls it an "internal parameter for indices."
  • ED β€” type INTEGER; also an "internal parameter for indices."
  • SWEEP β€” type INTEGER; yep, another "internal parameter for indices." The index girls are busy. πŸ’…
  • N β€” type INTEGER; the order of the matrix A. Main character dimension.
  • NB β€” type INTEGER; the size of the band.
  • IB β€” type INTEGER. That's the description, bestie. No extra details to spill.
  • A β€” type COMPLEX*16 array; a pointer to the matrix A.
  • LDA β€” type INTEGER; the leading dimension of the matrix A.
  • V β€” type COMPLEX*16 array, dimension 2*n if eigenvalues only are requested, or to be queried for vectors.
  • TAU β€” type COMPLEX*16 array, dimension (2*n). The scalar factors of the Householder reflectors are stored in this array.
  • LDVT β€” type INTEGER. That's all the original gives us.
  • WORK β€” type COMPLEX*16 array; workspace of size nb.

πŸ’œ Further Details

First up, the official credit: Implemented by Azzam Haidar.

And the original says: All details are available on technical report, SC11, SC13 papers.

Here are the references, preserved exactly because citation details are sacred:

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

And the definition line for this one is: Definition at line 169 of file zhb2st_kernels.f. 🫢

πŸ‘‘ Author

Generated automatically by Doxygen for LAPACK from the source code. Not me, not you, not the group chat β€” Doxygen did that. 😭


This whole page is the hb2st_kernels(3) moment from LAPACK, Version 3.12.0 β€” source/version noted, date energy included, and yes, she ate. πŸ’–βœ¨

πŸ“¦ where this page comes from