Concurrent Number Cruncher : An Efficient Sparse Linear Solver on the GPU.

in: Proc. 27th Gocad Meeting, Nancy

Abstract

A wide class of geometry processing and PDE resolution methods needs to solve a linear system, where the non-zero pattern of the matrix is dictated by the connectivity matrix of the mesh. The advent of GPUs with their ever-growing amount of parallel horsepower makes them a tempting resource for such numerical computations. This can be helped by new APIs (CTM from ATI and CUDA from NVIDIA) which give a direct access to the multithreaded computational resources and associated memory bandwidth of GPUs; CUDA even provides a BLAS implementation but only for dense matrices (CuBLAS). However, existing GPU linear solvers are restricted to specific types of matrices, or use non-optimal compressed row storage strategies. By combining recent GPU programming techniques with supercomputing strategies (namely block compressed row storage and register blocking), we implement a sparse generalpurpose linear solver based on the Conjugate Gradient algorithm which outperforms by up to a factor of 5.5x leading-edge CPU counterparts (MKL / ACML).

Download / Links

    BibTeX Reference

    @INPROCEEDINGS{206_Buatois,
        author = { Buatois, Luc and Caumon, Guillaume and Levy, Bruno },
         title = { Concurrent Number Cruncher : An Efficient Sparse Linear Solver on the GPU. },
     booktitle = { Proc. 27th Gocad Meeting, Nancy },
          year = { 2007 },
      abstract = { A wide class of geometry processing and PDE resolution methods needs to solve a linear system, where
    the non-zero pattern of the matrix is dictated by the connectivity matrix of the mesh. The advent of GPUs
    with their ever-growing amount of parallel horsepower makes them a tempting resource for such numerical
    computations. This can be helped by new APIs (CTM from ATI and CUDA from NVIDIA) which give
    a direct access to the multithreaded computational resources and associated memory bandwidth of GPUs;
    CUDA even provides a BLAS implementation but only for dense matrices (CuBLAS).
    However, existing GPU linear solvers are restricted to specific types of matrices, or use non-optimal compressed
    row storage strategies. By combining recent GPU programming techniques with supercomputing
    strategies (namely block compressed row storage and register blocking), we implement a sparse generalpurpose
    linear solver based on the Conjugate Gradient algorithm which outperforms by up to a factor of
    5.5x leading-edge CPU counterparts (MKL / ACML). }
    }