Hi,

Is there routine in ScaLAPACK for solving eigenvectors and eigenvalues for non-symmetric dense matrix?

Thanks.

4 posts
• Page **1** of **1**

Hi,

Is there routine in ScaLAPACK for solving eigenvectors and eigenvalues for non-symmetric dense matrix?

Thanks.

Is there routine in ScaLAPACK for solving eigenvectors and eigenvalues for non-symmetric dense matrix?

Thanks.

- zarkobodroski
**Posts:**4**Joined:**Thu Jan 12, 2012 4:15 am**Location:**Novi Sad, Serbia

Unfortunately no. There is no such things as an PDGEEV (the ScaLAPACK equivalent of LAPACK DGEEV). We have made some progresses recently thanks to contributions from Robert Granat, Bo Kågström, Meiyue Shao (Umeå University and HPC2N), and Daniel Kressner (École Polytechnique Fédérale de Lausanne). But we are yet missing the eigenvectors computation from the Schur form and a driver to link all the subroutines together. Cheers, Julien.

- Julien Langou
**Posts:**828**Joined:**Thu Dec 09, 2004 12:32 pm**Location:**Denver, CO, USA

Dear Julien,

has there been any progress regarding the Schur decomposition?

best wishes

VB

has there been any progress regarding the Schur decomposition?

best wishes

VB

- volkerblum
**Posts:**2**Joined:**Wed Sep 12, 2012 5:31 pm

I believe I have found a solution . The description below omits things like allocating memory, initializing the descriptors etc. To find the left eigenvectors of a square non-symmetric eigenproblem (NEP) I do the following (I am using scalar type 'C'):

Call PCGEHRD(N,1,N,A,1,1,DESCA,TAU,WORK,LWORK,INFO) where A is my distributed complex matrix of order N

Take the result in A and split it up into two matrices, H (upper triangular part plus first subdiagonal) and Q (the rest) as described in the PGEHRD documentation. Initialize a new distributed matrix Z and set it to the identity matrix.

Call PCLAHQR(.TRUE.,.TRUE.,N,1,N,H,DESCH,W,1,N,Z,DESCZ,WORK,LWORK,-1,-1,INFO)

Call PCTREVC( 'R', 'B', SELECT, N, H, DESCH, VL, DESCVL, Z, DESCZ, N, N, WORK, RWORK, INFO )

Call PCUNMHR('L','N',N,N,1,N,Q,1,1,DESCQ,TAU,Z,1,1,DESCZ,WORK,LWORK,INFO)

Now the left eigenvectors are in the matrix Z. So basically, the matrix is transformed twice, and the transformations are captured in different ways. After the eigenvectors are calculated, the transformations are reversed to yield the eigenvectors of A.

Call PCGEHRD(N,1,N,A,1,1,DESCA,TAU,WORK,LWORK,INFO) where A is my distributed complex matrix of order N

Take the result in A and split it up into two matrices, H (upper triangular part plus first subdiagonal) and Q (the rest) as described in the PGEHRD documentation. Initialize a new distributed matrix Z and set it to the identity matrix.

Call PCLAHQR(.TRUE.,.TRUE.,N,1,N,H,DESCH,W,1,N,Z,DESCZ,WORK,LWORK,-1,-1,INFO)

Call PCTREVC( 'R', 'B', SELECT, N, H, DESCH, VL, DESCVL, Z, DESCZ, N, N, WORK, RWORK, INFO )

Call PCUNMHR('L','N',N,N,1,N,Q,1,1,DESCQ,TAU,Z,1,1,DESCZ,WORK,LWORK,INFO)

Now the left eigenvectors are in the matrix Z. So basically, the matrix is transformed twice, and the transformations are captured in different ways. After the eigenvectors are calculated, the transformations are reversed to yield the eigenvectors of A.

- wardbg
**Posts:**1**Joined:**Tue Jun 13, 2017 6:32 pm

4 posts
• Page **1** of **1**

Users browsing this forum: Google [Bot] and 2 guests