-
Notifications
You must be signed in to change notification settings - Fork 194
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
[FEA] Lanczos solver v2 #2481
base: branch-24.12
Are you sure you want to change the base?
[FEA] Lanczos solver v2 #2481
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved CMake changes
/ok to test |
/ok to test |
/ok to test |
/ok to test |
ValueTypeT one = 1; | ||
ValueTypeT mone = -1; | ||
|
||
// Using raft::linalg::gemv leads to Reason=7:CUBLAS_STATUS_INVALID_VALUE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you create an issue for follow-on tasks and add fixing this to the issue? (and reference the issue here, please). We shouldn't be using internal detail
APIs across namespaces but in the interest of getting this PR merged quickly, I think we should create an issue for it and move on.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #2484
template <typename IndexTypeT, typename ValueTypeT> | ||
auto lanczos_compute_smallest_eigenvectors( | ||
raft::resources const& handle, | ||
raft::device_vector_view<IndexTypeT, uint32_t, raft::row_major> rows, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should be exposing public APIs only for our sparse types and not accepting those arrays individually. I'm okay keeping this in the meantime, but please add this to the follow-on issue and reference it here.
/ok to test |
/ok to test |
I unfortunately don't have permissions to push on @aamijar branch for the previous Lanczos solver PR (#2416) so I kept his commits and continued it here.
Lanczos Solver for Sparse Eigen Decomposition
We propose a new lanczos solver in raft that fixes the issues present in the previous solver
raft::sparse::solver::detail::computeSmallestEigenvectors
.Specifically we address the following issues:
This new implementation is taken from the cupy library
cupyx.scipy.sparse.linalg.eigsh
where the thick-restart and full reorthogonalzation methods are used.Additionally this PR exposes a python api for raft lanczos solver with an interface similar to
scipy.sparse.linalg.eigsh
andcupyx.scipy.sparse.linalg.eigsh
.