- only make MCA parameters available if SPC is enabled
- do not compile SPC code if SPC is disabled
- move includes into ompi_spc.c
- allow counters to be enabled through MPI_T without setting MCA parameter
- inline counter update calls that are likely in the critical path
- fix test to succeed even if encountering invalid pvars
- move timer_[start|stop] to header and move attachment info into ompi_spc_t
There is no need to store the name in the ompi_spc_t struct too, we can use that space
for the attachment info instead to avoid accessing another cache line.
- make timer/watermark flags a property of the spc description
This is meant to making adding counters easier in the future by
centralizing the necessary information. By storing a copy of these flags
in the ompi_spc_t structure (without adding to its size) reduces
cache pollution for timer/watermark events.
- allocate ompi_spc_t objects with cache-alignment
This prevents objects from spanning multiple cache lines and thus
ensures that only one cache line is loaded per update.
- fix handling of timer and timer conversion
- only call opal_timer_base_get_cycles if necesary to reduce overhead
- Remove use of OPAL_UNLIKELY to improve code generated by GCC
It appears that GCC makes less effort in optimizing the unlikely path
and generates bloated code.
- Allocate ompi_spc_events statically to reduce loads in critical path
- duplicate comm_world only when dumping is requested
Signed-off-by: Joseph Schuchart <schuchart@icl.utk.edu>
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>
Ensure we correctly collect and save the cpuset of the process
separately from its locality string. Ensure we use the correct one when
computing things like relative locality between processes.
Signed-off-by: Ralph Castain <rhc@pmix.org>
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>
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>
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>
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>
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>
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>
I ran into this exact case on MacOS (the C and Fortran compiler have
different default linker search paths). Technically, we've always had
this problem, but it has just become a bit more likely for real people
to run into because we're now preferring the system-installed
Libevent.
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
A recent commit made the use_mpi_f08 bindings sym link into their
profile directory (just like we do for C and other bindings) instead
of having standalone PMPI-ized copies of the bindings. Make sure to
.gitignore the sym linked files.
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
Coverity complained about uninitialized variables; ensure that they
are initialized to 0 in all cases.
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>