有人可以大致告诉 Matlab 并行计算工具箱如何使用 GPU 的共享内存。例如,我可以明确地使用它来同步 MP 单元吗?
顺便提一句。我有一个 GTX 580,它有 1.5GB 内存,每个 MultiProcessor 32 个内核(每个 MP 16 个内核)和 64Kb 共享 (L1) 内存。
谢谢
有人可以大致告诉 Matlab 并行计算工具箱如何使用 GPU 的共享内存。例如,我可以明确地使用它来同步 MP 单元吗?
顺便提一句。我有一个 GTX 580,它有 1.5GB 内存,每个 MultiProcessor 32 个内核(每个 MP 16 个内核)和 64Kb 共享 (L1) 内存。
谢谢
我不知道 Matlab 的答案,但如果你愿意使用 Python,那么PyCUDA是你的朋友。您可以直接在 CUDA-C 中开发内核代码,并在 Python 中以长字符串形式编写出来。然后 PyCUDA 允许您编译这些,设置设备变量,向设备发送数据和从设备发送数据,然后使用启动配置执行内核以控制线程/块等。要使用共享成员,您只需使用shared
关键字 in声明变量您的 CUDA-C 代码作为 Python 字符串。
我写了一些用于图像处理的代码,链接在这里。您可以将其解压缩并查看我将 CUDA-C 源模块编写为 Python 字符串的方式。使用 NumPy 和 SciPy,Python 的其余用户体验与 Matlab 非常相似——只是更好。如果您不喜欢在 Matlab 中执行此项目,请考虑将其切换到 PyCUDA。
梅斯,
我想加入 GPU 的 M 代码 - 我发现 Jacket 是访问 GPU 的有用替代方案。Jacket 默认使用共享内存来完成工作,如果您想自己控制事情,它有一个 SDK。
GTX 580 是一张很棒的显卡,但如果你有钱的话,我个人会推荐一些 Tesla GPU,因为它们的长期可靠性(特别是对于长期运行的科学应用程序)。