d42e0968b1
This commit rewrites parts of libnbc to fix issues identified by coverity and myself. The changes are as follows: - libnbc function would return invalid error codes (internal to libnbc) to the mpi layer. These codes names are of the form NBC_. They do not match up with the error codes expected by the mpi layer. I purged the use of all these error codes with the exception of NBC_OK and NBC_CONTINUE in progress. These codes are used to identify when a request handle is complete. - Handles and schedules were leaked by all collective routines on error. A new routine was added to return a collective handle (NBC_Return_handle). - Temporary buffers containting in/out neighbors for neighborhood collectives were always leaked. - Neigborhood collectives contained code to handle MPI_IN_PLACE which is never a valid input for the send or receive buffer. Stipped this code out. - Files were inconsistently named. Most are nbc_isomething.c but one was named coll_libnbc_ireduce_scatter_block.c. - Made the NBC_Schedule "structure" and object so it can be retained/released. This may enable the use of schedule caching at a later time. More testing will be needed to ensure the caching code works. If it doesn't the code should be stripped out completely. - Added code to simply common case of scheduling send/recv + barrier. - Code cleanup for readability. The code now passes the clang static analyzer. Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov> |
||
---|---|---|
.. | ||
libdict | ||
coll_libnbc_component.c | ||
coll_libnbc.h | ||
Makefile.am | ||
nbc_iallgather.c | ||
nbc_iallgatherv.c | ||
nbc_iallreduce.c | ||
nbc_ialltoall.c | ||
nbc_ialltoallv.c | ||
nbc_ialltoallw.c | ||
nbc_ibarrier.c | ||
nbc_ibcast_inter.c | ||
nbc_ibcast.c | ||
nbc_iexscan.c | ||
nbc_igather.c | ||
nbc_igatherv.c | ||
nbc_ineighbor_allgather.c | ||
nbc_ineighbor_allgatherv.c | ||
nbc_ineighbor_alltoall.c | ||
nbc_ineighbor_alltoallv.c | ||
nbc_ineighbor_alltoallw.c | ||
nbc_internal.h | ||
nbc_ireduce_scatter_block.c | ||
nbc_ireduce_scatter.c | ||
nbc_ireduce.c | ||
nbc_iscan.c | ||
nbc_iscatter.c | ||
nbc_iscatterv.c | ||
nbc_neighbor_helpers.c | ||
nbc.c | ||
owner.txt |