Repository navigation
Charm++ 9.0.0-alpha2
Pre-releaseSecond pre-release of the 9.0 line, cut from 'recharm' at 247c38f
(reconverse b23a7fb). It is the last tag that still carries the classic
Converse sources and machine layers; they are deleted right after it
(#4056), so this tag marks the end of the two-runtime tree. Everything
below is new since v9.0.0-alpha1 (2026-10-16).
Runtime (reconverse):
-
User-driven interop: CharmBeginInit / CharmInit / CharmLibExit work on
reconverse, so a program can run Charm++ phases from its own main
(#4055, reconverse #288). CharmLibInit with an MPI communicator still
aborts; MPI interop stays on the list. -
Idle PEs reach the idle condition after one empty network poll instead
of a sweep of about forty: quiescence detection across two processes
settles in 0.4 ms instead of 10 ms on the libfabric TCP provider, and
cross-process ping-pong latency on that provider halves (reconverse
#290). -
Slingshot (libfabric cxi): the LCI registration cache is off and RX
matching is hybrid, so FI_MR_CACHE_MONITOR and FI_CXI_RX_MATCH_MODE no
longer need to be set in the environment (reconverse #281). -
++quiet suppresses CmiPrintf output and the startup banners; abort
reasons always go to stderr (reconverse #289).
Charm++:
-
64-bit object ids, parts 1 and 2 (#4015, #4057, #4058, #4060): ids
minted from per-process tranches with a PE-0 allocator, restart with
any process count, a deleted index re-created under a new id is
re-addressed at its home, and an opt-in wide-collection layout (24
collection bits, 37-bit packed index; CkArrayOptions::setWideCollection)
for programs that create many small arrays. Maintainer documentation
in doc/internals/object-ids.md. -
AMPI stage 0: TCharm and AMPI build and run on reconverse without
thread migration (#4051). tests/ampi runs in CI, single and
two-process. Migration, checkpoint, isomalloc, -pieglobals and
-tlsglobals are not available on reconverse yet. -
Tests: the classic-only queue, queueperf, megacon and commlib tests are
gone and ten stale tests and examples build again (#4048); the CI tier
gained amr_1d_simple, dynamic_insertion, dynamic_insertion_deletion,
objid_insert, objid_wide and the user-driven-interop example.
Known gaps and issues in this alpha:
-
With several processes per host, +setcpuaffinity without +pemap binds
every process to the same cores (reconverse #276; fix in progress).
Use an explicit +pemap for multi-process-per-host runs. -
When one rank calls CmiAbort under srun, the other ranks keep running
until the job's time limit (reconverse #285; fix in progress). Launch
with 'srun -K' or wrap srun in 'timeout'. lcrun from LCI master already
ends the job; reconverse's pinned LCI predates that. -
AMPI thread migration, CharmDebug, Windows multicore: not available.
-
Checkpoint files written by an alpha may not be readable by later 9.0
pre-releases; the object id layout is final at the beta. -
CkMulticast delegation can hang under +randomized_msgq (#4032).
Getting the source:
git clone --branch v9.0.0-alpha2 --recurse-submodules https://github.com/charmplusplus/charm
cd charm && ./build charm++ reconverse-linux-x86_64 --with-production -j8
Tested at this tag (2026-10-19):
- macOS arm64 (reconverse-darwin-arm8, production): the full sweep of 186
test, example and benchmark directories, single process and two
processes, on the classic-deletion branch merged at this tip (the
deletion does not change the tested code); the same 13 pre-existing
failures as before (#4035). AMPI built and tests/ampi run single and
two-process. objid_wide, pingpong, megatest, user-driven interop. - Purdue Anvil, 1 node, 2 processes, InfiniBand (libfabric verbs): the
CI test set in one and two processes, pingpong, megatest with 2 x 16
PEs, on this exact tip (job 21539122, 38 of 38) and on the tip minus
#4060 (job 21536948). - NCSA Delta, 2 nodes, Slingshot-11: the same set on the same tree,
without the FI_MR_CACHE_MONITOR / FI_CXI_RX_MATCH_MODE settings that
earlier runs needed (reconverse #281).