我正在尝试在 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