it limits the number of circular buffers allocated between each pair of peers.
This allows for more tight memory usage control.
This commit was SVN r14120.
Queue_empty is determined by the reader, and is it's local view.
However, the writer may continue writing to this queue. The decision
to go on to the next cb_fifo is done in an atomic region, checking the
writer's view. The writer also "changes it's view" in an atomic
region protected by the same lock.
This commit was SVN r13968.
buffer fails. If cb is already allocated, but it is full and allocation of
additional cb fails, we spin waiting for receiver to free space in existing
cb.
This commit was SVN r13635.
- move files out of toplevel include/ and etc/, moving it into the
sub-projects
- rather than including config headers with <project>/include,
have them as <project>
- require all headers to be included with a project prefix, with
the exception of the config headers ({opal,orte,ompi}_config.h
mpi.h, and mpif.h)
This commit was SVN r8985.
- remove dead code that isn't used anywhere (originally ompi_fifo_t
was going to be a generalized class, but now it's exclusively used
in the sm stuff, so there's no point in the generalized code that
definitely *won't* work with the sm btl, or is not being used now
[SVN always has history so we can go back])
- had to add an interprocess lock in the area where the writer may
create a new circular buffer to ensure that the reader's tail
doesn't accidentally end up back in the same old buffer while the
head continues on to a new circular buffer (this was what was
happening to cause some intel tests to hang -- e.g., MPI_Scan_c,
MPI_Send_fairness_c and MPI_Isend_fairness_c). Unbelievably, this
may actually *increase* performance because it may order things
better. Will do performance testing tomorrow. We're fairly certain
that this lock can probably be removed and the code fixed in a
different way, but we're under a deadline and correctness comes
first, so it's been added to the to-do list to come back and
re-examine this case later.
This commit was SVN r8136.
- Add big comment about a general overview of what the sm btl is doing
- random small code cleanups
- fix instances of mca_btl_sm[0] to mca_btl_sm[1] where relevant
- remove a lot of unused, confusing, and incorrect interface functions
from ompi_fifo.h and ompi_circular_buffer.h. These functions, if
they were used, would not work properly with the scheme that the sm
btl uses with the fifos (i.e., receiver makes right -- if necessary)
- add some missing offset computations in the fifo and circular buffers
- change the types of offsets to be ssize_t, not size_t
- remove an offset parameter from a function that didn't need it
This commit was SVN r8135.