For anyone interested, the problem stemmed from two things:
1. a bug in the ompi_bitmap utility (which I copied to orte_bitmap to avoid unintentionally disturbing something else) that causes the bitmap NOT to expand unless the caller asks for a bit that is more than one byte outside the current array size. The unit test didn't pick it up because it doesn't check that close to the boundary.
2. a "feature" in the ompi_bitmap utility that only expands the array if you try to SET a bit outside the current boundary, but NOT if you try to CLEAR a bit outside the array limit. This appears intentional as the unit test checks for this behavior, but I hadn't been expecting the asymmetry.
The orte_bitmap utility now appropriately expands in both circumstances. I also added a function to expand the array so it "covers" a bit location without setting or clearing it. The function allows you to ensure the array is big enough to handle the specified bit, but leave the bit alone if it already is there (the other functions would set/clear it if it was).
I've tested it with up to 100 processes without problem.
This commit was SVN r5980.
call the memory pool to do special memory allocations, and extended
the mpool so that it will do the allocations and keep tack of them in
a tree. Currently, if you pass MPI_INFO_NULL to MPI_Alloc_mem, we will
try to allocate the memory and register it with as many mpools as
possible. Alternatively, one can pass an info object with the names of
the mpools as keys, and from these we decide which mpools to register
the new memory with.
- fixed some comments in the allocator and fixed a minor bug
- extended the red black tree test and made a minor correction
This commit was SVN r5902.
OMPI_ENABLE_DEBUG because that changes the size of struct's (e.g.,
ompi_object) in the unit tests as compared to what may have been
compiled in the library.
This commit was SVN r5373.
build / run. Only things that actually build / run right now are the
asm and class tests. The mca tests probably will with a static build
but that hasn't been verified
This commit was SVN r4979.
- Add #include "ompi_config.h" to all .c files, and ensure that it's
the first #included file
- remove a few useless #if HAVE_CONFIG_H checks
This commit was SVN r3229.
- added ompi_list_splice and ompi_list_join, which are multi-list
manipulation functions similar to the splice functions in the STL
list interface
- added ompi_list_is_empty() for O(1) testing of for an empty list
- added note that sometime in the future, ompi_list_get_size() may
change to O(N) complexity. DID NOT CHANGE THE FUNCTION IN ANY WAY.
If you are writing new code that needs to check for an empty list, please
use ompi_list_is_empty() rather than ompi_list_get_size() as is_empty()
will always be an O(1) operation (I can't see how you could make it
impossible to make it O(1), so this seems like a safe claim).
This commit was SVN r2186.