Releases: uiuc-hpc/lci
Releases · uiuc-hpc/lci
LCI v1.7.7
Major Changes
- Make LCI more robust with the libfabric/cxi provider.
- new rendezvous protocol
write
. - more assertions.
- new rendezvous protocol
- 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
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.
- LCT provides basic tools that can be used across libraries, including
- 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
toLCI_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
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.
- sendm and putm consume LCI packets even when the send can be inlined.
- 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
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
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.