Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mpirun-没有足够的可用插槽_Mpi_Openmpi_Hpc - Fatal编程技术网

mpirun-没有足够的可用插槽

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时,我可以“重载”它,使用的处理器比我的计算机上实际使用的处理器还要多。例如,在我的四核mac上,我可以运行
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
标志