Matlab如何在CPU并行循环中实现GPU计算?

时间:2015-02-13 09:37:12

标签: matlab parallel-processing gpu

我们可以通过使用parfor GPU函数计算CPU的spmdgpuArray块的某些部分来提高性能吗?这是提高性能的合理方法还是在此过程中存在局限性?我在某处读到了当我们有一些GPU单元时我们可以使用这个程序。这是除了CPU并行循环之外我们可以使用GPU计算的唯一方法吗?

1 个答案:

答案 0 :(得分:1)

gpuArray循环或parfor块中使用spmd可能会为您带来性能优势,但实际上这取决于以下几个因素:

  1. 系统上有多少个GPU
  2. 你有什么类型的GPU(有些人在处理“超额认购”时比其他人更好 - 即有多个进程使用相同的GPU)
  3. 您经营的工人数量
  4. 算法需要多少GPU内存
  5. 首先,问题在于GPU的适用性。
  6. 因此,如果您的计算机中有两个高性能GPU并且在一个并行池中运行两个工作人员来解决可能使单个GPU完全占用的问题 - 您可能会看到良好的加速。如果你跑了4名工人,你仍然可以获得不错的加速。

    我建议的一件事是:如果可能,尽量避免将gpuArray数据从客户端转移到工作人员,因为这比通常的数据传输慢(gpuArray是第一个{{1}转到CPU然后重新组建工人)。