1
1
openmpi/ompi
Ralph Castain a523dba41d NOTE: this modifies the MPI-RTE interface
We have been getting several requests for new collectives that need to be inserted in various places of the MPI layer, all in support of either checkpoint/restart or various research efforts. Until now, this would require that the collective id's be generated at launch. which required modification
s to ORTE and other places. We chose not to make collectives reusable as the race conditions associated with resetting collective counters are daunti
ng.

This commit extends the collective system to allow self-generation of collective id's that the daemons need to support, thereby allowing developers to request any number of collectives for their work. There is one restriction: RTE collectives must occur at the process level - i.e., we don't curren
tly have a way of tagging the collective to a specific thread. From the comment in the code:

 * In order to allow scalable
 * generation of collective id's, they are formed as:
 *
 * top 32-bits are the jobid of the procs involved in
 * the collective. For collectives across multiple jobs
 * (e.g., in a connect_accept), the daemon jobid will
 * be used as the id will be issued by mpirun. This
 * won't cause problems because daemons don't use the
 * collective_id
 *
 * bottom 32-bits are a rolling counter that recycles
 * when the max is hit. The daemon will cleanup each
 * collective upon completion, so this means a job can
 * never have more than 2**32 collectives going on at
 * a time. If someone needs more than that - they've got
 * a problem.
 *
 * Note that this means (for now) that RTE-level collectives
 * cannot be done by individual threads - they must be
 * done at the overall process level. This is required as
 * there is no guaranteed ordering for the collective id's,
 * and all the participants must agree on the id of the
 * collective they are executing. So if thread A on one
 * process asks for a collective id before thread B does,
 * but B asks before A on another process, the collectives will
 * be mixed and not result in the expected behavior. We may
 * find a way to relax this requirement in the future by
 * adding a thread context id to the jobid field (maybe taking the
 * lower 16-bits of that field).

This commit includes a test program (orte/test/mpi/coll_test.c) that cycles 100 times across barrier and modex collectives.

This commit was SVN r32203.
2014-07-10 18:53:12 +00:00
..
attribute Return non-SUCCESS error codes from attribute copy functions. 2014-03-19 15:45:38 +00:00
class call element destructors in ompi_free_list_destruct 2013-08-29 22:56:31 +00:00
communicator remove all message output from ompi/communicator/comm_helpers.c 2014-05-26 01:54:24 +00:00
contrib Per RFC, continue pecking away at the build system renaming 2014-05-06 16:27:38 +00:00
datatype Fixes *alltoall* collectives at top level 2014-05-19 07:46:07 +00:00
debuggers Update the UTK copyright on the topology related files. 2014-05-16 22:23:52 +00:00
errhandler ompi_mpi_abort had one extra argument that was never used. Clean it up. 2014-07-03 00:34:44 +00:00
etc Use MKDIR_P instead of mkdir_p in Makefiles, as MKDIR_P is the only one 2012-06-21 16:52:37 +00:00
file == Highlights == 2012-04-18 15:57:29 +00:00
group Update the UTK copyright on the topology related files. 2014-05-16 22:23:52 +00:00
include Update the UTK copyright on the topology related files. 2014-05-16 22:23:52 +00:00
info Fix an MPI-3 compliance buglet - MPI_Info_set should now use "const" qualifiers on the key and value parameters 2014-03-11 23:50:09 +00:00
mca NOTE: this modifies the MPI-RTE interface 2014-07-10 18:53:12 +00:00
message Remove a bunch of unused variables. 2013-03-26 14:34:29 +00:00
mpi Correct trivial typos in man files and FUNC_NAME variables. 2014-07-10 01:47:23 +00:00
mpiext The bulk of the remaining renaming changes, in one final glorious "blob". Thanks to Jeff for some help chasing down a few spots. Per chat with Jeff, we decided to cleanup a few things that were historical in nature: 2014-05-07 21:48:53 +00:00
op Deprecated comment. 2014-04-21 23:30:05 +00:00
patterns Add netpatterns_cleanup_narray_knomial_tree function to cleanup after 2014-05-15 17:36:26 +00:00
peruse - Sanity check initialization and finalization of PERUSE. 2010-01-12 16:36:24 +00:00
proc Fetch info from both opal_dstore_nonpeer and opal_dstore_peer 2014-06-02 02:34:30 +00:00
request Revert r32082 and r32070 - the developer's conference has decided to go a different direction on the threaded progress effort. This will involve some degree of prototyping to understand the tradeoffs prior to making a final design decision, and so we'll hold off on the final change until that is completed. 2014-06-25 20:43:28 +00:00
runtime NOTE: this modifies the MPI-RTE interface 2014-07-10 18:53:12 +00:00
tools Protect against problems if someone passes us thru a pipe and then abnormally terminates the pipe early 2014-07-09 22:41:53 +00:00
win Merge one-sided updates to the trunk - written by Brian Barrett and Nathan Hjelmn 2014-02-25 17:36:43 +00:00
Makefile.am The bulk of the remaining renaming changes, in one final glorious "blob". Thanks to Jeff for some help chasing down a few spots. Per chat with Jeff, we decided to cleanup a few things that were historical in nature: 2014-05-07 21:48:53 +00:00