The algorithm was failing ibm/collective/allgather and iallgather. I
cleaned up the code to eliminate duplicate code paths and tracked the
issue down to an error in the way extra nodes in the knomial exchange
are handled. The new code is more compact and has been tested with up
to 64 ranks with the ibm test suite.
cmr=v1.8.1:reviewer=manjugv
This commit was SVN r31419.
The file coll_ml_ibarrier.c wasn't included in coll/ml's Makefile.am
and the setup code from coll_ml_hier_algorithms_ibarrier.c was not
being called. It looks like this code is stale and has long since been
replaced by the code in coll_ml_barrier.c
Once all these little CMRs are approved I may make it into one roll-up
CMR to make it easier on the RM.
cmr=v1.8.1:reviewer=manjugv
This commit was SVN r31418.
a segmentation fault in the reduce cleanup
Some of the changes address false warnings produced by scan-build. I
added asserts and changed some malloc calls to calloc to silence these
warnings.
The was one issue in cleanup for reduce since the component_functions
member is changed by the allreduce call. There may be other issues
with how this code works but releasing the allocated
component_functions after setting up the static functions addresses
the primary issue (SIGSEGV).
cmr=v1.8.1:reviewer=manjugv
This commit was SVN r31417.
communicator code.
Many of the warnings were false warnings. These were silenced by
adding the appropriate asserts. Other warnings identified some
potential issues in error paths that should now be resolved.
cmr=v1.8.1:reviewer=jsquyres
This commit was SVN r31416.
This commit addresses bugs discovered by ggouaillardet.
- Fix hang when creating an intercommunicator
- Fix memory leak
- Fix coverity warning cid70288
- Fix false coverity warning cid1196589
Fixes trac:4507
Fixes trac:4522
cmr=v1.8.1:reviewer=jsquyres
This commit was SVN r31415.
The following Trac tickets were found above:
Ticket 4507 --> https://svn.open-mpi.org/trac/ompi/ticket/4507
Ticket 4522 --> https://svn.open-mpi.org/trac/ompi/ticket/4522
- add some missing APIs
- change signature od shmem_finalize to comply with SGI spec
fixed by Roman, reviewed by Igor/Miked
Refs trac:4520
This commit was SVN r31413.
The following Trac tickets were found above:
Ticket 4520 --> https://svn.open-mpi.org/trac/ompi/ticket/4520
This man page contains the prototype and descriptions for both
MPI_TYPE_INDEXED and MPI_TYPE_CREATE_HINDEXED. Bastian Beischer
noticed that the type of the array_of_displacements argument in the
MPI_TYPE_CREATE_HINDEXED was wrong.
Also, a minor update to MPI_Type_hindexed.3in: indicate that the C
type is MPI_Aint and the Fortran type is INTEGER (which is why this
function was deprecated and then deleted by the MPI Forum!).
cmr=v1.8.1:reviewer=dgoodell
This commit was SVN r31411.
The rationale for this name switch is as follows:
0. These two files will be automatically kept up-to-date with
svn:ignore properties in the tree via a cron script. Meaning: if a
developer makes changes to svn:ignore properties, those changes
will automatically be reflected in .gitignore_global /
.hgignore_global within a fixed time period (at the moment,
nightly).
1. Developers who make pure clones of git/hg OMPI repos can copy the
relevant .*ignore_global file to .*ignore. This gives them a good
starting point for a fully-populated ignore file. However, since
the upstream _global file may change over time, developers will
likely want to keep them in sync with their local .*ignore file.
Here's two possibilities:
1a. Maintain a single .*ignore file and manually merge in changes
from the _global file upstream.
1b. Maintain their local ignores in a .*ignore_local file, and
periodically "cat .*ignore_global .*ignore_local > *.ignore"
(e.g., whenever the upstream _global file changes).
2. Developers who make svn+clone checkouts can do similar things as
listed in 1, with the added feature that they cannot make the
mistake of committing their locally-modified .*ignore file back to
SVN (presumably containing references to files that do not exist in
SVN), since the .*ignore file is not in SVN.
Point #2 is probably the stronger of these two reasons -- prevent
mistakes of developers accidentally committing locally-modified
.*ignore files back to SVN.
This commit was SVN r31408.
Add some getopt options for both build-gitignore.pl and
build-hgignore.pl:
-v: be a little verbose
-h: show a quick help message
-o: specify the output file to write
build-hgignore.pl defaults to writing .hgignore, and
build-gitignore.pl defaults to writing .gitignore. But you can use -o
to specify writing a different filename.
This commit was SVN r31397.
Nothing is generated in this file; this commit essentially just
renames ompi_config.h.in -> ompi_config.h.
cmr=v1.8.1:reviewer=dgoodell
This commit was SVN r31395.
Sort the output from reading directory contents so that the generated
.gitignore and .hgignore files will be much more consistent (and
friendly to change from subsequent runs, especially when they are
committed to SVN/git/hg repos).
This commit was SVN r31394.
It's a singular filename because there's only 1 interface in the
file. Also, r31375 missed updating the name in a few places, and
broke the build for compilers that supported the mpi_f08 interface.
This commit was SVN r31389.
The following SVN revision numbers were found above:
r31375 --> open-mpi/ompi@fe1935de14
Two things to note:
- This change will allow us to expand the BTL interface without
having to worry about modifying BTLs that will not support the new
interfaces. More on this will come later this year as part of the
1.9 series.
- C99 guarantees that uninitialed members of structs declared outside
of functions (DATA binary section) will be initialized with
0's. This allows us to drop stuff like .btl_flags = 0, or .btl_get
= NULL.
This commit was SVN r31388.
completed. As we need to have the right displacement at the beginning
of the next call, we should save the position relative to the beginning
of the buffer and not to the last loop.
This commit was SVN r31387.
Use only contig allocator if shared_mr() is not supported
Fixes ibv_exp_reg_mr() parameters passing.
Fixes incorrect handling of sshmem_verbs_hca_name option.
fixed by AlexM, reviewed by Mike
cmr=v1.8.1:reviewer=ompi-rm1.8
This commit was SVN r31379.
When sending PUT_LONG, the data is sent before headers, and sometimes
the header is not flushed immediately. This creates a lot of unexpected
receives in the peer, since it would posts a receive only when gets the
header, which makes it run out of receive buffers. When the sender
eventually flushes the window, the receiver already has no buffers to
receive the header, which causes a deadlock.
The fix is to always flush the headers when doing put_long.
cmr=v1.8.1:reviewer=hjelmn
This commit was SVN r31378.
Since we only builds the "small" size of the "mpi" module any more, it
does not take a long time to compile. So remove the warning that is
emitted.
Also remove a vestage of Windows support that was leftover in the
Fortran area (i.e., building mpi.obj).
This commit was SVN r31374.
Differentiate the pre-defined attribute and conversion interfaces into
those with INTEGER handles and those with TYPE(MPI_*) handles.
Refs trac:4157
cmr=v1.8.1:ticket=trac:4512
This commit was SVN r31372.
The following Trac tickets were found above:
Ticket 4157 --> https://svn.open-mpi.org/trac/ompi/ticket/4157
Ticket 4512 --> https://svn.open-mpi.org/trac/ompi/ticket/4512
Use type(c_funptr) to "cast" the fortran function pointers to
arbitrary C pointers. In C, we then pick up the appropriate function
pointer type.
Tested with ifort 14.0.2 and gfortran 4.9 snapshot (which is what
identified that the previous method of passing function pointers was
not Fortran'08-compliant).
Refs trac:4157
This commit was SVN r31371.
The following Trac tickets were found above:
Ticket 4157 --> https://svn.open-mpi.org/trac/ompi/ticket/4157
Junchao Zhang pointed out to me that we had the wrong parameter name
and string length specification for the "version" parameter. This
matters because Fortran allows passing by parameter name
(vs. parameter ordering). Specifically, we had the interface as:
{{{
subroutine MPI_Get_library_version_f08(name,resultlen,ierror)
character(len=MPI_MAX_PROCESSOR_NAME), intent(out) :: name
...etc.
}}}
but it should be:
{{{
subroutine MPI_Get_library_version_f08(version,resultlen,ierror)
character(len=MPI_MAX_LIBRARY_VERSION_STRING), intent(out) :: version
...etc.
}}}
Thankfully, MPI_MAX_PROCESSOR_NAME and MPI_MAX_LIBRARY_VERSION_STRING
are both 255 in OMPI, so there's no ABI issue caused by changing the
length from MMPN --> MMLVS.
The ABI is also unaffected by the parameter name change: if you
compile/link an MPI application calling MPI_GET_LIBRARY_VERSION with
1.8, it'll still run-time link with this change.
However, if an MPI program compiled using parameter name passing with
the old/incorrect parameter name ("name"), it won't be able to compile
with the new/correct parameter name ("version"). But this will only
happen for an incorrect MPI application (because the MPI-3 mandated
parameter name is "version", not "name"), so they deserve what they
get.
cmr=v1.8.1:reviewer=dgoodell
This commit was SVN r31365.
(i.e., the script that fires via cron every 15 mins to "git pull" from
the github ompi-www repo).
This commit moves the mercurial mirroring script to the
"infrastructure" directory.
This commit was SVN r31360.