cusp-library


Generic Parallel Algorithms for Sparse Matrix and Graph Computations

What is Cusp?

Cusp is a library for sparse linear algebra and graph computations on CUDA. Cusp provides a flexible, high-level interface for manipulating sparse matrices and solving sparse linear systems. Get Started with Cusp today!

Github

We no longer maintain the CUSP project on Google Code. Find the new home of CUSP at cusplibrary.github.com



News

  • CUSP is now host on Github
  • Cusp v0.3.0 has been released with support for CUDA 4.1. See CHANGELOG for release information.
  • Cusp v0.2.0 has been released! See CHANGELOG for release information.
  • Cusp v0.1.2 has been released! v0.1.2 contains compatibility fixes for Thrust v1.3.0.
  • Cusp v0.1.1 has been released! v0.1.1 contains compatibility fixes for CUDA 3.1.
  • Cusp v0.1.0 has been released!.
  • Added QuickStartGuide page.

Examples

The following example loads a matrix from disk, transparently converts the matrix to the highly-efficient HYB format, and transfers the matrix to the GPU device. The linear system A*x = b is them solved on the device using the Conjugate Gradient method. A more detailed version of this example is also http://code.google.com/p/cusp-library/source/browse/examples/Solvers/cg.cu'>available.

#include <cusp/hyb_matrix.h>

#include <cusp/io/matrix_market.h>
#include <cusp/krylov/cg.h>

int main(void)
{
// create an empty sparse matrix structure (HYB format)
cusp::hyb_matrix<int, float, cusp::device_memory> A;

// load a matrix stored in MatrixMarket format
cusp::io::read_matrix_market_file(A, "5pt_10x10.mtx");

// allocate storage for solution (x) and right hand side (b)
cusp::array1d<float, cusp::device_memory> x(A.num_rows, 0);
cusp::array1d<float, cusp::device_memory> b(A.num_rows, 1);

// solve the linear system A * x = b with the Conjugate Gradient method
cusp::krylov::cg(A, x, b);

return 0;
}

Project Information

Labels:
Sparse Iterative CUDA GPU ConjugateGradient Graph Matrix SpMV