2009年10月19日月曜日

特異値分解 on GPU

名古屋大学の研究者の仕事のほかに、SVD の GPU 上での高速化の論文が IPDPS 2009 で発表されているようです。この論文によると、やはり、256x256 ぐらいまでの行列では、CPU 版の方が速く、それより大きな行列サイズでの GPU 版での高速化が見られています。我々の戦略としては、まず、Matrix Compression なしに、行列サイズをできるだけ大きくし、CPU 版と勝負しましょう。

また、複数のセンサーデータを同時に計算することによって、レイテンシ及びスループットを稼ぐこと。そのためには、ブロッキングしないようにすべき。現状の CULA を見ると、ブラックボックス化しているため、よくわからない。やはり、Next Step としては、CUDA API を使って実装すべきだろう。

Singular value decomposition on GPU using CUDA (PDF)
http://portal.acm.org/citation.cfm?id=1587556

Linear algebra algorithms are fundamental to many computing applications. Modern GPUs are suited for many general purpose processing tasks and have emerged as inexpensive high performance co-processors due to their tremendous computing power. In this paper, we present the implementation of singular value decomposition (SVD) of a dense matrix on GPU using the CUDA programming model. SVD is implemented using the twin steps of bidiagonalization followed by diagonalization. It has not been implemented on the GPU before. Bidiagonalization is implemented using a series of Householder transformations which map well to BLAS operations. Diagonalization is performed by applying the implicitly shifted QR algorithm. Our complete SVD implementation outperforms the MATLAB and Intel ®Math Kernel Library (MKL) LAPACK implementation significantly on the CPU. We show a speedup of upto 60 over the MATLAB implementation and upto 8 over the Intel MKL implementation on a Intel Dual Core 2.66GHz PC on NVIDIA GTX 280 for large matrices. We also give results for very large matrices on NVIDIA Tesla S1070.

0 件のコメント:

コメントを投稿