What: The current probe algorithm in ob1 is linear with respect to the
number or processes in the job. I wish to change the algorithm to be
linear in the number of processes with unexpected messages. To do this I
added an additional opal_list_t to the ob1 communicator and made the ob1
process a list_item_t. When an unexpected message comes in on a proc it
is added to that proc's unexpected message queue and the proc is added
to the communicator's list of procs with unexpected messages
(unexpected_procs) if it isn't already on that list. When matching a
probe request this list is used to determine which procs to look at to
find an unexpected message. The new list is protected by the matching
lock so no extra locking is needed.
Why: I have a benchmark that makes heavy use of MPI_Iprobe in one if its
phases. I discovered that the primary reason this benchmark was running
slow with Open MPI is the probe algorithm.
When: This is another simple optimization. It only affects the
unexpected message path and will speed up probe requests. This is
intended to go into 1.7.5. Setting the timeout to next Tuesday (which
gives me time to verify the improvment at scale-- 131,000 PEs).
See the attached patch.
- application/pgp-signature attachment: stored