Singular Value Decomposition on a GPU


About:

The aim of this project is to implement SVD (Singular Value Decomposition) on a GPU. The motivation comes from the fact that GPUs of the present day are very powerful and can be used as co-processors to performing general-purpose computation tasks (apart from the specific purpose they are designed for). Moreover, SVD has several applications in scientific computing, statistics and signal processing (as a method for noise reduction), which makes it very desirable to have a GPU based implementation of SVD.

Prior Work:

There are lots of algorithms to efficiently perform SVD on a CPU (eg. LAPACK), but none exist for the GPU. Other algorithms (like sorting and LU Decomposition) have been mapped onto the GPU though.

Expectation:

By the end of this semester, I hope to create a library that can be used to compute the SVD of a matrix. I also intend to benchmark the implementation and compare it with existing CPU implementations of SVD (read LAPACK).

Resources

Note: This is the combined course project for two of my courses: Computer Graphics and General Purpose Computation on Graphics Processors.