mercury 2.1.0rc4
Pre-release
Pre-release
Summary
This version brings bug fixes and updates to our v2.0.0 release.
New features
- [NA UCX]
- Add initial support for UCX. As opposed to other plugins, the UCX plugin is able through the
ucx+all
init string to decide on which protocol to use.
- Add initial support for UCX. As opposed to other plugins, the UCX plugin is able through the
- [NA SM]
- Update default addressing format to follow
PID-ID
instead ofPID/ID
- Allow for passing of arbitrary SM init URIs
- Enable support for bulk handle address binding
- Add
sm_info_string
field to HG init info, which allows for specific init URIs to be used for SM whenauto_sm
is enabled.
- Update default addressing format to follow
- [NA]
- Add
thread_mode
to NA init options and addNA_THREAD_MODE_SINGLE
to relax thread-safety requirements. - Add
na_cb_info_recv_expected
to returnactual_buf_size
. - Add
na_cb_type_to_string()
to convert callback enum type to printable string.
- Add
- [NA IP]
- Add
na_ip_check_interface()
routine that can be used by plugins to select IP interface to use.
- Add
- [HG util]
- Add
hg_mem_header_alloc()
/free()
calls to allocate buffers with a preceding header. - Add thread annotation module for thread safety analysis.
- Add
mercury_mem_pool
memory pool to facilitate allocation and memory registration of a pool of buffers. - Enable format argument checking on logging functions.
- Add
hg_time_from_ms()
andhg_time_to_ms()
for time conversion to ms.
- Add
- [HG bulk]
- Return transfer size
size
throughhg_cb_info
andhg_cb_info_bulk
.
- Return transfer size
Bug fixes
- [NA OFI]
- Require at least v1.7.0 of libfabric.
- Fix handling of completion queue events and completion of retried operations that fail.
- Fix progress loop to reduce time calls.
- Force per-region registration for all providers and remove deprecated FI_MR_SCALABLE type of registrations and global MR keys.
- [NA SM]
- Refactoring and clean up of sends/cancelation/retries/rma/address keys.
- Remove use of usernames from SM paths.
- [HG util]
- Prevent use of
CLOCK_MONOTONIC_COARSE
on PPC platforms and default toCLOCK_MONOTONIC
. - Fix debug logs that were not freed at exit.
- Remove return value of mutex lock/unlock routines.
- Fix log subsys to prevent setting duplicates.
- Simplify handling of compiler attributes and add
mercury_compiler_attributes.h
module. - Remove
hg_util_
integer types and usestdint.h
. - Remove OpenPA dependency for atomics and use built-in atomics instead (requires gcc >= 4.7).
- Prevent use of
- [HG/HG util/NA]
- Fix thread safety warnings and potential thread locking issues.
- Fix log level set routines that were not enabling the underlying log sub-system.
- Avoid reading system timers and optimize handling of timeouts.
- [HG bulk]
- Fix erroneous call to
NA_Mem_deregister()
when handle is deserialized. - Correctly mark op as canceled if canceled from NA.
- Clean up and simplify handling of NA error return codes in callback.
- Fix erroneous call to
- [HG Core]
- Fix error handling when NA send fails during an
HG_Forward()
operation. - Correctly map NA error return code back to HG error return code in user callback.
- Correctly print HG handle debug information.
- In short responses like ACKs, leave room at the front of a buffer for
the NA header, and expect the header to be present. - Fix potential issue on context destroy where handles could have been reposted while finalizing if RPCs were still in the queue.
- Fix error handling when NA send fails during an
- [General]
- Warning and static analysis issues were fixed.
⚠️ Known Issues
- [NA OFI]
- [tcp/verbs;ofi_rxm] Using more than 256 peers requires
FI_UNIVERSE_SIZE
to be set. - [tcp;ofi_rxm] Remains unstable, use
sockets
as a fallback in case of issues.- Please note that libfabric v1.13.0 and v1.13.1 have address management issues with that transport. Please either downgrade to v1.12.1 (or earlier) or upgrade to v1.13.2 (or later).
- [tcp/verbs;ofi_rxm] Using more than 256 peers requires
- [NA UCX]
NA_Addr_to_string()
cannot be used on non-listening processes to convert a self-address to a string.