mpirun - 没有足够的可用插槽
Posted
技术标签:
【中文标题】mpirun - 没有足够的可用插槽【英文标题】:mpirun - not enough slots available 【发布时间】:2016-06-12 19:00:57 【问题描述】:通常当我使用 mpirun 时,我可以“超载”它,使用比我计算机上实际数量更多的处理器。比如在我的四核mac上,我可以运行mpirun -np 29 python -c "print 'hey'"
没问题。我现在在另一台机器上,它抛出以下错误:
$ mpirun -np 25 python -c "print 'hey'"
--------------------------------------------------------------------------
There are not enough slots available in the system to satisfy the 25 slots
that were requested by the application:
python
Either request fewer slots for your application, or make more slots available
for use.
--------------------------------------------------------------------------
为什么“超频”mpirun 在这里不起作用?有没有办法可以克服此错误消息并成功运行比可用处理器更多的处理器?
【问题讨论】:
您的意思可能是超额订阅,而不是超载或超频。顺便说一句,您使用哪种 MPI 实现? @Harald 我在几个与 mpi 相关的问题上得到了这个问题,答案是我不知道。非管理员是否可以找到这些信息?mpirun --version
产生(Open MPI) 1.7.3
这很奇怪。我在四核系统上使用 OpenMPI 1.10,你的 mpirun 命令就像一个魅力。
你能试试这个关于使用主机文件在 openmpi 上超额订阅的信息吗? open-mpi.org/faq/?category=running#oversubscribing
【参考方案1】:
根据https://www.open-mpi.org/faq/?category=running#oversubscribing,您可以使用主机文件超额订阅您的节点。在继续之前,请注意这种方式可能会严重降低节点的性能。此外,如果您用于运行应用程序的系统使用的是队列系统,这可能无效。
首先创建一个hostfile(命名为hostfile)包含
localhost slots=25
简单地运行你的应用程序
mpirun --hostfile hostfile -np 25 python -c "print 'hey'"
【讨论】:
您引用的链接明确指出,不应说明机器中可用的插槽数。插槽应说明可用处理器的实际数量(或更少),并且为了超额订阅,应使用--oversubscribe
标志
我遇到“Open RTE 无法打开敌对 xxx”。但是文件在那里。有什么帮助吗?【参考方案2】:
显然,使用 mpirun 的“--oversubscribe”选项可以实现超额订阅 - 运行扭矩/maui 对我有用
【讨论】:
这似乎比接受的答案要好得多。请注意,--oversubscribe
标志是 OpenMPI 3.x 的一个特性。 OpenMPI 2.x 中不存在该标志,但这里默认允许超额订阅。
嗯...当 OP 提出问题时,Openmpi 3.0 并不存在。很高兴看到 openmpi 让超额订阅变得更容易。
两者都有效,但就个人而言,我会选择这个解决方案以上是关于mpirun - 没有足够的可用插槽的主要内容,如果未能解决你的问题,请参考以下文章
Flexbox 导致 adsense 错误:“adsbygoogle.push() 错误:没有可用宽度 = 0 的插槽大小”