Skip to content

Sync upstream main into capstone-devel #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 36 commits into from
Closed

Conversation

jsquyres
Copy link

This will allow CI on #2 to pass (i.e., it will fix the pmix compile error).

hppritcha and others added 30 commits October 15, 2024 13:01
from being echoed into the .openmpi/mca-params.conf
file.  its confusing people.

See https://docs.open-mpi.org/en/v5.0.x/mca.html#mca-parameter-changes-between-open-mpi-4-x-and-5-x

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
Fix a couple of problems uncovered in issue open-mpi#12854.

Turns out the MCA param management system was "remembering" things
even if a variable was deregistered when a framework was closed.

Also the test case showed that destructing ompi_mpi_session_null
needs to be moved to ompi_mpi_instance_release.

Related to open-mpi#12854

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
Greatly simplify support for MPI_Comm_create_from_group and
MPI_Intercomm_create_from_group by removing the need to support
the 128-bit excid notion.

Instead, make use of a PMIx capability - PMIX_GROUP_LOCAL_CID and the notion of
PMIX_GROUP_INFO. This capability was introduced in Open PMIx 4.1.3.
This capability allows us to piggy-back a local cid selected
for the new communicator on the PMIx_Group_construct operation.
Using this approach, a lot of the complex active message style operations
implemented in the OB1 PML to support excids can be avoided.

Infrastructure for debugging communicator management routines was also
introduced, along with a new MCA parameter -  mpi_comm_verbose.

Related to open-mpi#12566

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
With sessions initialization model (section 11.3 of MPI 4 standard)
MPI may be initialized and finalized any number of times.

This patch refactors code that was assuming a one shot init/finalize
sequence for initializing Open MPI and its MCA param space

The underlying problem with the replaced code was that when an app calls MPI_Session_finalize
and there are no more sessions active, the MCA param space is
destroyed.  So if one does not build Open MPI to use dynamically load components,
and a component is using static variables in a way that assumes the MCA param
space is always preserved if a static variable is set to some value,
then things break if a subsequent MPI_Session_init is invoked.

Related to open-mpi#12869

Signed-off-by: Howard Pritchard <hppritcha@gmail.com>
nvfortran needs to be passed -fPIC when building shared libraries,
so patch the generated configure script in order to properly
handle nvfortran:
- add nvfortran to the list of known fortran compilers
- pass -fPIC to the compiler

Refs. open-mpi#8919

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Signed-off-by: George Bosilca <gbosilca@nvidia.com>
configury: patch configure to support nvfortran
sessions: fix some problems with multiple init/fini
…essions

ofi/common: fix code that broke sessions
when there are no more refs to opal util layer.

Update sessions smoke test to illustrate the issue
in case this change gets reverted or undone by some
future commit.

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
even when configuring with --enable-mca-dso.

The partition framework open/close was not being properly managed
prior to this patch, leading to segfaults upon reinitialization if
the app starts another session after closing a previous one and the
Open MPI was configured with --enable-mca-dso.

Related to open-mpi#12887

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
…ke_test

sessions: make sure to only finalize class
This is a cleanup of the write_all operation, in preparation for adding read_all implementation to the vulcan component. Specifically:

- remove the multiple group option: this was envisioned for the vulcan component, but never fully implemented. Therefore, having a few stubs at some locations (and an mca parameter) doesn't make sense, and are being removed to simplify the code.

- remote the write_chunksize option: this was an artifact of the code based having evolved from dynamic_gen2 (where the option makes sense). However, in vulcan it doesn't really make sense and was actually not correctly implemented eitherway, so if somebody would have used that option, it would prbably have failed.

The changed have been validated with the ompio testsuite as well as the hdf5 testphdf5, t_shapesame, and t_filters_parallel tests.

Signed-off-by: Edgar Gabriel <edgar.gabriel@amd.com>
extract some code into stand alone routines in preparation for adding a vulcan read_all implementation.
Specifically, this pr adds new routines for :
 - mca_fcoll_vulcan_calc_blocklen_disps
 - mca_fcoll_vulcan_calc_file_offsets
 - mca_fcoll_vulcan_calc_io_array

which will be reused in the read_all as well.
Also, some white-space cleanup of the code.

Signed-off-by: Edgar Gabriel <edgar.gabriel@amd.com>
add an implementation of the read_all operation that uses the two-phase I/O algorithm using even partitioning, i.e. the same base idea that is used by the write_all operation of this component.

In addition to using the 'correct' data partitioning approach for the component, the vulcan read_all implementation also adds some other features that were there for the write_all operations, but not for the (generic) read_all algorithm used by all components so far. Specifically, it can overlap the execution of the I/O phase and the communication phase. The algorithm can also use GPU buffers for aggregation.

Signed-off-by: Edgar Gabriel <edgar.gabriel@amd.com>
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
…sessions_test

examples: add return 0 to sessions smoke test
…phase-read-all

fcoll/vulcan: add two_phase read_all
to match up with PMIx and PRRTe dependencies

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
Signed-off-by: Howard Pritchard <howardp@lanl.gov>
openpmix: move the sha back to 08e41ed

to avoid a bunch of group refactor stuff for now

Signed-off-by: Howard Pritchard <howardp@lanl.gov>
…_30cadc6746

prrte: advance sha to 30cadc6746
Teach the dynamic rules file reader to look for the
alltoall_algorithm_max_requests tuning parameter.  To keep the dynamic rules
file format backward compatible the alltoall_algorithm_max_requests is
optional. When not present in the rule definition the value of the
corresponding MCA variable is used instead.

Resolves open-mpi#12589

Signed-off-by: Burlen Loring <bloring@nvidia.com>
the version identifier is optional but when provided it  must have the
following format and must appear on the first line.`rule-file-version-N`
where N is an unsigned integer. Older versions of the
parser will fall back to fixed decision mechanism when this line is
present. Version 1 is the original format, Version 2 has support for
optional coll_tuned_alltoall_algorithm_max_requests specification.

Signed-off-by: Burlen Loring <bloring@nvidia.com>
Changes several variables scope from READONLY to ALL so that they can be set
via MPI_T interface

Signed-off-by: Burlen Loring <bloring@nvidia.com>
Changes several variables scope from READONLY to ALL so that they can be set
via MPI_T interface

Signed-off-by: Burlen Loring <bloring@nvidia.com>
Changes several variables scope from READONLY to ALL so that they can be set
via MPI_T interface

Signed-off-by: Burlen Loring <bloring@nvidia.com>
Burlen Loring and others added 6 commits November 6, 2024 18:37
Changes several variables scope from READONLY to ALL so that they can be set
via MPI_T interface

Signed-off-by: Burlen Loring <bloring@nvidia.com>
Changes several variables scope from READONLY to ALL so that they can be set
via MPI_T interface

Signed-off-by: Burlen Loring <bloring@nvidia.com>
…ll_max_requests

coll tuned dynamic rules file alltoall_algorithm_max_requests
coll MCA variables READONLY scope prevents their use via MPI_T tools interface
The local PMIx server may have info on the local peers
for a job - so allow the client to request that info
if it doesn't already possess it.

Also clean up some diagnostic output so it shows the
PMIx attribute name (or just the provided string if it
isn't an attribute name) to make it easier to correlate
to the code.

Signed-off-by: Ralph Castain <rhc@pmix.org>
Allow the dpm to query the server for local peer info
@jsquyres jsquyres requested a review from hppritcha November 21, 2024 20:56
@jsquyres
Copy link
Author

No, wait -- this will bring in the prrte from upstream main into captstone devel, which we don't want to do. Closing without merging.

@jsquyres jsquyres closed this Nov 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants