2

有人可以大致告诉 Matlab 并行计算工具箱如何使用 GPU 的共享内存。例如,我可以明确地使用它来同步 MP 单元吗?

顺便提一句。我有一个 GTX 580,它有 1.5GB 内存,每个 MultiProcessor 32 个内核(每个 MP 16 个内核)和 64Kb 共享 (L1) 内存。

谢谢

4

2 回答 2

1

我不知道 Matlab 的答案,但如果你愿意使用 Python,那么PyCUDA是你的朋友。您可以直接在 CUDA-C 中开发内核代码,并在 Python 中以长字符串形式编写出来。然后 PyCUDA 允许您编译这些,设置设备变量,向设备发送数据和从设备发送数据,然后使用启动配置执行内核以控制线程/块等。要使用共享成员,您只需使用shared关键字 in声明变量您的 CUDA-C 代码作为 Python 字符串。

我写了一些用于图像处理的代码,链接在这里。您可以将其解压缩并查看我将 CUDA-C 源模块编写为 Python 字符串的方式。使用 NumPy 和 SciPy,Python 的其余用户体验与 Matlab 非常相似——只是更好。如果您不喜欢在 Matlab 中执行此项目,请考虑将其切换到 PyCUDA。

于 2012-04-14T03:16:36.073 回答
1

梅斯,

我想加入 GPU 的 M 代码 - 我发现 Jacket 是访问 GPU 的有用替代方案。Jacket 默认使用共享内存来完成工作,如果您想自己控制事情,它有一个 SDK。

GTX 580 是一张很棒的显卡,但如果你有钱的话,我个人会推荐一些 Tesla GPU,因为它们的长期可靠性(特别是对于长期运行的科学应用程序)。

于 2012-04-16T13:28:26.923 回答