15 Stars
Updated Last
4 Years Ago
Started In
September 2015

This package is deprecated.

CUSOLVER integration is available directly in CuArrays.jl.


Build status:

Code coverage: Coverage Status

Julia bindings for the NVIDIA CUSOLVER library. CUSOLVER is a high-performance direct-solver matrix linear algebra library.


CUSOLVER.jl provides bindings to a subset of the CUSOLVER library. It's built on top of CUBLAS.jl, CUSPARSE.jl and CUDArt.jl. CUSOLVER.jl currently wraps all the dense solvers and the sparse solvers are in progress.

The dense CUSOLVER API is designed to mimic the LAPACK API. I've tried to achieve consistency with the Julia base LAPACK bindings so that you can use CUSOLVER as a drop-in replacement. CUSOLVER.jl will use the CUSPARSE.jl custom types for ease-of-use.

Current Features

CUSOLVER.jl currently supports a subset of all the CUSOLVER functionality. What is implemented right now:

  • Dense API
    • Dense Linear Solvers
      • potrf!
      • potrs!
      • getrf!
      • getrs!
      • geqrf!
      • ormqr!
      • sytrf!
    • Dense Eigensolvers
      • gebrd!
      • gesvd!
  • Sparse API
    • High level API
      • csrlsvlu!
      • csrlsvqr!
      • csrlsvchol!
      • csrlsqvqr!
      • csreigvsi!
      • csreigs!
    • Low level API
      • csrsymrcm!
      • csrsymmdq!
      • csrsymamd!
      • csrperm!
      • csrqrBatched!


Contributions are very welcome! If you write wrappers for one of the CUSOLVER.jl functions, please include some tests in test/runtests.jl for your wrapper. Ideally test each of the types the function you wrap can accept, e.g. Float32, Float64, and possibly Complex64, Complex128.