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 89920bac4c)
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 ddf216b0a3)
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.
Fixesopen-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 7b4e8ba4aa)
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 7c36b45847)
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>
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
* 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>
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>
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>
(cherry picked from commit 39f8a86b65)
Abort early if the source directory, build directory, or prefix
contains spaces (either the supplied directory, or the canonicalized
version of the directory). This prevents users from getting cryptic
errors later in configure and/or make.
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 8841b12489)
Make sure to surround directory variables with quotes so that they
function properly, even if there's spaces in the directory name.
While Open MPI doesn't generally support directory names with spaces,
this fix at least allows `autogen.pl` to complete successfully.
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
(cherry picked from commit 8f13c3b587)
* The `--cpu-list` argument restricts the hwloc topology. When that topology is
sent from the remote daemon back to the HNP it is packed as XML. This packing
results in the loss of the applied cpu-list. Mapping will then be using
the full topology instead of the restricted topology when mapping the
processes. When the launch command reaches the remote node it will not
be congruent with the remote node's view of the topology leading to a
launch failure especially if the HNP and remote node have differing
topologies.
- The solution is to make sure that the HNP re-applies the cpu-list to
the incomming topology from the remote node. This way the HNP and the
remote node are using the same restricted topology.
Signed-off-by: Joshua Hursey <jhursey@us.ibm.com>
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>
(cherry picked from commit 415dddb9af)
related to #7968
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
(cherry picked from commit 04f853d53d657b14f055c4d87a031829015a6929)
Signed-off-by: Brian Barrett <bbarrett@amazon.com>
(cherry picked from commit 2a606fbde3)
Also fix a probably harmless but definitely wrong missing comment
character in the copyright header.
Signed-off-by: Brian Barrett <bbarrett@amazon.com>
Add the 4.0.5 release notes to the NEWS file and clean up some
of the formatting in recent releases to match previous updates.
Signed-off-by: Brian Barrett <bbarrett@amazon.com>
(cherry picked from commit 5d42272605)
Reword the error message to suggest only the Fortran INTEGER size
can be changed via adhoc compiler flags.
This is a one-off commit for the release branches, master does
it differently (and breaks ABI).
Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
In the below type creation sequence
MPI_Type_create_resized(MPI_INT, 0, 6, &mydt1);
MPI_Type_contiguous(1, mydt1, &mydt2);
I think both mydt1 and mydt2 should have extent 6.
The Type_create_resized would add an UB marker into the type map,
and the definition of Type_contiguous would maintain the same
markers in the new map.
The only counter argument I can think of to the above is if
we declared that mydt1 is illegal because it's putting data
on addresses that don't satisfy the alignment requirement.
But in my interpretation of the standard the term "alignment
requirement" is a property of the system memory, and MPI defines
"extent" in a way to make it easy to create MPI datatypes that
support the system's alignment requirements. But the standard
isn't saying it's illegal to make MPI datatypes that don't satisfy
the system's alignment requirements. I think this is true also
because the MPI datatypes might be used in file IO where the
requirements are different, so that's my long winded explanation
for why I don't think we can declare mydt1 illegal.
Complete example:
#include <stdio.h>
#include <mpi.h>
int main() {
MPI_Datatype mydt1, mydt2;
MPI_Aint lb, ext;
MPI_Init(0, 0);
MPI_Type_create_resized(MPI_INT, 0, 6, &mydt1);
MPI_Type_commit(&mydt1);
MPI_Type_contiguous(1, mydt1, &mydt2);
MPI_Type_commit(&mydt2);
MPI_Type_get_extent(mydt1, &lb, &ext);
printf("mydt1 extent %d\n", (int)ext);
MPI_Type_get_extent(mydt2, &lb, &ext);
printf("mydt2 extent %d\n", (int)ext);
MPI_Type_free(&mydt1);
MPI_Type_free(&mydt2);
MPI_Finalize();
return(0);
}
% mpicc -o x test.c
% mpirun -np 1 ./x
Without this PR the output is
> mydt1 extent 6
> mydt2 extent 8
With this PR both extents are 6.
Fwiw I also tested with mpich and they give 6 for both extents.
Signed-off-by: Mark Allen <markalle@us.ibm.com>
(cherry picked from commit bca3c0ed17)
configure was previously failing to check for the fi_info.nic struct because
fabric.h relied on other header files in the ofi/include dir. This adds that
include to CPPFLAGS before running that check so that configure can check for
the struct.
Signed-off-by: Nikola Dancejic <dancejic@amazon.com>
(cherry picked from commit 08e8205fb7)
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>
(cherry picked from commit 34b42b1b09)
This patch fix a race condition, which caused the main thread
to sometimes write to a closed pipe.
The following are details:
Currently, during shut down, the main thread will do the following:
1. set listen_thread_action to false.
2. write to stop_thread pipe to tell the listener thread to exit.
The listener thread do the following:
1. call select() to listen to a set of file descriptors with
a maximum wait time.
2. check listen_thread_action. If it is false, close the stop_thread
pipe.
The main thread will write to closed pipe, when
1. listener's call to select() finished because maximum wait time reached.
2. main thread set listen_thread_action to false
3. listener thread check listen_thread_action and closed the pipe
4. main thread write to the closed pipe.
This patch address the issue by having the main thread close the pipe
after the listener thread has been joined. This way, main thread
will both write and close the thread, so there is no conflict.
Note This patch was opened directly against v4.1.x branch because
the orte/mca/oob/tcp directory has been removed from master branch.
Signed-off-by: Wei Zhang <wzam@amazon.com>
This is a meta commit, that encapsulate all the ADAPT commits in the master
into a single PR for 4.1. The master commits included here are:
fe73586, a4be3bb, d712645, c2970a3, e59bde9, ee592f3 and c98e387.
Here is a detailed list of added capabilities:
* coll/adapt: Fix naming conventions and C11 atomic use
* coll/adapt: Remove unused component field in module
* Consistent handling of zero counts in the MPI API.
* Correctly handle non-blocking collectives tags
* As it is possible to have multiple outstanding non-blocking collectives
provided by different collective modules, we need a consistent
mechanism to allow them to select unique tags for each instance of a
collective.
* Add support for fallback to previous coll module on non-commutative operations (#30)
* Replace mutexes by atomic operations.
* Use the correct nbc request type (for both ibcast and ireduce)
* coll/base: document type casts in ompi_coll_base_retain_*
* add module-wide topology cache
* use standard instead of synchronous send and add mca parameter to control mode of initial send in ireduce/ibcast
* reduce number of memory allocations
* call the default request completion.
* Remove the requests from the Fortran lookup conversion tables before completing
and free it.
* piggybacking Bull functionalities
Signed-off-by: Xi Luo <xluo12@vols.utk.edu>
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
Signed-off-by: Marc Sergent <marc.sergent@atos.net>
Co-authored-by: Joseph Schuchart <schuchart@hlrs.de>
Co-authored-by: Lemarinier, Pierre <pierre.lemarinier@atos.net>
Co-authored-by: pierrele <31764860+pierrele@users.noreply.github.com>
The gather and scatter operations did not use the correct message size
(Only did datatype size * com size). This did not correctly reflect the
total message size and prevents fine tuning within a com size. This
patch multiplies the value by the number of elements sent.
Signed-off-by: William Zhang <wilzhang@amazon.com>
(cherry picked from commit 50823fe9a9)