使用MATLAB的GPU可以获得哪些性能提升?

5
我在考虑向我的老板要求一张好的GPU,以便使用matlab并行处理工具箱进行计算。然而,在同事的NVidia Quadro 600电脑上进行了一些简单的测试后,我获得了非常糟糕的性能提升(仅为1到2倍)。 我尤其想在n维数组上执行卷积。 有人有类似的经验使用gpuArray等计算吗? 我可以期望什么性能提升? 我应该购买哪个GPU型号(价格低于1000美元,希望低于400美元)?

2
你能展示一下你将使用的 matlab 函数吗? - osgx
2
这里似乎有几个问题。其中,“我应该买什么GPU?”在我看来是不相关和过于局限的。“你有什么经验?”也显得非常闲聊和开放式的。 - Flexo
正如我在我的问题中所说,我特别对卷积感兴趣,尤其是convnconv2 - Oli
1
@awoodland 我认为这可能不是SE的最佳选择,但对于处于与OP相同情况的人来说,这是一个有效的问题。虽然我不知道matlab是否支持gpu。那将是多么混乱的一件事! - Ali
@oli FFT和iFFT函数也支持gpuArray。如果您的内核大于~20x20,使用这种方式进行卷积可以获得很多好处(无论是否使用GPU)。 - reve_etrange
convn、conv2、fft、ifft以及许多其他函数都受Jacket支持。总的来说,Jacket支持的函数比gpuArray更多。完整列表在这里:http://wiki.accelereyes.com/wiki/index.php/Function_List - arrayfire
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2
gpuArray在MATLAB中的性能受到几个因素的影响:
  • 首先,您的问题是否适合在GPU上运行
  • 您的设备有多少CUDA核心,一般来说,核心越多越好
  • 您是否使用具有增强双精度性能的设备(例如计算能力>= 2的最新Quadro / Tesla设备)
  • 您使用的MATLAB版本- R2011b的性能显着优于R2010b。
以下是“Walking Randomly”博客中一些基准测试的示例:http://www.walkingrandomly.com/?p=3634。这些显示了在合理应用程序中可以预期的加速比-即可信的加速比为约5倍至10倍,远高于此的情况很少见。 (如果您想看到其中一个罕见的例子,请使用gpuArrayarrayfun编程的GPU上的Mandelbrot集合比CPU快约1500倍: http://www.mathworks.com/products/demos/parallel-computing/paralleldemo_gpu_mandelbrot/paralleldemo_gpu_mandelbrot.html?product=DW

1

我目前正在研究同样的话题。我看到的一件事是,低端和中端的显卡是为游戏而设计的,因此针对FP32性能进行了优化。它们的FP64性能因此显著滞后,这可能是你所看到的。 1000美元的GTX Titan似乎是进行严肃科学计算的起点。


1

Quadro 400只有48个核心,而GeForce 480有480个核心,GeForce 580有512个核心。这两者的时钟速度也更高,因此当内存访问不是限制因素时,您可以期望获得超过10倍的性能提升。

我没有使用GPU来加速MATLAB,但我每天都使用PC进行GPU(CUDA)开发。其中一个拥有Quadro FX5800 + GeForce 480,另一个拥有GeForce 580。据我所知,您将无法从工作站卡中获得任何好处,与GeForce相比。因此,节省一些$$$并获得GF480或GF580。

这个线程似乎有一个CUDA加速的conv函数,速度快了50倍: http://www.mathworks.com/matlabcentral/fileexchange/20220 我不确定MATLAB现在默认具备什么功能。

希望这有所帮助! GPU可以很好地加速许多任务。但是,性能提升可能需要一些追逐。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,