Parallel processing MATLAB并行计算工具箱-并行化vs GPU?

Parallel processing MATLAB并行计算工具箱-并行化vs GPU?,parallel-processing,gpu,matlab,Parallel Processing,Gpu,Matlab,我和一个有一些MATLAB代码的人一起工作,他们希望加快速度。他们目前正试图将所有这些代码转换成CUDA,使其在CPU上运行。我认为使用MATLAB的并行计算工具箱来加快速度会更快,并在拥有MATLAB的分布式计算工具箱的集群上运行它,这样我就可以跨多个不同的工作节点运行它。现在,作为并行计算工具箱的一部分,您可以使用。然而,我对这将如何工作感到困惑。使用parfor(并行化)和gpuarray(gpu编程)这样的东西是否相互兼容?我能两者都用吗?在使用每个工作节点上可用的任何GPU的同时,是否

我和一个有一些MATLAB代码的人一起工作,他们希望加快速度。他们目前正试图将所有这些代码转换成CUDA,使其在CPU上运行。我认为使用MATLAB的并行计算工具箱来加快速度会更快,并在拥有MATLAB的分布式计算工具箱的集群上运行它,这样我就可以跨多个不同的工作节点运行它。现在,作为并行计算工具箱的一部分,您可以使用。然而,我对这将如何工作感到困惑。使用parfor(并行化)和gpuarray(gpu编程)这样的东西是否相互兼容?我能两者都用吗?在使用每个工作节点上可用的任何GPU的同时,是否可以在不同的工作节点(并行化)之间拆分某些内容

他们认为将所有matlab代码转换为cuda代码以在具有多个GPU的机器上运行所需的时间仍然值得探索……但我认为正确的方法是使用matlab中已经内置的功能

任何帮助、建议和指导都将不胜感激


谢谢

如果您使用CUDA编写,它保证在芯片级并行运行,而不是使用MATLAB对非并行架构的最佳猜测,并尽最大努力使其并行运行


有点像喝山上的淡水径流,而不是买过滤水。使用纯粹的解决方案。

当您使用parfor时,您有效地将for循环划分为多个任务,每个循环迭代一个任务,并将这些任务分解为多个工作者并行计算,其中每个工作者都可以被视为一个没有交互GUI的MATLAB会话。您可以将集群配置为在集群的每个节点上运行指定数量的工作线程(通常,您会选择在该节点上运行与可用处理器内核数量相等的工作线程)

另一方面,gpuarray向MATLAB表明,您希望使一个矩阵可供GPU处理。在引擎盖下面,MATLAB正在将数据从主内存编组到图形板的内部内存。某些MATLAB函数(文档中有它们的列表)可以在GPU上运行,计算在GPU上进行


这两种技术之间的关键区别在于,parfor计算发生在集群节点的CPU上,可以直接访问主内存。CPU核心通常具有较高的时钟速率,但CPU集群中的时钟速率通常少于GPU核心。单独而言,GPU内核比典型的CPU内核慢,它们的使用要求数据从主内存传输到视频内存,然后再传输回来,但集群中的GPU内核要多得多。据我所知,混合方法应该是可行的,在这种方法中,你有一个PC集群,每台PC有一个或多个Nvidia Tesla板,你使用parfor循环和GPuarray。然而,我还没有机会尝试这一点。

如果您主要对模拟感兴趣,GPU处理是最佳选择。然而,如果你想分析(大)数据,就去并行化。原因是,如果不必来回复制数据,GPU处理速度只会比cpu处理速度快。在模拟的情况下,您可以在GPU上生成大部分数据,只需将结果复制回来。如果你试图在GPU上处理更大的数据,你经常会遇到内存不足的问题。
如果你的计算机CPU中有大数据结构和2个以上的内核,那么PARITCION非常棒。我没有听说有人对gpuarray的性能感到满意,原因如下: