1
1

30126 Коммитов

Автор SHA1 Сообщение Дата
Gilles Gouaillardet
129b5ee6ff 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>
(cherry picked from commit c49e5e5c4a6902a7bf462a98c24c9ebd86b4ab63)
2020-11-14 10:29:32 -05:00
Jeff Squyres
dd3a00a7ae
Merge pull request #8211 from vspetrov/v4.1.x
V4.1.x coll/hcoll: svatterv inplace fix
2020-11-14 10:26:29 -05:00
Ralph Castain
4993a091a0
Correctly skip the "mpirun" node when launching orted on it
Mark the node as "unusable" so it does not get included when computing
number of procs for the case where the user does not specify -np.

Signed-off-by: Ralph Castain <rhc@pmix.org>
2020-11-13 23:10:42 -08:00
Valentin Petrov
9c36c28816 coll/hcoll: scatterv inplace fix
Signed-off-by: Valentin Petrov <valentinp@nvidia.com>
(cherry picked from commit 9fa0015)
2020-11-13 21:10:38 +02:00
Raghu Raja
093570a2e1
Merge pull request #8205 from rajachan/whack-remote-cq-data-query-41x
[v4.1.x] mtl/ofi: Check cq_data_size without querying providers again
2020-11-12 17:20:50 -08:00
Jeff Squyres
fa83779fec
Merge pull request #8202 from jjhursey/v4.1-pmix-3.2.1
v4.1.x: Update Internal PMIx to OpenPMIx v3.2.1
2020-11-12 17:40:10 -05:00
Raghu Raja
203a930dfa 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>
(cherry picked from commit 6233dea68d8495e20746c8e8d8af8d9c03a20206)
2020-11-12 21:15:10 +00:00
Jeff Squyres
6f21a39372
Merge pull request #8198 from devreal/fix-tuned-dynamic-v4.1.x
Fix some issues with dynamic algorithm selection in coll/tuned
2020-11-12 13:57:21 -05:00
Joshua Hursey
59a6a4dea2
v4.1.x: Update Internal PMIx to OpenPMIx v3.2.1
Signed-off-by: Joshua Hursey <jhursey@us.ibm.com>
2020-11-12 12:39:01 -06:00
Joseph Schuchart
3cae9f7874 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>
(cherry picked from commit a15e5dc7f042f21f8adc08453b13bc7210bf2bac)
2020-11-11 18:43:13 +01:00
Joseph Schuchart
aec55f1a8c coll/tuned: fix minor errors in comments
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
(cherry picked from commit 22e289b74217e9e98e058b8a8d6ae9c2806ba30d)
2020-11-11 18:42:59 +01:00
Raghu Raja
ff89195381
Merge pull request #8176 from dancejic/multi-v4.1.x
v4.1.x: Using package_rank to select between NIC of equal distance from the process
2020-11-10 22:00:52 -08:00
Joseph Schuchart
5e19de8366 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>
(cherry picked from commit 04d198fc9f4b592fc512b27428d3158e279b51e1)
2020-11-10 22:27:00 +01:00
Joseph Schuchart
4a3f2afcbe coll/tuned: Mark global static algorithm as const
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
(cherry picked from commit 7261255b8df40979e334cb9d09d68b20b34bfb17)
2020-11-10 22:27:00 +01:00
Joseph Schuchart
a9ede520c4 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>
(cherry picked from commit 06f605c1e11dad9804232306838141d5a50a1929)
2020-11-10 22:26:59 +01:00
Ralph Castain
ec3589389a Correct computation of relative locality
Ensure we always pass the cpuset as well as the locality string for each
proc. Correct the mtl/ofi component's computation of relative locality
as the function being called expects to be given the locality string of
each proc, not the cpuset. If the locality string of the current proc
isn't available, then use the cpuset if available and compute the
locality before trying to compute relative localities of our peers.

Signed-off-by: Ralph Castain <rhc@pmix.org>
2020-11-10 13:07:55 -08:00
Nikola Dancejic
3f863aab8a v4.1.x: 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.

Some of the information in master branch is not available for the multi-NIC
patch, such as myprocinfo.rank. This info is used to select between multiple
NIC of equal distance to the process. This adapts the previous commit to work
with the v4.1.x branch.

Signed-off-by: Nikola Dancejic <dancejic@amazon.com>
(cherry picked from commit 8017f1280137dee4d5fc7dac0a5c627e72e48058)
2020-11-10 13:05:16 -08:00
Jeff Squyres
74a743fc21
Merge pull request #8192 from jsquyres/pr/v4.1.x/fix-minor-mistake-in-mpirun.1in
v4.1.x: orterun.1in: fix minor mistake in :PE=2 example and add more descriptions/explanations
2020-11-09 15:02:38 -05:00
Jeff Squyres
df73e4a3e6 orterun.1in: add some markup
Add some nroff markup into the paragraph, just to clearly delineate
the option names from the paragraph text.  No other content changes.

This is not a cherry-pick from master because PRRTE has replaced ORTE
on master, and orterun.1in no longer exists in master.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 25f84bee647f01926ff938e98cb7ee92c511c962)
2020-11-09 12:39:32 -05:00
Jeff Squyres
405dc6e7f2 orterun.1in: define "slot" and "processor element"
Add descriptive definitions of "slot" and "processor element" at the
top of the man page (and effectively delete / move some text from
lower in the man page up into those definitions).

Also add a little blurb in the --use-hwthread-cpus description about how
it changes the definition of "processor element".

This is not a cherry-pick from master because PRRTE has replaced ORTE
on master, and orterun.1in no longer exists in master.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 07b8937d4ae8d64b6d2394f4272e705a2ec89656)
2020-11-09 12:39:32 -05:00
Jeff Squyres
16d88941ef orterun.1in: fix minor mistake in :PE=2 example
Fix mistake in orterun(1) (i.e., mpirun(1)) with an example using the
:PE=x modifier.  Additionally, add some extra text with some further
explanation.

This is not a cherry-pick from master because PRRTE has replaced ORTE
on master, and orterun.1in no longer exists in master.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 7384972e288e0037c1b5d25a08b6e54b0cfff1e1)
2020-11-09 12:39:32 -05:00
Jeff Squyres
bed064f198
Merge pull request #8181 from ggouaillardet/topic/v4.1.x/avx512_pgi
op/avx: check for _mm512_mullo_epi64() AVX512 intrinsic
2020-11-08 14:32:13 -05:00
Sergey Oblomov
59a47c20b7 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>
(cherry picked from commit eb9405d53fcf0e0867ca055e9c13c0a10dcf6628)

Conflicts:
	ompi/mca/pml/ucx/pml_ucx.c
2020-11-06 10:50:55 +02:00
Jeff Squyres
fd39daa408
Merge pull request #8188 from jsquyres/pr/v4.1.x/getdate-fixes
v4.1.x: Some getdate.sh fixes
2020-11-05 18:04:01 -05:00
Jeff Squyres
ab86c2793b opal_functions.m4: add comment
No code or logic changes.

Add commit about why it's ok to use $srcdir here
(vs. $OMPI_TOP_SRCDIR).

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit a6a0d511f9e75499e215388311fa1b7895b7f1ba)
2020-11-05 12:16:11 -08:00
Jeff Squyres
c85d591b51 config/Makefile.am: ensure getdate.sh is in dist tarball
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 91a5af83cdbf9b98a45bce8d262cead4d9f2f839)
2020-11-05 12:16:08 -08:00
Gilles Gouaillardet
c12540c758 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>
(cherry picked from commit 26e42f9a0c21187247ec072b5bacfb39e7a9f9f7)
2020-11-04 15:29:09 +09:00
Jeff Squyres
6bb3ef4d1c
Merge pull request #8172 from jsquyres/pr/v4.1.0/NEWS-updates
NEWS: More updates for v4.1.0
2020-11-02 17:14:52 -05:00
Jeff Squyres
8133adfae3 NEWS: More updates for v4.1.0
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2020-11-02 13:00:49 -08:00
Jeff Squyres
40e104d087
Merge pull request #8123 from jjhursey/v4.1-pmix-v3.2
v4.1.x: Update Internal PMIx to OpenPMIx v3.2.1rc1
2020-11-02 15:29:17 -05:00
Jeff Squyres
8c1d8305b4
Merge pull request #8148 from jsquyres/pr/v4.1.x/reproducible-build
v4.1.x: reproducible builds + portability fix
2020-11-01 07:23:37 -05:00
Jeff Squyres
71ee907b0b
Merge pull request #8164 from jsquyres/pr/v4.1.x/keyval-parse-tweaks
v4.1.x: Keyval parse tweaks
2020-10-31 13:18:55 -04:00
Jeff Squyres
c10a85eea3 keyval_parse.c: update whitespace/comments
Slightly improve comments and update some whitespace.

No code or logic changes.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 8ed1d28fb4afcc54bc4d093bfcc53acae3d2fa58)
2020-10-31 06:48:14 -07:00
Jeff Squyres
19c863b6fb keyval_parse.c: ensure to init values
Coverity complained about uninitialized variables; ensure that they
are initialized to 0 in all cases.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit eac0ab5c3a450174c4ec48ae6447ee01e80401e4)
2020-10-31 06:48:10 -07:00
Jeff Squyres
391ae585d6
Merge pull request #8160 from jsquyres/pr/v4.1.x/trivial-coll-and-han-warning-fixes
v4.1.x: coll/adapt and coll/han: fix trivial compiler warnings
2020-10-30 19:50:20 -04:00
Jeff Squyres
bed022dbbd
Merge pull request #8155 from devreal/fix_opal_add_to_env_str_alloc_v4.1.x
OPAL: fix string buffer allocation for large env variables [v4.1.x]
2020-10-30 16:44:32 -04:00
Jeff Squyres
55af867133 coll/adapt and coll/han: fix trivial compiler warnings
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit ee405ccaa51683c4a6429d8dc02e53445d47a410)
2020-10-30 14:36:50 -04:00
Joshua Hursey
60ee133255
Disable man pages for internal OpenPMIx
Signed-off-by: Joshua Hursey <jhursey@us.ibm.com>
2020-10-30 13:19:01 -05:00
Joshua Hursey
be86f87b92
Update Internal PMIx to OpenPMIx v3.2.1rc1
Signed-off-by: Joshua Hursey <jhursey@us.ibm.com>
2020-10-30 13:14:37 -05:00
Joseph Schuchart
09b873673b OPAL: fix string buffer allocation for large env variables
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
(cherry picked from commit 320a9a16606edc09bae4829611001522cb20bb42)
2020-10-30 16:01:06 +01:00
Jeff Squyres
e7f829bbb0 getdate.sh: make the date(1) usage more portable
There are several different flavors of date(1) out there.  Try a few
different CLI options for date(1) to see which one works.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 89920bac4c6f48efaf1e04245e3f4c5974c6fc99)
2020-10-29 08:17:26 -07:00
Jeff Squyres
234356a128 configure.ac: Add workaround on MacOS for "readlink -f"
MacOS does not have "readlink -f" or "realpath", so use the
MacOS-provided Python, which we know has os.path.realpath().

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit ddf216b0a31ce34f1195ec0605917602db227958)
2020-10-29 08:17:26 -07:00
Gilles Gouaillardet
35e7d86eb1 configury: make build Reproducible
If defined, use SOURCE_DATE_EPOCH environment variable; make the build
Reproducible by forcing timestamps.  See
https://reproducible-builds.org/docs/source-date-epoch/ for more
information.

Thanks Bernhard M. Wiedemann for bringing this to our attention.

Fixes open-mpi/ompi#3759

**NOTE:** This was cherry-picked from master, and slightly modified /
  amended for the v4.1.x branch.

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Signed-off-by: Bernhard M. Wiedemann <bwiedemann@suse.de>
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 7b4e8ba4aa41831fa3c5221ed4c7d71e979d2df2)
2020-10-29 08:17:26 -07:00
Jeff Squyres
fa3211a7a6 opal_functions.m4: remove redundant code
This code was invoked twice.  Leave it solely in OPAL_CONFIGURE_SETUP,
which is invoked before OPAL_BASIC_SETUP.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 7c36b458473f7eca7e3da88ac1d6f0937396fb1e)
2020-10-29 08:17:26 -07:00
Jeff Squyres
96ba8b7279
Merge pull request #8142 from AboorvaDevarajan/fix_zero_byte_v4.1.x
[v4.1.x] pml/ucx: fix zero sized datatype transfers
2020-10-29 11:05:43 -04:00
Jeff Squyres
087a67245d
Merge pull request #7945 from bosilca/4.1/han
Import the HAN collective into 4.1
2020-10-29 11:05:16 -04:00
George Bosilca
9d4e3b1649 Fix HAN issues reported by Coverity.
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2020-10-28 18:43:54 -04:00
Aboorva Devarajan
3518ebf94f pml/ucx: fix zero sized datatype transfers
Signed-off-by: Aboorva Devarajan <aburvadevarajan@gmail.com>
(cherry picked from commit 202b81d95c7b6eb638f95f17fb82ac050765a3ef)
2020-10-27 10:38:07 -04:00
George Bosilca
1264b672fd Fix partial packing of non data elements.
There was a bug allowing for partial packing of non-data elements (such as loop
and end_loop markers) during the exit condition of a pack/unpack call. This has
basically no meaning. Prevent this bug from happening by making sure the element
point to a data before trying to partially pack it.

Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2020-10-26 21:38:27 -04:00
George Bosilca
6d735ba052 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>

Conflicts:
	ompi/mca/coll/adapt/coll_adapt_ibcast.c
2020-10-26 21:38:00 -04:00