GPU在MATLAB上的分解

时间:2013-07-24 07:51:37

标签: matlab gpu linear-algebra scientific-computing

我正在尝试在MATLAB上运行LU Decomposition,以便它将使用GPU。 根据NVidia / MATLAB文档,LU应该得到CUDA的支持(例如参见http://www.nvidia.com/content/GTC-2010/pdfs/2267_GTC2010.pdf)。

现在,我已经比较了CPU和GPU之间的速度,虽然GPU对于矩阵乘法和FFT确实更快,但它似乎给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

1 个答案:

答案 0 :(得分: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倍 - 这对于高端(虽然稍微过时)的GPU而言比典型的6核CPU更常见。