I would like to know if there is any difference between CUSP and CUDA 4.0 CUSPARSE library. because I notice that CUSPARSE only implements SPMV for CSR format (there is no cusparseScoomv). Is this true ?
Apart from CUSP and Cusparse, is there any other library for SpMV operation available to download ? ( I know CULA, but it’s not opensource )
Please note I am not personally familiar with either library. One difference is that CUSP is an open-source project hosted at Google Code Archive - Long-term storage for Google Code Project Hosting., while CUSPARSE is a closed-source library. According to information from our library team CUSPARSE provides COO/CSR conversion routines, would that be sufficient for your work?
It seems there are other differences between the libraries, with CUSP providing a C++ interface and CUSPARSE targeted at C/Fortran interfaces. I guess the idea of providing COO/CSR conversion routines is to convert into CUSPARSE’s native format, do the computations, then convert the final result back. Is that feasible within your app? Sorry, I really do not have any deep insights here, this is outside my area of expertise.
njuffa, you don’t really need to sorry. I appriciate your help.
I’m trying some new formats for SpMV that’s why I would like to know if any available library for comparison. The performance of SpMV is really depending on the format and the specific kernel implementation for that format. Stored the matrix in COO doesn’t help if there is no kernel associated with it for the computation.
As of the v4.1 CUDA toolkit, CUSPARSE also supports SPMV for a hybrid format (HYB), based on ELL.
You need to be a registered developer to download the v4.1 CUDA toolkit.
This format can be up to 2x faster depending on the properties of your sparse matrix.
CUSPARSE provides a specific set of building blocks for algorithms such as sparse linear solvers.
It is up to the user to use the building blocks to implement their particular computations on sparse matrices.
The library is supported by NVIDIA, heavily tested on all GPU architectures, and is designed to be thread-safe.
The library is actively being developed, so expect to see new features with each release of the CUDA toolkit.
CUSP is an open-source C++ interface for sparse linear algebra as well as graph computations.
In addition to low-level building blocks, it also provides higher level interfaces for actual preconditioned solvers.
CUSP is also good choice for quickly prototyping algorithms on the GPU that use sparse computations, or as a framework for academic research into new algorithm implementations on the GPU.