我已经完成了扩散方程的MPI和GPU版本。
在MPI版本中,我通过对网格进行分解来计算下一个值,每个进程代表一个子网格。
在GPU / OpenCL版本中,我通过将2D网格转换为1D并循环此1D网格的全局索引来计算下一个值,以实现所有网格的更新。
现在,我想知道是否可以混合使用这两个版本,即为每个MPI进程分配子网格并进入子网格,使用GPU / OpenCL计算值。
我认为只有GPU能够在不同的MPI进程之间共享其资源(我只有GPU设备)才有可能
任何人都可以告诉我实际上这是否可行?
感谢
答案 0 :(得分:0)
当然,GPU可以在多个进程之间共享。它仍然只是一种资源,因此,如果您之前使用一个流程合理地利用它,那么不要期望太多扩展,因为现在您的流程正在竞争单个资源。最糟糕的情况是,如果您超额认购GPU,性能实际上会变得更糟。需要注意的另一个问题是GPU内存使用情况。