1
1
openmpi/ompi/runtime
Ralph Castain 3daf8b341b Fix the sched_yield problem for generic environments. We now determine and set sched_yield during mpi_init based on the following logical sequence:
1. if the user has specified sched_yield, we simply do what we are told

2. if they didn't specify anything, try to get the number of processors on this node. Note that we already now get the number of local procs in our job that are sharing this node - that now comes in through the proc callback and is stored in the ompi_proc_t structures.

3. if we can get the number of processors, compare that to the number of local procs from my job that are sharing my node. If the number of local procs exceeds the number of processors, then set sched_yield to true. If not, then be a hog and set sched_yield to false

4. if we can't get the number of processors, default to conservative behavior and set sched_yield to true.

Note that I have not yet dealt with the need to dynamically adjust this setting as more processes are added via comm_spawn. So far, we are *only* looking within our own job. Given that we have now moved this logic to mpi_init (and away from the orteds), it isn't yet clear to me how a process will be informed about the number of procs in *other* jobs that are also sharing this node.

Something to continue to ponder.

This commit was SVN r13430.
2007-02-01 19:31:44 +00:00
..
help-mpi-runtime.txt The mpi_leave_pinned and mpi_leave_pinned_pipeline MCA parameters were 2007-01-21 14:02:06 +00:00
Makefile.am Bring over r10877 and r10881 from the /tmp/tbird branch: 2006-08-04 14:41:31 +00:00
mpiruntime.h Bring over r10877 and r10881 from the /tmp/tbird branch: 2006-08-04 14:41:31 +00:00
ompi_mpi_abort.c * Before this commit, if we called ompi_mpi_abort() before MPI_INIT 2007-01-29 22:01:28 +00:00
ompi_mpi_finalize.c Rewriting much of the errorcode and errorclass code, since 2006-12-05 19:07:02 +00:00
ompi_mpi_init.c Fix the sched_yield problem for generic environments. We now determine and set sched_yield during mpi_init based on the following logical sequence: 2007-02-01 19:31:44 +00:00
ompi_mpi_io.c Bring over the update to terminate orteds that are generated by a dynamic spawn such as comm_spawn. This introduces the concept of a job "family" - i.e., jobs that have a parent/child relationship. Comm_spawn'ed jobs have a parent (the one that spawned them). We track that relationship throughout the lineage - i.e., if a comm_spawned job in turn calls comm_spawn, then it has a parent (the one that spawned it) and a "root" job (the original job that started things). 2006-11-14 19:34:59 +00:00
ompi_mpi_params.c Fix the sched_yield problem for generic environments. We now determine and set sched_yield during mpi_init based on the following logical sequence: 2007-02-01 19:31:44 +00:00
ompi_mpi_preconnect.c modify preconnect to use a rotating ring algorithm, OOB connections are 2006-12-21 01:36:57 +00:00
params.h The mpi_leave_pinned and mpi_leave_pinned_pipeline MCA parameters were 2007-01-21 14:02:06 +00:00