mpirun-没有足够的可用插槽
通常,当我使用mpirun时,我可以“重载”它,使用的处理器比我的计算机上实际使用的处理器还要多。例如,在我的四核mac上,我可以运行mpirun-没有足够的可用插槽,mpi,openmpi,hpc,Mpi,Openmpi,Hpc,通常,当我使用mpirun时,我可以“重载”它,使用的处理器比我的计算机上实际使用的处理器还要多。例如,在我的四核mac上,我可以运行mpirun-np29 python-c“打印‘嘿’”没问题。我现在在另一台机器上,该机器抛出以下错误: $ mpirun -np 25 python -c "print 'hey'" -------------------------------------------------------------------------- There are not e
mpirun-np29 python-c“打印‘嘿’”
没问题。我现在在另一台机器上,该机器抛出以下错误:
$ 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在这里不起作用?有什么方法可以克服此错误消息并使用可用的处理器成功运行吗?根据,您可以使用主机文件超额订阅节点。在继续之前,请小心,这样会严重降低节点的性能。此外,如果用于运行应用程序的系统使用的是队列系统,则这可能无效
首先创建一个hostfile(名为hostfile),其中包含
localhost slots=25
只需像这样运行应用程序
mpirun --hostfile hostfile -np 25 python -c "print 'hey'"
显然,使用mpirun的“-oversubscribe”选项可以实现超额订购-使用running torque/maui为我做了这个把戏你可能是指超额订购,而不是过载或超频。顺便说一句,你使用哪种MPI实现?@Harald我在几个与MPI相关的问题上得到了这个问题,答案是我不知道。非管理员可以找到这些信息吗?
mpirun--version
产生(开放式MPI)1.7.3
,这很奇怪。我在四核系统上使用OpenMPI 1.10,您的mpirun命令工作得很好。您能尝试一下有关使用主机文件在OpenMPI上过度订阅的信息吗?这似乎比公认的答案好得多。请注意,--oversubscribe
标志是OpenMPI 3.x的一项功能。OpenMPI 2.x中不存在此标志,但默认情况下允许超额订阅。嗯。。。OP提出问题时,Openmpi 3.0不存在。很高兴看到openmpi使超额订阅变得更容易。这两种方法都有效,但就我个人而言,我会采用这种解决方案。您引用的链接特别指出,不应声明超过机器中可用的插槽数。插槽应说明可用(或更少)处理器的实际数量,若要超额订购,应使用--oversubscribe
标志