我做了MPI和GPU版本的扩散方程。
在MPI版本中,我通过对网格进行分解来计算下一个值,每个过程代表一个子网格。
在GPU/OpenCL版本中,我通过将2D网格转换为一维并循环这个一维网格的全局索引来计算下一个值,以实现所有网格的更新。
现在,我想知道是否有可能将这两个版本混合在一起,即为每个MPI进程分配一个子网格,并分配到子网格中,用GPU/OpenCL计算值。
我认为只有GPU能够在不同的MPI进程之间共享其资源(我只有一个GPU设备),这才是可行的。
有人能告诉我这真的有可能吗?
谢谢
发布于 2014-06-25 23:54:14
当然,GPU可以在多个进程之间共享。它仍然只是一种资源,所以如果您在使用一个进程之前对它进行了合理的利用,那么不要期望有太多的扩展,因为现在您的流程正在竞争单个资源。最糟糕的情况是,如果您超额订阅GPU,性能实际上会变得更糟。另一个需要注意的问题是GPU内存的使用。
https://stackoverflow.com/questions/24416833
复制相似问题