1
1

7233 Коммитов

Автор SHA1 Сообщение Дата
Julien EMMANUEL
7d493c6bcd Uniform conditions in ob1 recv
In ob1 we have four similar conditions but they are not written
in a uniform way

Signed-off-by: Julien EMMANUEL <julien.emmanuel@inria.fr>
2020-11-19 22:27:49 +01:00
Julien EMMANUEL
208c2d270b Typo in ob1 comments
Seems like a copy/pasted typo in ob1 comments

Signed-off-by: Julien EMMANUEL <julien.emmanuel@inria.fr>
2020-11-19 16:50:29 +01:00
Jeff Squyres
12796a4aad
Merge pull request #8209 from devreal/fix-tuned-allgatherv
COLL TUNED: Use per-rank data size instead of total size for decision in allgatherv
2020-11-17 11:46:35 -05:00
Jeff Squyres
282be20e6f
Merge pull request #8210 from vspetrov/master
coll/hcoll: svatterv inplace fix
2020-11-14 10:25:25 -05:00
Jeff Squyres
67421c5d23
Merge pull request #8207 from ggouaillardet/topic/retain_datatypes_w
coll/base: do not drop const qualifier
2020-11-14 09:21:37 -05:00
Artem Polyakov
f9ef4b4ac0
Merge pull request #7632 from devreal/osc-ucx-progress
UCX osc: make progress on idle worker if none are active
2020-11-13 13:27:31 -08:00
Valentin Petrov
9fa00155f3 coll/hcoll: scatterv inplace fix
Signed-off-by: Valentin Petrov <valentinp@nvidia.com>
2020-11-13 19:15:37 +02:00
Joseph Schuchart
f670364d76 COLL TUNED: Use per-rank data size instead of total size for decision
The total size depends on number of ranks so the usual ranges don't work.
Thus, use the average across all ranks to make a decision.

Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-11-13 12:18:42 +01:00
Gilles Gouaillardet
c49e5e5c4a coll/base: do not drop const qualifier
MPI_Ialltoallw() and friends take a const MPI_Datatype types[] argument.
In order to be able to call OBJ_RELEASE(types[0]), we used to simply
drop the const modifier. This change make it right by introducing the
OBJ_RELEASE_NO_NULLIFY(object) macro that no more set object = NULL
if the object is freed.

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2020-11-13 17:31:04 +09:00
Raghu Raja
b7b9254488
Merge pull request #8178 from rajachan/whack-remote-cq-data-query
mtl/ofi: Check cq_data_size without querying providers again
2020-11-12 13:00:10 -08:00
Raghu Raja
30831fb7f0
Merge pull request #8186 from devreal/fix-tuned-dynamic
Fix some issues with dynamic algorithm selection in coll/tuned
2020-11-12 11:20:57 -08:00
Joseph Schuchart
581478dc91 UCX osc: make progress on default worker if none are active
Signed-off-by: Joseph Schuchart <schuchart@hlrs.de>
2020-11-11 23:23:31 +01:00
Joseph Schuchart
a15e5dc7f0 COLL TUNED: remove stray selection of linear algs for alreduce and allgather
These selections seem harmful in my measurements and don't seem to be
motivated by previous measurement data.

Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-11-11 18:40:24 +01:00
Jeff Squyres
c960d292ec Convert all README files to Markdown
A mindless task for a lazy weekend: convert all the README and
README.txt files to Markdown.  Paired with the slow conversion of all
of our man pages to Markdown, this gives a uniform language to the
Open MPI docs.

This commit moved a bunch of copyright headers out of the top-level
README.txt file, so I updated the relevant copyright header years in
the top-level LICENSE file to match what was removed from README.txt.

Additionally, this commit did (very) little to update the actual
content of the README files.  A very small number of updates were made
for topics that I found blatently obvious while Markdown-izing the
content, but in general, I did not update content during this commit.
For example, there's still quite a bit of text about ORTE that was not
meaningfully updated.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
Co-authored-by: Josh Hursey <jhursey@us.ibm.com>
2020-11-10 13:52:29 -05:00
Jeff Squyres
686c2142e2 ompi/mca/common/monitoring: add x perms to Perl scripts
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-11-10 13:52:28 -05:00
Raghu Raja
6233dea68d mtl/ofi: Check cq_data_size without querying providers again
This commit removes the unnecessary call to `fi_getinfo()` when
initializing the MTL. `cq_data_size` is a domain attribute that will be
available to the MTL from the initial query itself. FI_DIRECTED_RECV is
a primary capability that has to be requested for a provider to enable
it, so adding that to the initial requirement.  The redundant query was
also overwriting the contents of the prov object, which already had the
include/exclude filtering and multi-NIC logic applied to it.

Signed-off-by: Raghu Raja <craghun@amazon.com>
2020-11-09 19:22:25 +00:00
Raghu Raja
7a922c8774
Merge pull request #8177 from rajachan/coverity-fixes
Coverity fixes for recent OFI changes
2020-11-06 08:48:29 -08:00
Joseph Schuchart
22e289b742 coll/tuned: fix minor errors in comments
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-11-05 18:32:47 +01:00
Joseph Schuchart
04d198fc9f coll/tuned: don't select algorithms knowing when it's clear they would fall back to linear
Bcast: scatter_allgather and scatter_allgather_ring expect N_elem >= N_procs
Allreduce: rabenseifner expects N_elem >= pow2 nearest to N_procs

In all cases, the implementations will fall back to a linear implementation,
which will most likely yield the worst performance (noted for 4B bcast on 128 ranks)

Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-11-05 18:32:12 +01:00
Joseph Schuchart
7261255b8d coll/tuned: Mark global static algorithm as const
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-11-05 18:25:59 +01:00
Joseph Schuchart
06f605c1e1 coll/tuned: add hint about dynamic rules to mca parameters
The mca parameters coll_tuned_*_algorithm are ignored unless coll_tuned_use_dynamic_rules is true so mention that in the description.

Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-11-05 18:20:24 +01:00
Gilles Gouaillardet
26e42f9a0c op/avx: check for _mm512_mullo_epi64() AVX512 intrinsic
PGI (20.4) compiler do not define this intrinsic, so only build
AVX512 support if _mm512_mullo_epi64() intrisic is defined.

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2020-11-04 14:45:03 +09:00
Raghu Raja
917269b699 Coverity fixes for recent OFI changes
8017f12 introduced a new function to get the package rank of a process,
which had a pass-by-value signature (opal_process_info_t); and coverity
was not happy about it. This commit changes the signature to take a
reference to opal_process_info_t instead.

Signed-off-by: Raghu Raja <craghun@amazon.com>
2020-11-04 00:18:54 +00:00
Yossi Itigin
1f3e33441c
Merge pull request #8140 from hoopoepg/topic/pml-ucx-recv-improved-errhandling
PML/UCX: improved error processing in MPI_Recv
2020-11-03 13:08:42 +02:00
Jeff Squyres
e9e5dab8b9
Merge pull request #8153 from dancejic/multi
Using package_rank to select between NIC of equal distance from the process.
2020-11-02 15:27:37 -05:00
Sergey Oblomov
eb9405d53f PML/UCX: improved error processing in MPI_Recv
- improved error processing in MPI_Recv implementation
  of pml UCX
- added error handling for pml_ucx_mrecv call

Signed-off-by: Sergey Oblomov <sergeyo@nvidia.com>
2020-11-02 11:25:28 +02:00
Nikola Dancejic
8017f12801 Using package_rank to select between NIC of equal distance from the process.
If PMIX_PACKAGE_RANK is available, uses this value to select between multiple
NIC of equal distance between the current process. If this value is not
available, try to calculate it by getting the locality string from each local
process and assign a package_rank. If everything fails, fall back to using
process_id.rank to select the NIC. This last case is not ideal, but has a small
chance of occuring, and causes an output to be displayed to notify that this is
occuring.

Signed-off-by: Nikola Dancejic <dancejic@amazon.com>
2020-11-02 00:32:03 -08:00
Jeff Squyres
ee405ccaa5 coll/adapt and coll/han: fix trivial compiler warnings
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-10-30 10:41:14 -04:00
George Bosilca
154117515a Fix HAN issues reported by Coverity.
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2020-10-28 15:44:16 -04:00
Howard Pritchard
487bbf31ba
Merge pull request #8052 from hkuno/john.l.byrne/ofi_create_recv_tag_mask
use sync_send mask for ofi_create_recv_tag
2020-10-26 15:56:35 -06:00
Raghu Raja
2e5303f618
Merge pull request #8124 from rajachan/peek-probe-errorflow
mtl/ofi: Fix erroneous FI_PEEK/FI_CLAIM usage
2020-10-26 10:42:12 -07:00
bosilca
ce97090673
Merge pull request #7735 from bosilca/coll/han
A hierarchical, architecture-aware collective communication module
2020-10-26 00:07:03 -04:00
George Bosilca
16b49dc5b3 A complete overhaul of the HAN code.
Among many other things:
- Fix an imbalance bug in MPI_allgather
- Accept more human readable configuration files. We can now specify
  the collective by name instead of a magic number, and the component
  we want to use also by name.
- Add the capability to have optional arguments in the collective
  communication configuration file. Right now the capability exists
  for segment lengths, but is yet to be connected with the algorithms.
- Redo the initialization of all HAN collectives.

Cleanup the fallback collective support.
- In case the module is unable to deliver the expected result, it will fallback
  executing the collective operation on another collective component. This change
  make the support for this fallback simpler to use.
- Implement a fallback allowing a HAN module to remove itself as
  potential active collective module, and instead fallback to the
  next module in line.
- Completely disable the HAN modules on error. From the moment an error is
  encountered they remove themselves from the communicator, and in case some
  other modules calls them simply behave as a pass-through.

Communicator: provide ompi_comm_split_with_info to split and provide info at the same time
Add ompi_comm_coll_preference info key to control collective component selection

COLL HAN: use info keys instead of component-level variable to communicate topology level between abstraction layers
- The info value is a comma-separated list of entries, which are chosen with
  decreasing priorities. This overrides the priority of the component,
  unless the component has disqualified itself.
  An entry prefixed with ^ starts the ignore-list. Any entry following this
  character will be ingnored during the collective component selection for the
  communicator.
  Example: "sm,libnbc,^han,adapt" gives sm the highest preference, followed
  by libnbc. The components han and adapt are ignored in the selection process.
- Allocate a temporary buffer for all lower-level leaders (length 2 segments)
- Fix the handling of MPI_IN_PLACE for gather and scatter.

COLL HAN: Fix topology handling
 - HAN should not rely on node names to determine the ordering of ranks.
   Instead, use the node leaders as identifiers and short-cut if the
   node-leaders agree that ranks are consecutive. Also, error out if
   the rank distribution is imbalanced for now.

Signed-off-by: Xi Luo <xluo12@vols.utk.edu>
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2020-10-25 18:13:16 -04:00
Raghu Raja
39f8a86b65 mtl/ofi: Fix erroneous FI_PEEK/FI_CLAIM usage
The current iprobe/improbe implementations merely checks the return
code on the posted receive operation to tell if there is a match or
not. This commit moves the check to the probe's error callback
instead. Per the semantics defined in libfabric, the peek operation is
asynchronous and the results are to be fetched from the completion
queue. If no message is found matching the tags specified in the peek
request, then a completion queue error entry with err field set to
FI_ENOMSG will be available.

Signed-off-by: Raghu Raja <craghun@amazon.com>
2020-10-23 17:07:16 +00:00
Raghu Raja
415dddb9af mtl/ofi: Do not fail if error CQ is empty
In multi-threaded scenarios, any thread that attempts to read a CQ
when there's a pending error CQ entry gets an -FI_EAVAIL. Without
any serialization here (which is okay, since libfabric will protect
access to critical CQ objects), all threads proceed to read from the
error CQ, but only one thread fetches the entry while others get
-FI_EAGAIN indicating an empty queue, which is not erroneous.

Signed-off-by: Raghu Raja <craghun@amazon.com>
2020-10-21 21:27:29 +00:00
Nysal Jan K A
992e8f91bb
Merge pull request #8105 from AboorvaDevarajan/fix_zero2
pml/ucx: fix zero sized datatype transfers
2020-10-20 19:53:15 +05:30
Austen Lauria
23269ccaa6
Merge pull request #8079 from markalle/exported_symbol_names
symbol pollution
2020-10-13 11:48:43 -04:00
Aboorva Devarajan
202b81d95c pml/ucx: fix zero sized datatype transfers
Signed-off-by: Aboorva Devarajan <aburvadevarajan@gmail.com>
2020-10-13 01:58:50 -04:00
bsergentm
220b997a58 Coll/han Bull
* first import of Bull specific modifications to HAN

* Cleaning, renaming and compilation fixing Changed all future into han.

* Import BULL specific modifications in coll/tuned and coll/base

* Fixed compilation issues in Han

* Changed han_output to directly point to coll framework output.

* The verbosity MCA parameter was removed as a duplicated of coll verbosity

* Add fallback in han reduce when op cannot commute and ppn are imbalanced

* Added fallback wfor han bcast when nodes do not have the same number of process

* Add fallback in han scatter when ppn are imbalanced

+ fixed missing scatter_fn pointer in the module interface

Signed-off-by: Brelle Emmanuel <emmanuel.brelle@atos.net>
Co-authored-by: a700850 <pierre.lemarinier@atos.net>
Co-authored-by: germainf <florent.germain@atos.net>
2020-10-09 14:17:46 -04:00
Xi Luo
182c333b21 Initial import of the HAN collective module
a hierarchical, architecture-aware collective communication module.

Add Reduce and remove up_seg_size and low_seg_size in Bcast
Increase HAN's priority

Signed-off-by: Xi Luo <xluo12@vols.utk.edu>
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2020-10-09 14:17:46 -04:00
bosilca
a541ab933d
Merge pull request #8066 from devreal/spc-pml-ucx
PML UCX: add SPC instrumentation for sent/received message sizes
2020-10-07 21:56:27 -04:00
Mark Allen
34b42b1b09 symbol pollution
Made a couple vars static if they didn't look like they were used
more than one place, and added prefixes to a few.

Signed-off-by: Mark Allen <markalle@us.ibm.com>
2020-10-07 13:04:39 -04:00
bosilca
9f114c6afe
Merge pull request #8067 from devreal/fix-ob1-spc
PML OB1: Fix potential overcounting of SPC sent/received message sizes and account for fin messages
2020-10-05 22:26:24 -04:00
Brian Barrett
0e9581d478 build: Move hwloc to a 3rd-party package
With Open MPI 5.0, the decision was made to stop building
3rd-party packages, such as Libevent, HWLOC, PMIx, and PRRTE as
MCA components and instead 1) start relying on external libraries
whenever possible and 2) Open MPI builds the 3rd party
libraries (if needed) as independent libraries, rather than
linked into libopen-pal.

This patch moves the hwloc library bundled with Open MPI from a
MCA framework to a stand-alone library built outside of OPAL.  Due
to the amount of code in the MCA base (and its assumptions about
being part of an MCA framework), the framework is left with no
active components.  Any pre-installed version of HWLOC 1.6 or
newer is preferred over the internal version.

Signed-off-by: Brian Barrett <bbarrett@amazon.com>
2020-10-01 16:55:59 +00:00
Brian Barrett
9ffac85650 build: Move libevent to a 3rd-party package
With Open MPI 5.0, the decision was made to stop building
3rd-party packages, such as Libevent, HWLOC, PMIx, and PRRTE as
MCA components and instead 1) start relying on external libraries
whenever possible and 2) Open MPI builds the 3rd party
libraries (if needed) as independent libraries, rather than
linked into libopen-pal.

This patch moves libevent from an MCA framework to a stand-alone
library built outside of OPAL.  A wrapper in opal/util is provided
to minimize the unnecessary changes in the rest of the code.  When
using the internal Libevent, it will be installed as a stand-alone
libevent.a, instead of bundled in OPAL.  Any pre-installed version
of Libevent at or after 2.0.21 is preferred over the internal
version.

Signed-off-by: Brian Barrett <bbarrett@amazon.com>
2020-10-01 16:55:58 +00:00
Nathan Hjelm
1f5ed0b83d
Merge pull request #8070 from devreal/osc-page-align
OSC RDMA: put memory for each process into separate pages
2020-09-29 07:54:45 -06:00
Joseph Schuchart
52b52b8ebb OSC RDMA: only touch pages before memory registration, don't fill them
Signed-off-by: Joseph Schuchart <schuchart@hlrs.de>
2020-09-29 07:45:07 +02:00
Joseph Schuchart
d11ccbada9 OSC RDMA: put memory of each process into separate pages
Signed-off-by: Joseph Schuchart <schuchart@hlrs.de>
2020-09-29 07:44:17 +02:00
Joseph Schuchart
1fdf05f634 pml/ob1: fix SPC potential over-counting when sending ack and requesting put
mca_pml_ob1_recv_request_put_frag is used to request a put from the peer if get fails
mca_pml_ob1_recv_request_ack_send_btl is used to send an acknowledgement, not data

Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-09-28 15:38:47 +02:00
Joseph Schuchart
a9ed53aa66 pml/ob1: add SPC instrumentation of sent fin messages
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
2020-09-28 15:19:29 +02:00