0

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 です

4

1 に答える 1

1

Tesla C2070 で MATLAB R2013a を使用すると、次のように表示されます。

A = gpuArray.randn(1000);
tic; [l,u,p]=lu(A); toc
Elapsed time is 0.016663 seconds.

これは、私の CPU よりも約 2 倍高速です。マトリックスのサイズがさらに大きくなるにつれて、スピードアップが増加し、私のマシンでは GPU で約 5 倍の速度でピークに達します。これは、適切な 6 コア CPU と比較して、ハイエンド (やや古い) GPU では一般的です。

于 2013-07-24T11:14:23.667 に答える