2

基本上我想在单个 GPU (NVidia K20c) 上运行多个 MPI 等级,并且我知道MPS和 Kepler 的Hyper-Q的存在。

但是,我的问题是,Hyper-Q 本身是否足以满足我的需要?还是我必须使用 MPS?根据上面的 Hyper-Q 链接,“启用 Hyper-Q 不需要额外的编码工作。只需要一个安装了 CUDA 5 并设置环境变量以让多个 MPI 等级共享 GPU 的 Tesla K20 GPU - Hyper -Q 然后就可以使用了。”

这是否意味着我根本不需要 MPS?

ps,我也知道关于类似主题的以下问题,但似乎并没有清楚地回答我的问题。 使用 CUDA6.5 + MPI 时是否必须使用 MPS(多进程服务)?

谢谢。

4

1 回答 1

4

您可以在单个 GPU 上运行多个没有 MPS 的 MPI 等级。在这种情况下,所有排名 (GPU) 代码都将序列化。给定等级的 GPU 代码只有在与前一个等级相关的 GPU 代码完全完成并退出 GPU 时才会开始执行。

如果您希望一个级别的 GPU 代码有机会与另一级别的 GPU 代码同时执行,那么 MPS 将是必要的。如果与等级相关的 GPU 代码充分利用了 GPU,那么您不太可能从 MPS 中看到太多好处。可以观察到等级 GPU 代码可以与另一个等级的 GPU 代码同时执行的显着好处。

于 2014-10-17T20:35:23.707 回答