我们可以通过使用parfor
GPU函数计算CPU的spmd
或gpuArray
块的某些部分来提高性能吗?这是提高性能的合理方法还是在此过程中存在局限性?我在某处读到了当我们有一些GPU单元时我们可以使用这个程序。这是除了CPU并行循环之外我们可以使用GPU计算的唯一方法吗?
答案 0 :(得分:1)
在gpuArray
循环或parfor
块中使用spmd
可能会为您带来性能优势,但实际上这取决于以下几个因素:
因此,如果您的计算机中有两个高性能GPU并且在一个并行池中运行两个工作人员来解决可能使单个GPU完全占用的问题 - 您可能会看到良好的加速。如果你跑了4名工人,你仍然可以获得不错的加速。
我建议的一件事是:如果可能,尽量避免将gpuArray
数据从客户端转移到工作人员,因为这比通常的数据传输慢(gpuArray
是第一个{{1}转到CPU然后重新组建工人)。