Gilles:

Thank you for your reply.  Unfortunately, it did not quite help me.

As I said in my e-mail, I can run this on a Mac by only specifying 

$mympirun -np 12  $exe input1

without worrying about “slots”.

So, my questions are:

1. Why do I need “slot” on the Linux?  

2. Is there a relation between slots, sockets, cores and threads?  The 
workstation has 1 socket, 8 cores per socket and 2 threads per core, or 16 
CPUs.  How many slots are there?

3. If I need to specify “slot”, what is the syntax?

I tried: 

$mympirun -np 12 slots=12 $exe input1

and got:
======================================================
No protocol specified
--------------------------------------------------------------------------
There are not enough slots available in the system to satisfy the 12
slots that were requested by the application:

 slots=12

Either request fewer slots for your application, or make more slots
available for use.
======================================================
Finally, I made it work by using

$mympirun -np 12 --use-hwthread-cpus $exe input1

and ignored all the slot options, so I missed the chance to learn about slots.

I did not find an example on how to specify the “slot” although the message 
lists four options - four options but zero examples.

Thank you,
Paul

> On Nov 7, 2020, at 8:23 PM, Gilles Gouaillardet via users 
> <users@lists.open-mpi.org> wrote:
> 
> Paul,
> 
> a "slot" is explicitly defined in the error message you copy/pasted:
> 
> "If none of a hostfile, the --host command line parameter, or an RM is
> present, Open MPI defaults to the number of processor cores"
> 
> The error message also lists 4 ways on how you can move forward, but
> you should first ask yourself if you really want to run 12 MPI tasks
> on your machine.
> 
> Cheers,
> 
> Gilles
> 
> On Sun, Nov 8, 2020 at 11:14 AM Paul Cizmas via users
> <users@lists.open-mpi.org> wrote:
>> 
>> Hello:
>> 
>> I just installed OpenMPI 4.0.5 on a Linux machine running Pop!_OS (made by 
>> System76).  The workstation has the following architecture:
>> 
>> Architecture:                    x86_64
>> CPU op-mode(s):                  32-bit, 64-bit
>> Byte Order:                      Little Endian
>> Address sizes:                   39 bits physical, 48 bits virtual
>> CPU(s):                          16
>> On-line CPU(s) list:             0-15
>> Thread(s) per core:              2
>> Core(s) per socket:              8
>> Socket(s):                       1
>> NUMA node(s):                    1
>> Vendor ID:                       GenuineIntel
>> CPU family:                      6
>> 
>> I am trying to run on the Linux box a code that I usually run on a Mac OS 
>> without any issues.
>> 
>> The script that I use is:
>> 
>> exe='/usr/bin/mycode' # on jp2
>> mympirun='/opt/openmpi/4.0.5/bin/mpirun'           # GFortran on jp2
>> $mympirun -np 12  $exe input1
>> 
>> I get the following error:
>> ====================================================
>> No protocol specified
>> --------------------------------------------------------------------------
>> There are not enough slots available in the system to satisfy the 12
>> slots that were requested by the application:
>> 
>> /usr/bin/mycode
>> 
>> Either request fewer slots for your application, or make more slots
>> available for use.
>> 
>> A "slot" is the Open MPI term for an allocatable unit where we can
>> launch a process.  The number of slots available are defined by the
>> environment in which Open MPI processes are run:
>> 
>> 1. Hostfile, via "slots=N" clauses (N defaults to number of
>>    processor cores if not provided)
>> 2. The --host command line parameter, via a ":N" suffix on the
>>    hostname (N defaults to 1 if not provided)
>> 3. Resource manager (e.g., SLURM, PBS/Torque, LSF, etc.)
>> 4. If none of a hostfile, the --host command line parameter, or an
>>    RM is present, Open MPI defaults to the number of processor cores
>> 
>> In all the above cases, if you want Open MPI to default to the number
>> of hardware threads instead of the number of processor cores, use the
>> --use-hwthread-cpus option.
>> 
>> Alternatively, you can use the --oversubscribe option to ignore the
>> number of available slots when deciding the number of processes to
>> launch.
>> =======================================================
>> 
>> I do not understand “slots”.  The architecture description of my Linux box 
>> lists sockets, cores and threads, but not slots.
>> 
>> What shall I specify instead of "-np 12”?
>> 
>> Thank you,
>> Paul

Reply via email to