kokkos / kokkos-kernels

Kokkos C++ Performance Portability Programming Ecosystem: Math Kernels - Provides BLAS, Sparse BLAS and Graph Kernels
Other
302 stars 95 forks source link

Add Sparse Direct Solver Support via TPLs #2251

Open ddement opened 2 months ago

ddement commented 2 months ago

We (Exawind's OpenTurbine project) would like for KokkosKernels to provide an interface to general sparse matrix solvers, similar to how it provides the gesv interface for dense solvers. cuSOLVER, rocSOLVER, etc all provide reasonably optimized solvers, so the goal would just be for KokkosKernels to provide a wrapper around the TPLs.

Why: For our problem size, dense matrices are incredibly large and slow to solve, but we are small enought that we don't need the complexity of multi-node solutions like Tpetra and Amesos2. Using Kokkos as an interface like we do for our sparse matrix multiplication and addition kernels would give us a big performance boost while keeping our TPLs lightweight.

lucbv commented 2 months ago

Hi @ddement if your library already has access to Amesos2, you might note that you can drive it to use TPLs like SuperLU (not the _dist variant) to get single node solvers working. Tpetra itself can also be configured without MPI support... If you really want to stick to Kokkos Core and Kernels instead that's fine but we might want to have a discussion with you and understand the requirements and timeline you desire.

ddement commented 2 months ago

@lucbv We can do Amesos2+Tpetra (I'm working on that right now), but there's a push for us to keep dependencies/build complexity to a minimum, so we wanted to explore this avenue in order to avoid pulling in Trilinos.

I'm up for a discussion whenever works best for you. If planning would work better as a Teams meeting, we can do that as well.

lucbv commented 1 month ago

Hey, sorry for getting back to this late, was on travel recently. Do you have time this week to setup a meeting?