Skip to content

Releases: uiuc-hpc/lci

LCI v1.7.7

07 Apr 20:02
Compare
Choose a tag to compare

Major Changes

  • Make LCI more robust with the libfabric/cxi provider.
    • new rendezvous protocol write.
    • more assertions.
  • Remove sysconf from malloc critical path.
    • Can be a major performance bottleneck on some platform (such as Frontera).
  • New LCI network backend: UCX.
  • Make LCI_sync_test/wait thread-safe against other LCI_sync_test/wait.

Breaking Changes

Other Changes

  • Update spack package.py; make LCI_progress thread-safe by default.
  • By default, configure cmake to install all lci executables.
  • Refactor rendevzous protocol code; add rendezvous protocol selection (LCI_RDV_PROTOCOL=write/writeimm).
  • Enable the env var LCI_BACKEND_TRY_LOCK_MODE for ofi backend.
  • Let LCT Logger also report hostname.
  • Add a field (packet) to LCII_context_t.
  • Add sendmc: send medium with completion notification.
  • Improve LCT hostname setup.
  • Refactor performance counters: "on-the-fly" and "on-the-fly-lw" modes.
  • Add(lct): add argument parser to LCT.
  • Add(lct_tbarrier): add thread barrier to LCT.
  • Add(many2many_random): new example many2many_random.
  • Add LCI_VERSION macros.
  • Improve LCI cmake config file.
  • Add(putmac): put medium with completion.
  • Rename LCT log ctx from lci to lct; add log for pmi.
  • Improve LCT_Assert: only evaluate the string after asserting failed.
  • Remove fflush(stderr).
  • Add assertion to pmi.
  • Improve(ofi backend): better way to call fi_cq_readerr.
  • Make mpi_pt2pt also works for singleton case.
  • Add more log outputs to lct pcounter.
  • Fix lct_parse_pcounter.py.
  • Add try_lock_mode: none, global, global_b.
  • Improve PMI: add cmake option to turn off PMI1/PMI2 compilation.

Fixed Issues

  • Fix bugs with LCII_make_key (possibly just a refactoring intead of a bug fixing).
  • Fix lct log uninitialized error.
  • Fix lci-ucx: link to pthreads.
  • Fix LCI_IBV_ENABLE_TD option.
  • Fix op undercount and buffer overflow for non-power-of-two (#67).
  • Fix cache padding in device.
  • Fix spack package pmix option.
  • Fix README typo.
  • Fix lcit initData: affect lcitb's performance.
  • Fix try_lock_mode.

Full Changelog: v1.7.6...v1.7.7

LCI v1.7.6

12 Oct 16:42
Compare
Choose a tag to compare

Major Changes

  • Split the original C library, LCI, into two libraries: a C library, LCI,
    and a C++ library, LCT (Lightweight Communication Tools).
    • LCT provides basic tools that can be used across libraries, including
      • timing
      • string searching and manipulation
      • query thread ID and number
      • logging
      • performance counters
      • different implementation of queues
      • PMI (Process Management Interface) wrappers
    • The CMake variable LCI_WITH_LCT_ONLY can be used to enable LCT-only build.
  • Add(LCI_cq_createx): be able to specify the cq max length.
    • This is a temporary workaround for multiple devices.
  • Add(LCI_ENABLE_PRG_NET_ENDPOINT): control whether to use the progress-specific network endpoint

Breaking Changes

  • The lib output name is changed from LCI/LCT to lci/lct.
  • Change LCI_IBV_ENABLE_TRY_LOCK_QP to LCI_IBV_ENABLE_TD and make it an env var.

Other Changes

  • Change the default endpoint number from 8 to 1024.
  • Change the CircleCI config to Debug build; Enable performance counter in debug CI.
  • Merge lcii_config.h.in into lci_config.h.in.
  • Improve(pcounter): do not call LCT_now when the performance counters are not enabled.
  • lci-ucx rcache: turn off assertion by default

Fixed Issues

  • Fix liblci.pc.in.

Full Changelog: v1.7.5...v1.7.6

LCI v1.7.5

15 Oct 18:28
Compare
Choose a tag to compare

Major Changes

  • Runtime: use buffer directly for inline sendm/putm
    • sendm and putm consume LCI packets even when the send can be inlined.
      This allows such "short" medium sends to bypass normal packet allocation
      and use the user's buffer directly.
  • Add LCIX collective communication operations.
  • Add LCI_ENABLE_MULTITHREAD_PROGRESS option: Make LCI_progress thread-safe.
  • Improve Matching Table:
    • Improve the original matching table algorithm.
    • Providing two more matching table backends.
    • Refactor the code to enable user select the matching table at runtime.
      • queue
      • hash
      • hashqueue

Breaking Changes

Other Changes

  • Use check_c_compiler_flag to set LCI_USE_AVX and LCI_OPTIMIZE_FOR_NATIVE.
  • spack: add spack package for new LCI version.
  • Enable debug build for detecting double free of packets.
  • More debugging log.
  • Implement LCI_barrier with LCI_send/recv.
  • Improve ibv device selection procedure: automatically select the device and
    port with the best performance.
  • Modernize LCI: Use C11 stdatomic for all synchronization variables.
  • Add an assertion in LCI_putva in case there are too many lbuffers.
  • Set the default value of LCI_USE_AVX to be OFF.
  • improve(cmake): Only set LCI_USE_DREG_DEFAULT to 1 when using the ibv backe
    nd
  • improve(cmake): improve the LCI_SERVER auto selection: if we find ofi/cxi p
    rovider, use ofi by default
  • improve(pmi): add warning to users when PMIx environment is detected but PM
    Ix support is not enabled.
  • improve(ofi): use try lock wrapping the endpoint when posting sends and puts.

Fixed Issues

  • Fix LCI compilation on AArch64.
  • fix(ibv): fix compilation warning of "non-void function does not return a v
    alue".
  • fix(lci-ucx): fix compilation warning "macro expansion producing 'defined'
    has undefined behavior".
  • fix(lci-ucx): add missing compilation options (especially -DUSE_LOCKS=1) wh
    en using ptmalloc.
  • fix(rcache): fix compilation warning of non-void function no return.
  • fix(ofi): correctly handle the case when fi_recv returns -FI_EAGAIN.
  • fix(pmi): use cray/slurm pmi if found; update the embedded pmi API to new version.

Full Changelog: v1.7.4...v1.7.5

LCI v1.7.4

24 Mar 16:55
Compare
Choose a tag to compare

Major Changes

  • Greatly improve the ease of use of LCI.
    • Automatically find the available PMI backend to use.
    • Automatically find the available network backend to use.
    • Automatically detect whether the libfabric/cxi provider is available.

Breaking Changes

Other Changes

Fixed Issues

  • Fix zero-byte messages send when using ibv mlx4 backend.
  • Fix the LCI_PM_BACKEND_ENABLE_MPI/PMIX cmake variables.

LCI v1.7.3

13 Mar 05:37
e464817
Compare
Choose a tag to compare

Major Changes

  • Integrate PAPI into LCI.
    • Use cmake option LCI_USE_PAPI to enable.
    • Use env var LCI_PAPI_EVENTS to specify events to monitor.
  • Add pmix support for LCI.
  • Update README, doxygen comments, and example codes.

Breaking Changes

  • Change uint32_t rank to int rank in sendl/recvl to match other
    communication operations.

Refer to doc/changelog_1_7_3.md for a full list of changes.