Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hipsolverDnDsyevdx with HIPSOLVER_EIG_RANGE_ALL does not return the correct eigenvectors #156

Open
Beanavil opened this issue Apr 11, 2023 · 2 comments
Assignees

Comments

@Beanavil
Copy link

For the input matrix

     | 3.5 0.5 0.0 |
A =  | 0.5 3.5 0.0 |
     | 0.0 0.0 2.0 |

the hipSOLVER Compatibility API function hipsolverDnDsyevdx (hipsolverDnSsyevdx too) with relevant parameters:

  • jobz = HIPSOLVER_EIG_MODE_VECTOR
  • range = HIPSOLVER_EIG_RANGE_ALL
  • uplo = HIPSOLVER_FILL_MODE_UPPER

gives the following vector of eigenvalues:

{2, 3, 4}

and the following matrix of eigenvectors (stored as columns):

| 0   -0.707107   -0.707107 |
| 0    0.707107    0.707107 |
| 1    0                 0  |

which at first sight does not make much sense because different eigenvalues (3 and 4) have the same eigenvector associated.

Also, the output from hipSOLVER's hipsolverDsyevd function with the relevant parameters:

  • jobz = HIPSOLVER_EIG_MODE_VECTOR
  • uplo = HIPSOLVER_FILL_MODE_UPPER

yields the same eigenvalues, but the following eigenvectors:

| 0   -0.707107    0.707107 |
| 0    0.707107    0.707107 |
| 1    0                 0  |

which I think would be the correct solution.

@jzuniga-amd
Copy link
Collaborator

Thanks @Beanavil for pointing this out.
The team will take a look and provide a fix if needed.

@jzuniga-amd
Copy link
Collaborator

@Beanavil Can you please test with the latest ROCm 6.1.2? If the issue is resolved, please close the ticket. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants