我试图在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
在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是典型的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句