LAPACK Functions in Jacket (eig, inv, etc.)

John MelonakosCUDA 2 Comments

One of the questions people commonly ask us is:

When will Jacket support LAPACK features such as eigenvalue decomposition, matrix inverse, system solvers, etc.?

The reason this question is so popular is that people recognize that these kinds of problems are well-suited for the GPU and will end up giving great performance boosts for Jacket users.  We are looking forward to delivering these functions in Jacket.

Jacket is currently built on top of CUDA.  For reasons why we like CUDA, see our previous blog post about OpenCL.  While NVIDIA is busy building from CUDA from the ground up, we are busy building Jacket from the top (MATLAB) down.  NVIDIA is working hard to promote and develop LAPACK libraries directly into CUDA.  So rather than reinvent the wheel, we prefer to work on other things while those lower level libraries are being built.

Once those libraries exist in CUDA, due to Jacket’s modular design, it will be easy for us to “wrap” them into Jacket to deliver them to you within MATLAB.

By the way, in working with NVIDIA on this project and thanks to feedback from many of you on our forums, we listed the following as the highest priority functions to be included in the initial CUDA LAPACK library:

Tier 1 choices –

LU gives direct solve capability for a lot of linear system (A*x = b) plus is also comes handy in iterative methods based on operator splitting.  QR is the basis for computing eigenvalues, condition numbers and svd.  SVD actually belongs in tier 2 but is so widely used that it deserves tier 1 attention.

Tier2 choices –

Anyway, hopefully this helps clarify the situation.  If you’d like to contribute your input on CUDA LAPACK, the NVIDIA forums is a good place to voice your thoughts on this.

Comments 2

  1. Nice work, is there any more information about the gesdd speedup on GPU, because I can not find this in other gpu-based libraries?

Leave a Reply to Jifengyu Cancel reply

Your email address will not be published. Required fields are marked *