Tags: uiuc-hpc/lci
Tags
This is an early **beta release** of version `2.0.0`, intended for te… …sting and feedback. The API in this release is **largely stable**, and we do not anticipate major breaking changes. However, **minor tweaks and optimizations** may still be introduced prior to the final `v2.0.0` release. This release is made available for: - Early adopters to begin integration and testing - Collecting feedback on functionality and performance - Identifying any remaining edge cases or bugs Please report any issues or suggestions to help us improve the upcoming stable release.
- lct: add external MPMC queue implementation - add new PMI backend `file` and lcrun - remove link dependency to network backends in LCIConfig.cmake.in - rename SRUN_EXE -> LCI_USE_CTEST_EXE - packet pool: add option to control global/per-device packet pool (LCI_USE_GLOBAL_PACKET_POOL) - add options for device lock mode - improve LCI_INIT_ATTACH_DEBUGGER: make the variable i volatile - improve various warning messages - fix macOS build - cmake: add LCI::LCI LCI::lci as an alias for LCI for autofetch purpose - improve support for fetchcontent
- Upstream LCI spack package to the spack repo. - Add RoCE support - including the GID auto selection feature. - Improve multi-device support - use shared low-level data structures. - use shared heap and package pools for devices - Fix messages of size larger than int_max. - LCI will break the message into multiple chunks and send them with RDMA write. - Change the github repo name from uiuc-hpc/LC to uiuc-hpc/lci - Remove the LCI::Shared cmake target - improve spack package.py: use spec.satisfies instead of spec.value - fix(ofi): pass LCI_SERVER_MAX_SENDS/RECVS to libfabric endpoints - add three performance counters: net_poll_cq_num, sync_stay_timer, cq_stay_timer - refactor backend: LCI device as LCIS endpoint - force ofi cxi to disable LCI_ENABLE_PRG_NET_ENDPOINT - initialize allocated packets with LCII_POOLID_LOCAL - add net_cq_poll related counters to measure the thread contention in progress engine - fix(lct/pcounter): exit recording thread if not needed - ibv backend: adjust max_send, max_recv, max_cqe according to device_attr - improve LCIConfig.cmake.in: PACKAGE_CMAKE_INSTALL_XXX can be changed by find_dependency
Lightweight Communication Interface (LCI) v1.7.7 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.
Lightweight Communication Interface (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 provids 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.
- Fix the ibv backend with old libibverbs that does not support odp.
PreviousNext