Unable to use all cores with mpirun

僤鯓⒐⒋嵵緔 提交于 2019-12-06 04:17:46

问题


I'm testing a simple MPI program on my desktop (Ubuntu LTS 16.04/ Intel® Core™ i3-6100U CPU @ 2.30GHz × 4/ gcc 4.8.5 /OpenMPI 3.0.0) and mpirun won't let me use all of the cores on my machine (4). When I run:

$ mpirun -n 4 ./test2

I get the following error:

--------------------------------------------------------------------------
There are not enough slots available in the system to satisfy the 4 slots
that were requested by the application:
  ./test2

Either request fewer slots for your application, or make more slots available
for use.
--------------------------------------------------------------------------

But if I run with:

$ mpirun -n 2 ./test2

everything works fine.

I've seen from other answers that I can check the number of processors with

cat /proc/cpuinfo | grep processor | wc -l

and this tells me that I have 4 processors. I'm not interested in oversubscribing, I'd just like to be able to use all my processors. Can anyone help?


回答1:


Your processor has 4 hyperthreads but only 2 cores (see the specs here).

By default, Open MPI does not run more than one MPI task per core. You can have Open MPI run up to one MPI task per hyperthread with the following option

mpirun --use-hwthread-cpus ...

FWIW

The command you mentioned reports the number of hyperthreads.

A better way to figure out the topology of a machine is via the lstopo command from the hwloc package.

MPI tasks are not bound on cores nor threads on OS X, so if you are running on a Mac, the --oversubscribe -np 4 would lead to the same result.




回答2:


Use $ lscpu the number of cores per socket * number of sockets would give you number of physical cores(the ones that you can use for mpi) where as sockets per core * number of sockets * threads per core will give you number of logical cores(the one that you get by using the command $ cat /proc/cpuinfo | grep processor | wc -l)



来源:https://stackoverflow.com/questions/48835603/unable-to-use-all-cores-with-mpirun

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!