Cuda 在一个GPU上运行多个MPI列组时,我真的需要MPS吗?或者开普勒的Hyper-Q本身就足够了?

Cuda 在一个GPU上运行多个MPI列组时,我真的需要MPS吗?或者开普勒的Hyper-Q本身就足够了?,cuda,mpi,kepler,mps,Cuda,Mpi,Kepler,Mps,基本上我想在一个GPU NVidia K20c上运行多个MPI等级,我知道和开普勒的存在 然而,我的问题是,Hyper-Q本身是否足以满足我的需要?或者我必须使用MPS? 根据上述Hyper-Q链接,启用Hyper-Q不需要额外的编码工作。只需安装一个带有CUDA 5的特斯拉K20 GPU,并设置一个环境变量,让多个MPI列组共享GPU,Hyper-Q即可使用 这是否意味着我根本不需要议员 p、 在美国,我也注意到以下关于类似主题的问题,但这似乎没有清楚地回答我的问题。 谢谢。您可以在一个GP

基本上我想在一个GPU NVidia K20c上运行多个MPI等级,我知道和开普勒的存在

然而,我的问题是,Hyper-Q本身是否足以满足我的需要?或者我必须使用MPS? 根据上述Hyper-Q链接,启用Hyper-Q不需要额外的编码工作。只需安装一个带有CUDA 5的特斯拉K20 GPU,并设置一个环境变量,让多个MPI列组共享GPU,Hyper-Q即可使用

这是否意味着我根本不需要议员

p、 在美国,我也注意到以下关于类似主题的问题,但这似乎没有清楚地回答我的问题。


谢谢。

您可以在一个GPU上运行多个MPI列组,而无需MPS。在这种情况下,所有秩GPU代码都将序列化。给定列组的GPU代码只有在与前一列组关联的GPU代码完全完成并退出GPU时才会开始执行


如果您想让一个级别的GPU代码与另一个级别的GPU代码同时执行,则需要MPS。如果与排名相关联的GPU代码充分利用了GPU,那么您不太可能从MPS中看到多少好处。排名GPU代码可以与其他排名的GPU代码同时执行,这将带来显著的好处。

感谢您的快速响应。但我仍然不清楚Hyper-Q在扮演什么角色。根据上述链接,Hyper-Q本身似乎将在主机和GPU之间提供32个工作队列,使多个MPI进程能够在GPU上并发运行,而Fermi体系结构将序列化多个列组的执行。如果Hyper-Q还序列化所有列,那么Hyper-Q的意义是什么?或者Hyper-Q只是硬件特性,它必须与MPS一起工作以实现并行性,这是最初的Hyper-Q文章忽略的一个要点?谢谢来自单个进程的CUDA任务与来自多个进程的CUDA任务之间存在差异。Hyper-Q消除了来自单个进程的请求并发性的一些人为障碍。但由于CUDA行为与Hyper-Q无关,来自多个进程的请求仍然会序列化。MPS充当一个漏斗,从多个进程/级别收集CUDA任务,并将其发送到GPU,就像它们来自单个进程一样,以便Hyper-Q能够生效。非常感谢您的解释。