Skip to content

mercury 2.4.0rc4

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 02 Aug 22:27
v2.4.0rc4

Summary

This is a preview release of the v2.4.0 release.

New features

Added in rc4

  • [HG]
    • Add multi_recv_copy_threshold init parameter
      • Use this new parameter to fallback to memcpy to prevent starvation of multi-recv buffers
    • Associate handle to HG proc
      • hg_proc_get_handle() can be used to retrieve handle within proc functions

Added in rc3

  • [HG]
    • Add multi_recv_op_max init parameter
      • This allows users to control number of multi-recv buffers posted (libfabric plugin only)
    • Add no_overflow init option to prevent use of overflow buffers
    • Improve multi-recv buffer warning messages
    • Add HG_Event_get_wait_fd() to retrieve internal wait object
    • Add HG_Event_ready() / HG_Event_progress() / HG_Event_trigger() to support wait fd progress model
      • Simplify progress mechanism and remove use of internal timers
      • Always make NA progress when HG_Event_progress() is called
      • Update HG progress to use new NA progress routines
    • Add missing HG_WARN_UNUSED_RESULT to HG calls
    • Switch to using standard types and align with NA
      • Keep some uint8_t instances instead of hg_bool_t for ABI compatibility
  • [NA]
    • Add NA_Poll() and NA_Poll_wait() routines
    • Deprecate NA_Progress() in favor of poll routines
    • Add NA_Context_get_completion_count() to retrieve size of completion queue
    • Update plugins to use new poll and poll_wait callbacks
      • poll_wait plugin callback remains for compatibility
    • Fix documentation of NA_Poll_get_fd()
    • Add missing NA_WARN_UNUSED_RESULT qualifiers
    • Bump NA version to 5.0.0
    • Remove deprecated CCI plugin
    • Return last known error when plugin loading fails
  • [NA OFI]
    • Remove unused NA_OFI_DOM_SHARED flag
    • Always use FI_SOURCE and FI_SOURCE_ERR when both are supported
  • [NA UCX]
    • Add ucx log outlet and redirect UCX log
      • Use default HG log level if UCX_LOG_LEVEL is not set
  • [HG Util]
    • Add hg_log_vwrite() to write log from va_list
    • Add hg_log_level_to_string()
    • Clean up mercury_event code and add const qualifier to hg_poll_get_fd()
    • Add const on atomic gets
    • Switch to using sys/queue.h directly
    • Remove HG_QUEUE and HG_LIST definitions
    • Add hg_dl_error() to return last error
  • [HG/NA Perf Test]
    • Add -u option to control number of multi-recv ops (server only)
    • Add -i option to control number of handles posted (server only)
    • Update to use new HG/NA progress routines and remove use of hg_request

Added in rc2

  • [NA OFI]
    • Add support for FI_AV_AUTH_KEY (requires libfabric >= 1.20)
      • Add runtime check for cxi provider version
      • Setting multiple auth keys disables FI_DIRECTED_RECV
      • Separate opening of AV and auth key insertion
      • Parse auth key range when FI_AV_AUTH_KEY is available
      • Encode/decode auth key when serializing addrs
    • Add support for FI_AV_USER_ID
    • Clean up handling of FI_SOURCE_ERR
    • Remove support of FI_SOURCE w/o FI_SOURCE_ERR
    • Add support for new CXI address format

Added in rc1

  • [NA]
    • Add init info version compatibility wrappers
    • Bump NA version to v4.1.0
    • Add support for traffic_class init info (only supported by ofi plugin)
  • [NA OFI]
    • Attempt to distribute multi-NIC domains based on selected CPU ID
    • Support selection of traffic classes (single class per NA class)
  • [HG/NA Perf Test]
    • Add -f/--hostfile option to select hostfile to write to / read from
    • Add -T/--tclass option to select trafic class
    • Autodetect MPI implementation in perf utilities
      • MPI can now be autodetected and dynamically loaded in utilities, even if MERCURY_TESTING_ENABLE_PARALLEL was turned off. If MERCURY_TESTING_ENABLE_PARALLEL is turned on, tests remain manually linked against MPI as they used to be.

Bug fixes

Added in rc4

  • [HG]
    • Fix couple of type changes introduced in rc1 that could have broken ABI
    • Fix shared-memory path that was previously disabled in conjunction with libfabric transports that use the multi-recv capability
  • [HG util]
    • Fix dlog_free not called when parent/child have separate dlogs
  • [HG/NA]
    • Fix init info changes made in previous rcs to prevent ABI breakage
    • HG NA init info is fixed to v4.0 for now and duplicates tclass info

Added in rc3

  • [HG]
    • Fix behavior of request_post_incr init parameter
      • request_post_incr cannot be disabled (set to -1) with multi-recv
  • [HG Util]
    • Fix mercury log to correctly generate outlet names
    • Fix log outlets to use prefixed subsys name
    • Fix use of macros in debug log
  • [CMake]
    • Fix cmake_minimum_required() warning
    • Update kwsys and mchecksum dependencies

Added in rc2

  • [HG Util]
    • Use destructor to free log outlets
  • [NA]
    • Fix missing free of dynamic plugin entries
  • [NA UCX]
    • Fix hg_info not filtering protocol
      • Allow na_ucx_get_protocol_info() to resolve ucx tl name aliases
  • [NA OFI]
    • Fix shm provider flags
  • [NA Test]
    • Remove could not find MPI message

Added in rc1

  • [HG Util]
    • Add missing prototype to hg_atomic_fence() definition
  • [NA OFI]
    • Remove excessive MR count warning message
  • [NA Perf]
    • Ensure perf tests wait on send completion

⚠️ Known Issues

  • [NA OFI]
    • [tcp/verbs;ofi_rxm] Using more than 256 peers requires FI_UNIVERSE_SIZE to be set.