Skip to content

cuSPARSE bindings for Sliced ELLpack (SELL) format #2782

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

Open
gdalle opened this issue May 20, 2025 · 2 comments
Open

cuSPARSE bindings for Sliced ELLpack (SELL) format #2782

gdalle opened this issue May 20, 2025 · 2 comments
Labels
enhancement New feature or request

Comments

@gdalle
Copy link

gdalle commented May 20, 2025

Is your feature request related to a problem? Please describe.

An intern I supervise (@AntoineBut) is currently working on a cross-platform sparse matrix library with KernelAbstractions.jl (https://github.com/AntoineBut/GPUGraphs.jl). Part of this work involves benchmarking against cuSPARSE, but only some matrix formats can be accessed through the CUDA.jl interface. In particular, the SELL format (https://docs.nvidia.com/cuda/cusparse/#sliced-ellpack-sell), described by NVIDIA as the state of the art in many situations, is not available from Julia.

Describe the solution you'd like

Would it be possible to implement a CuSparseMatrixSELL in CUDA.CUSPARSE, the same way that CSC and CSR formats already exist?

Describe alternatives you've considered

Calling directly into the C API is not user-friendly for people who only know Julia.

Additional context

@amontoison this might be for you

@gdalle gdalle added the enhancement New feature or request label May 20, 2025
@amontoison
Copy link
Member

@gdalle What kind of operations you need on this sparse format?
I agree that it is a relevant format to interface in CUSPARSE.

@gdalle
Copy link
Author

gdalle commented May 25, 2025

Thanks for following up!
At the moment, we'd mostly need

  • construction utilities
  • matrix-vector products
  • possibly matrix-matrix products

The context is graph traversal algorithms, where the sparse matrix represents the adjacency structure. The multiplications involved there use non-standard algebras (like max-plus) but to check that our custom KA kernels are not too terrible, we benchmark multiplication with the normal (plus-times) algebra against cuSPARSE. In those experiments, the hand rolled SELL format performs best, hence the need to compare it with its cuSPARSE counterpart.

@gdalle gdalle changed the title CuSparse bindings for Sliced Ellpack (SELL) format cuSPARSE bindings for Sliced ELLpack (SELL) format May 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants