Fixes scoll_basic failures with shmem_verifier, caused by recent changes
in handling of zero-size collectives.
- Check for zero-size length only for fixed size collect (shmem_fcollect),
but not for variable-size collect (shmem_collect)
- Add 'nlong_type' parameter to internal broadcast function, to indicate
whether the 'nlong' parameter is valid on non-root PEs, since it's
used by shmem_collect algorithm. Before this change, some components
assumed it's true (scoll_mpi) while others assumed it's false
(scoll_basic).
- In scoll_basic, if nlong_type==false, do not exit if nlong==0, since
this parameter may not be the same on all PEs.
- In scoll_mpi, fallback to scoll_basic if nlong_type==false, since MPI
requires the 'count' argument of MPI_Bcast to be valid on all ranks.
Signed-off-by: Yossi Itigin <yosefe@mellanox.com>
Allow MPI extensions to generate Fortran headers using Autoconf.
For example, allow following files.
```
ompi/mpiext/example/mpif-h/mpiext_example_mpifh.h.in
ompi/mpiext/example/use-mpi/mpiext_example_usempi.h.in
ompi/mpiext/example/use-mpi-f08/mpiext_example_usempif08.h.in
```
Generated MPI extension C headers are already allowed in commit
6a7d5271c4.
Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
If the default value of `ofc_type_size` is `$ac_cv_sizeof_int`,
`OMPI_SIZEOF_FORTRAN_*` of all unavailable types become `sizeof(int)`.
This leads `OMPI_SIZEOF_FORTRAN_REAL2 == OMPI_SIZEOF_FORTRAN_REAL`
to become true unintentionally and `OMPI_DATATYPE_MPI_REAL2` has a
wrong value in `ompi/datatype/ompi_datatype_internal.h`. This is not
an actual bug because datatypes for unavailable types are not used.
However it is confusing. I looked the source tree and the history but
could find any basis of `$ac_cv_sizeof_int`.
If we don't use `implicit none` in `OMPI_FORTRAN_GET_KIND_VALUE`, and
if a Fortran compiler does not support `ISO_C_BINDING` completely,
a random value is set in `value` and the fallback route is not used.
It is not our intention.
Signed-off-by: KAWASHIMA Takahiro <t-kawashima@jp.fujitsu.com>
opal_string_copy() takes care of all the string computations.
Specifically: when we converted to opal_string_copy(), we accidentally
left the *source* length as the argument, not the *target* length,
which resulted in one less character being copied than intended (as
was showing up in MTT C++ testing results).
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
This is a holdover from LAM/MPI that was never implemented here in
Open MPI (and never will be). Might as well remove this dead code.
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
When querying an info value, copy out exactly as many characters as
the caller asked for -- do not artificially truncate the target just
to ensure that it is \0-terminated.
Specifically: do not use opal_string_copy() to copy info values,
because opal_string_copy() will guarantee to \0-terminate the target,
even if it means truncating the target. E.g., if the caller calls
opal_info_get_nolock() with valuelen=5, opal_string_copy() will return
"1234\0" -- which is wrong. This commit fixes the behavior to return
"12345".
Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
This commit contains the following changes:
- Remove the unused opal_test_init/opal_test_finalize
functions. These functions are not used by anything in the code
base or MTT. Tests use opal_init_util/opal_finalize_util instead.
- Get rid of gotos in opal_init_util and opal_init. Replaced them
with a cleaner solution.
- Automatically register cleanup functions in init functions. The
cleanup functions are executed in the reverse order of the
initialization functions. The cleanup functions are run in
opal_finalize_util() before tearing down the class system.
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
PR #5241 provided an MCA variable to allow multi-threaded opal_progress.
However, it allowed to update the linked list even when multiple threads was
allowed to call opal_progress. This caused a scenario when a more recent thread
could complete it's progress and fail the assert(sync ==
wait_sync_list).
Allowing to update the linked list only for the case when the number of threads
exceeds the threshold fixes the problem.
Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@intel.com>
This commit fixes a bug when launching with prun where the process
info structures used by the btls are not populated.
Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
For cases when the number of local processes is greater than the number of
available contexts, the SEP initialization phase would calculate the number of
contexts to provision for each rank to be 0 and would eventually crash.
Fix the issue here by using regular endpoints in the event the number of local
processes is more than available contexts. This fixes issue #6182.
Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@intel.com>