57

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

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

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

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

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

myArray(:) = 0 

很慢。我已经编写了一些自定义的 CUDA-Kernels,但是即使在整个代码中始终使用 gpuArrays,实现不佳的标准 MATLAB 功能也会增加很多开销。我通过用手写的 CUDA 代码替换 MATLAB 代码解决了一些问题 - 但我不想重新实现 MATLAB 标准功能。

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

所以我的问题是:

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

4

2 回答 2

4

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

并行计算工具箱功能

主要特点

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

MATLAB GPU 计算支持支持 NVIDIA CUDA 的 GPU

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

您可以通过Parallel Computing Toolbox将 GPU 与 MATLAB 一起使用,该工具箱支持:

  • 具有 2.0 或更高计算能力的支持 CUDA 的 NVIDIA GPU 。对于 14a 及更早版本,计算能力 1.3 就足够了。
  • 直接从 MATLAB 使用 GPU
  • 使用 Parallel Computing Toolbox 和 MATLAB Distributed Computing Server 中的 MATLAB worker 的桌面和计算机集群上的多个 GPU
于 2013-11-15T12:11:22.517 回答
3

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

于 2013-10-31T06:10:21.580 回答