使用GPU加速MATLAB代码?

时间:2013-06-05 15:18:10

标签: matlab gpu gpgpu jacket

AccelerEyes于2012年12月宣布,它与Mathworks在GPU代码上合作,并已停止其产品Jacket for MATLAB:

http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/

不幸的是,他们不再销售Jacket许可证了。

据我了解,基于ArrayFire的Jacket GPU阵列解决方案比MATLAB提供的gpuArray解决方案快得多。

我开始使用gpuArray,但我发现许多功能实现得很差。例如一个简单的

myArray(:) = 0 

很慢。我编写了一些自定义的CUDA内核,但是实现得很差的标准MATLAB功能增加了很多开销,即使在整个代码中使用gpuArrays也是如此。我通过用手写的CUDA代码替换MATLAB代码来解决一些问题 - 但我不想重新实现MATLAB标准功能。

我缺少的另一个功能是稀疏GPU矩阵。

所以我的问题是:

如何加快MATLAB提供的严格实现的默认GPU实现?特别是,如何使用GPU加速MATLAB中的稀疏矩阵运算?

2 个答案:

答案 0 :(得分:4)

MATLAB确实支持基于CUDA的GPU。您必须从“Parallel Computing Toolbox”访问它。希望这两个链接也有所帮助:

Parallel Computing Toolbox Features

  

主要功能

     
      
  • 用于在多个处理器上运行任务并行算法的并行for循环(parfor)
  •   
  • 支持支持CUDA的NVIDIA GPU
  •   
  • 通过本地运行的工作人员在桌面上充分使用多核处理器
  •   
  • 计算机集群和网格支持(使用MATLAB Distributed Computing Server)
  •   
  • 并行应用程序的交互式和批量执行
  •   
  • 用于大型数据集处理和数据并行算法的分布式阵列和单程序多数据(spmd)构造
  •   

MATLAB GPU Computing Support for NVIDIA CUDA-Enabled GPUs

  

使用MATLAB进行GPU计算可以比使用C或Fortran更轻松地使用GPU加速应用程序。使用熟悉的MATLAB语言,您可以充分利用CUDA GPU计算技术,而无需了解GPU架构或低级GPU计算库的复杂性。

     

您可以通过Parallel Computing Toolbox使用带有MATLAB的GPU,它支持:

     
      
  • 支持CUDA的NVIDIA GPU ,计算能力为2.0或更高。对于版本14a及更早版本,计算能力1.3就足够了。
  •   
  • 直接从MATLAB使用GPU      
  •   使用Parallel Computing Toolbox和MATLAB Distributed Computing Server中的MATLAB worker在桌面和计算机集群上
  • 多个GPU
  •   

答案 1 :(得分:2)

我很高兴参加了AccelerEyes创始人约翰的演讲。他们没有得到加速,因为他们只是删除了编写得不好的代码,并用代码保存了几位代码。他们的加速主要来自于利用缓存的可用性以及在内存中执行大量操作(GPU)。如果我没记错的话,Matlab依赖于在GPU和CPU之间传输数据,因此加速是疯狂的。