cuda - 在单个 GPU 上运行多个 MPI 等级时我真的需要 MPS,还是 Kepler 的 Hyper-Q 本身就足够了?

标签 cuda mpi kepler mps

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

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

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

p.s.,我也知道以下有关类似主题的问题,但似乎并没有清楚地回答我的问题。 Do I have to use the MPS (MULTI-PROCESS SERVICE) when using CUDA6.5 + MPI?

谢谢。

最佳答案

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

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

关于cuda - 在单个 GPU 上运行多个 MPI 等级时我真的需要 MPS,还是 Kepler 的 Hyper-Q 本身就足够了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432267/

相关文章:

cuda - 为什么GK110有192个核心和4个扭曲?

cuda - P2P 复制的 cudaMemcpy() 和 cudaMemcpyPeer() 有什么区别?

c++ - 是否有任何带有执行器的在线编译器可以编译使用特定于 GPU 的 C/C++ 代码的应用程序?

cuda - Docker容器中的cuda版本是否可以与主机不同?

java - Windows 10 Cygwin 中的 OpenMPI java 绑定(bind)

java - Eclipse Glassfish 4.0 无法按时启动服务器

caching - 合并访问与广播访问 GPU 上的全局内存位置

ruby - 使用 ruby​​ 计算太阳体的 x、y、z 位置

c - 如何使用源代码测量每个节点的 MPI 基准?

MPI + GPU : how to mix the two techniques