GPU を使用するように MATLAB で LU 分解を実行しようとしています。NVidia/MATLAB のドキュメントによると、LU は CUDA によってサポートされると想定されています (たとえば、http://www.nvidia.com/content/GTC-2010/pdfs/2267_GTC2010.pdfを参照してください)。
ここで、CPU と GPU の速度を比較しました。行列乗算と FFT では GPU の方が確かに高速ですが、LU 分解ではほとんど同じ結果が得られるようです。これは私にとって非常に重要です。
いろいろなサイズで試してみましたが、ほぼ同じです。
例えば、
GPU の場合:
A=gpuArray(randn(1000));
tic; [l,u,p]=lu(A); toc
Elapsed time is 0.056832 seconds.
CPU で:
B=randn(1000);
tic; [l,u,p]=lu(B); toc
Elapsed time is 0.031463 seconds.
CPUはさらに高速です。CPU は i7-2630QM、GPU は GT-550M (ラップトップ) です。GTX-660 を搭載したより強力なコンピューターでも試してみましたが、結果は同じでした。
MATLAB のバージョンは 2012b です