首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GPU加速MATLAB代码?

使用GPU加速MATLAB代码?
EN

Stack Overflow用户
提问于 2013-06-05 23:18:10
回答 2查看 6.3K关注 0票数 57

AccelerEyes在2012年12月宣布,它在图形处理器代码上与Mathworks合作,并已停止其用于MATLAB的产品夹克:

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

不幸的是,他们不再出售夹克许可证。

据我所知,基于ArrayFire的夹克GPU阵列解决方案比MATLAB提供的gpuArray解决方案要快得多。

我开始使用gpuArray,但我发现很多函数的实现都很糟糕。例如,一个简单的

代码语言:javascript
复制
myArray(:) = 0 

是非常慢的。我已经编写了一些自定义的CUDA内核,但实现不佳的标准MATLAB功能增加了很多开销,即使在整个代码中始终使用gpuArrays。我修复了一些问题,用手工编写的CUDA代码替换了MATLAB代码-但我不想重新实现MATLAB标准功能。

我遗漏的另一个特性是稀疏GPU矩阵。

所以我的问题是:

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-31 14:10:22

我有幸参加了AccelerEyes创始人约翰的演讲。他们没有得到加速,因为他们只是删除了写得很差的代码,并将其替换为在这里和那里节省了一些位的代码。它们的加速主要来自于利用缓存的可用性和在内存(GPU)中执行大量操作。Matlab依赖于GPU和CPU之间的数据传输,如果我没记错的话,因此加速是疯狂的。

票数 3
EN

Stack Overflow用户

发布于 2013-11-15 20:11:23

MATLAB支持基于CUDA的GPU。你必须从“并行计算工具箱”访问它。希望这两个链接也能有所帮助:

关键功能

用于在多个processors

  • Support上运行任务并行算法的
  • 并行for-loops (parfor)支持CUDA
  • 通过运行locally
  • Computer群集和网格支持的工作人员充分利用台式机上的多核处理器(借助MATLAB Distributed Server)
  • Interactive applications
  • Distributed和batch execution并行GPU阵列以及用于大型数据集处理和数据并行算法的单程序多数据(spmd)构造

使用MATLAB进行GPU计算,与使用C或Fortran相比,使用GPU可以更轻松地加速应用程序。通过熟悉的MATLAB语言,您可以利用CUDA GPU计算技术,而不必学习复杂的GPU体系结构或低级GPU计算库。

您可以通过Parallel Computing Toolbox在MATLAB中使用GPU,它支持:

计算能力为2.0或更高的

  • CUDA-enabled NVIDIA GPU。对于版本14a和更早版本,计算能力1.3直接从MATLAB图形处理器
    • GPU-enabled MATLAB functions使用,例如快速傅立叶变换、滤波器和几个线性代数operations
    • GPU-enabled functions in toolboxes:图像处理工具箱、通信系统工具箱、统计和机器学习工具箱、神经网络工具箱、相控阵系统工具箱和信号处理工具箱(仅使用一行MATLAB code

了解有关对信号处理algorithms)

  • CUDA kernel integration in MATLAB applications,支持的更多信息

  • Multiple GPU on desktop和computer clusters使用MATLAB中的工作者并行计算工具箱和MATLAB分布式计算服务器
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16943670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档