Anthony,

a few things ...
- Open MPI v1.10 is no more supported
- you should at least use v2.0, preferably v2.1 or even the newly released 3.0
- if you need to run under torque/pbs, then Open MPI should be built
with tm support
- openhpc.org provides Open MPI 1.10.7 with tm support

Cheers,

Gilles

On Wed, Sep 27, 2017 at 12:57 PM, Anthony Thyssen
<a.thys...@griffith.edu.au> wrote:
> This is not explained in the manual, when giving a hostfile (though I was
> suspecting that was the case).
>
> However running one process on each node listed WAS the default behaviour in
> the past.   In fact that is the default behaviour on a old Version 1.5.4
> OpenMPI, I have on an old cluster which I am replacing.
>
> I suggest that this be explicitly explained in at least the manpages, and
> preferably the OpenMPI FAQ too.
>
>
> It explains why the manpages and FAQ seems to avoids specifying a host twice
> in a --hostfile, and yet specifically does specify a host twice in the next
> section on the --hosts option.  But no explanation is given!
>
> It explains why if I give a --pernode option, it runs only one process on
> each host BUT ignores the fact that a host was listed twice. And if a -np
> option was also given with --pernode errors with "more processes than the
> ppr"
>
>
> What that does NOT explain was why it completely ignores the  "ALLOCATED
> NODES" that was reported in the debug output, as shown above.
>
> The only reason I posted for help was because the debug out seems to
> indicate that it should be performing as I expected.
>
> ---
>
> Is there an option to force OpenMPi to use the OLD behaviour?  Just as many
> web pages indicates it should be doing?
> I have found no such option in the man pages.
>
> Without such an option, it makes the passing the $PBS_NODEFILE (from torque)
> to the "mpirun" command much more difficult.  Which was why I developed the
> "awk" script above, or try an convert it to a comma separated --host
> argument, that does work.
>
> It seems a LOT of webpages on the net all, assume the old behaviour of
> --hostfile which is why this new behaviour is confusing me, especially with
> no explicit mention of this behaviour in the manual or OpenMPI FAQ pages.
>
> ---
>
> I have seen many PBS guides specify a --np option for the MPI command.
> Though I could not see the point of it.
>
> A quick test seemed to indicate that it works, so I thought perhaps that was
> the way to specify the old behaviour.
>
> # mpirun --hostfile hostfile.txt hostname
> node21.emperor
> node22.emperor
> node21.emperor
> node22.emperor
> node23.emperor
> node23.emperor
>
> # mpirun --hostfile hostfile.txt --np $(wc -l <hostfile.txt) hostname
> node21.emperor
> node22.emperor
> node22.emperor
> node21.emperor
>
> I think however that was purely a fluke.  As when I expand it to a PBS batch
> script command, to run on a larger number of nodes...
>
> mpirun --hostfile $PBS_NODEFILE -np $PBS_NP hostname
>
> Results is that OpenMPI still runs as many of the processes as it can (up to
> the NP limit) on the first few nodes given. And node as Torque PBS
> specified.
>
> ---
>
> ASIDE: The auto-discover does not appear to work very well. Tests with a mix
> of dual and quad-core machines, often result in only
> 2 processes on some of the quad-core machines.
>
> I saw mention of a --hetero-nodes which works to make auto-discovery work as
> expected.  BUT it is NOT mentioned in the manual,  and to me "hetero"
> implies a heterogeneous set of computers (all the same) rather than a mix of
> computer types. As such the option name does not make any real sense to me.
>
> ---
>
> Now I have attempted to recompile the OpenMPI package, to include torque
> support, but the RPM build specifications is overly complex (as is typical
> for RHEL) .  I have yet to succeed in getting a replacement OpenMPI package
> with the "tm" resource manager, that works.   Redhat has declared that it
> will not do it as "Torque" is EPEL, and not RHEL as "OpenMPI" is.
>
> Also I hate having to build local versions of packages as it means I then no
> longer get package updates automatically.
>
>
>
> On Wed, Sep 27, 2017 at 12:40 PM, r...@open-mpi.org <r...@open-mpi.org> wrote:
>>
>> That is correct. If you don’t specify a slot count, we auto-discover the
>> number of cores on each node and set #slots to that number. If an RM is
>> involved, then we use what they give us
>>
>> Sent from my iPad
>>
>> On Sep 26, 2017, at 8:11 PM, Anthony Thyssen <a.thys...@griffith.edu.au>
>> wrote:
>>
>>
>> I have been having problems with OpenMPI on a new cluster of machines,
>> using
>> stock RHEL7 packages.
>>
>> ASIDE: This will be used with Torque-PBS (from EPEL archives), though
>> OpenMPI
>> (currently) does not have the "tm" resource manager configured to use PBS,
>> as you
>> will be able to see in the debug output below.
>>
>> # mpirun -V
>> mpirun (Open MPI) 1.10.6
>>
>> # sudo yum list installed openmpi
>> ...
>> Installed Packages
>> openmpi.x86_64    1.10.6-2.el7    @rhel-7-server-rpms
>> ...
>>
>> More than likely I am doing something fundamentally stupid, but I have no
>> idea what.
>>
>> The problem is that OpenMPI is not obeying the given hostfile, and running
>> one
>> process on each host given in the list. The manual and all my (meagre)
>> experience
>> is that that is what it is meant to do.
>>
>> Instead it runs the maximum number of processes that is allowed to run for
>> the CPU
>> of that machine.  That is a nice feature, but NOT what is wanted.
>>
>> There is no "/etc/openmpi-x86_64/openmpi-default-hostfile" configuration
>> present.
>>
>> For example given the hostfile
>>
>> # cat hostfile.txt
>> node21.emperor
>> node22.emperor
>> node22.emperor
>> node23.emperor
>>
>> Running OpenMPI on the head node "shrek", I get the following,
>> (ras debugging enabled to see the result)
>>
>> # mpirun --hostfile hostfile.txt --mca ras_base_verbose 5 mpi_hello
>> [shrek.emperor:93385] mca:base:select:(  ras) Querying component
>> [gridengine]
>> [shrek.emperor:93385] mca:base:select:(  ras) Skipping component
>> [gridengine]. Query failed to return a module
>> [shrek.emperor:93385] mca:base:select:(  ras) Querying component
>> [loadleveler]
>> [shrek.emperor:93385] mca:base:select:(  ras) Skipping component
>> [loadleveler]. Query failed to return a module
>> [shrek.emperor:93385] mca:base:select:(  ras) Querying component
>> [simulator]
>> [shrek.emperor:93385] mca:base:select:(  ras) Skipping component
>> [simulator]. Query failed to return a module
>> [shrek.emperor:93385] mca:base:select:(  ras) Querying component [slurm]
>> [shrek.emperor:93385] mca:base:select:(  ras) Skipping component [slurm].
>> Query failed to return a module
>> [shrek.emperor:93385] mca:base:select:(  ras) No component selected!
>>
>> ======================   ALLOCATED NODES   ======================
>>         node21.emperor: slots=1 max_slots=0 slots_inuse=0 state=UNKNOWN
>>         node22.emperor: slots=2 max_slots=0 slots_inuse=0 state=UNKNOWN
>>         node23.emperor: slots=1 max_slots=0 slots_inuse=0 state=UNKNOWN
>> =================================================================
>> Hello World! from process 0 out of 6 on node21.emperor
>> Hello World! from process 2 out of 6 on node22.emperor
>> Hello World! from process 1 out of 6 on node21.emperor
>> Hello World! from process 3 out of 6 on node22.emperor
>> Hello World! from process 4 out of 6 on node23.emperor
>> Hello World! from process 5 out of 6 on node23.emperor
>>
>> These machines are all dual core CPU's.  If a quad core is added to the
>> list
>> I get 4 processes on that node. And so on, BUT NOT always.
>>
>> Note that the "ALLOCATED NODES" list is NOT obeyed.
>>
>> If on the other hand I add "slot=#" to the provided hostfile  it works as
>> expected!
>> (the debug output was not included as it is essentially the same as above)
>>
>> # awk '{n[$0]++} END {for(i in n)print i,"slots="n[i]}' hostfile.txt >
>> hostfile_slots.txt
>> # cat hostfile_slots.txt
>> node23.emperor slots=1
>> node22.emperor slots=2
>> node21.emperor slots=1
>>
>> # mpirun --hostfile hostfile_slots.txt mpi_hello
>> Hello World! from process 0 out of 4 on node23.emperor
>> Hello World! from process 1 out of 4 on node22.emperor
>> Hello World! from process 3 out of 4 on node21.emperor
>> Hello World! from process 2 out of 4 on node22.emperor
>>
>> Or if I convert the hostfile into a comma separated host list it also
>> works.
>>
>> # tr '\n' , <hostfile.txt; echo
>> node21.emperor,node22.emperor,node22.emperor,node23.emperor,
>> # mpirun --host $(tr '\n' , <hostfile.txt) mpi_hello
>> Hello World! from process 0 out of 4 on node21.emperor
>> Hello World! from process 1 out of 4 on node22.emperor
>> Hello World! from process 3 out of 4 on node23.emperor
>> Hello World! from process 2 out of 4 on node22.emperor
>>
>>
>> Any help as to why --hostfile does not work as expected and debugged says
>> it
>> should be working would be appreciated.
>>
>> As you can see I have been studing this problem a long time.  Google has
>> not
>> been very helpful.  All I seem to get are man pages, and general help
>> guides.
>>
>>
>>   Anthony Thyssen ( System Programmer )    <a.thys...@griffith.edu.au>
>>
>> --------------------------------------------------------------------------
>>   All the books of Power had their own particular nature.
>>   The "Octavo" was harsh and imperious.
>>   The "Bumper Fun Grimore" went in for deadly practical jokes.
>>   The "Joy of Tantric Sex" had to be kept under iced water.
>>                                     -- Terry Pratchett, "Moving Pictures"
>>
>> --------------------------------------------------------------------------
>>
>>
>>
>> _______________________________________________
>> users mailing list
>> users@lists.open-mpi.org
>> https://lists.open-mpi.org/mailman/listinfo/users
>
>
>
> _______________________________________________
> users mailing list
> users@lists.open-mpi.org
> https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.open-mpi.org
https://lists.open-mpi.org/mailman/listinfo/users

Reply via email to