0

我正在尝试在 MATLAB 上运行 LU 分解,以便它使用 GPU。根据 NVidia/MATLAB 文档,CUDA 应该支持 LU(例如参见 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

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 回答