Skip to content

Charm++ 9.0.0-alpha1

Pre-release
Pre-release

Choose a tag to compare

@lvkale lvkale released this 16 Oct 22:50
592bb25

First pre-release of the 9.0 line. Alpha tags are cut from the
'recharm' branch as work lands; the gaps listed at the end of this
section close in later alphas and the beta.

Charm++ 9.0 runs on reconverse, a new implementation of Converse,
included as the contrib/reconverse submodule (#3944, #3969). The
classic Converse line ends with 8.1.0 and continues as the branch
'classic', for bug fixes only; this line is the branch 'recharm'.
The classic machine layers are still in this tree as a fallback and
are removed before the 9.0 release.

Runtime:

  • Reconverse uses LCI2 as its network layer (LCW over MPI as a
    fallback). Build with the reconverse-- targets, for
    example reconverse-linux-x86_64.

  • Programs start without charmrun: './app +pe N' runs N PEs in one
    process; multi-process runs use lcrun (or srun / mpirun), with +pe
    giving the total PE count. There is no communication thread, so
    every core can run a worker PE. The manual's Running chapter
    describes the reconverse launch options (#4043).

  • CCS: the server, handler registry and request forwarding live in
    reconverse (reconverse #280); charm keeps the CCS builtins, liveViz
    and PythonCCS on top of them (#4037, #4042).

  • +glibc_tuned_malloc: opt-in glibc malloc tuning for processes with
    many PEs, Linux only (reconverse #275).

  • Scheduler order: a PE takes node-level work before its own queued
    work, the order classic used (reconverse #268, #274).

  • GPU support on reconverse: portable HAPI core (#3951),
    device-to-device communication (#3955), device zerocopy with
    register-once buffers (#3960, #3961), GPU-aware load balancer (#3968).

New on this line since the split from classic:

  • 64-bit object ids, groundwork: the location manager aborts on
    per-PE element id overflow instead of reusing ids (#4016); design
    documents in doc/ (#4015).

  • Broadcasts and [nokeep] entry methods: fixes for message reuse and
    copies (#4000-#4012). Checkpoint restart no longer hangs with more
    than one process and more than one PE per process (#4019). The
    location manager initializes its destruction flag, so deleting an
    array element no longer leaves a stale entry at its home (#4044).

  • CkTreeCacheManager, a process-shared tree store with CkCache's
    protocol (#4013, #4014).

  • Summary tracing records message bytes per entry method per interval
    (#3937, #4020).

  • Randomized message queue at run time: +randomized_msgq (and
    +randomized_seed to repeat a run) (reconverse #269). The classic
    build option --enable-randomized-msgq is rejected at configure time
    on reconverse builds (#4029).

  • Per-PE queue counter and opt-in jemalloc allocator, CMake option
    RECONVERSE_USE_JEMALLOC (reconverse #272).

  • charmxi no longer crashes on serial blocks when run without
    -orig-file (#4027).

Known gaps in the alpha:

  • AMPI is not yet ported to reconverse; Windows multicore is not yet
    available.

  • CharmDebug is not available.

  • MPI interoperation (user-driven interop) is not supported.

  • Checkpoint files written by 9.0 alpha may not be readable by later
    9.0 pre-releases, because the object id layout may change before
    the beta. Trace logs and load balancer dumps are not affected.

  • CkMulticast delegation can hang under +randomized_msgq (#4032).

Getting the source:

The GitHub source archive for the tag does not contain the
contrib/reconverse submodule. Clone instead:

git clone --branch v9.0.0-alpha1 --recurse-submodules https://github.com/charmplusplus/charm
cd charm && ./build charm++ reconverse-linux-x86_64 --with-production -j8

Tested at this tag (2026-10-16):

  • macOS arm64 (reconverse-darwin-arm8, production): every directory
    under tests/, examples/ and benchmarks/ with a test target, single
    process, 182 directories; the pre-existing failures outside CI are
    tracked in #4035.
  • NCSA Delta, 2 CPU nodes, Slingshot-11 (libfabric cxi): the CI test
    set in one process and in two processes on two nodes, pingpong
    across nodes, megatest with 2 x 16 PEs.
  • Purdue Anvil, 2 nodes, InfiniBand (libfabric verbs): the same set
    as on Delta, on the candidate one reconverse commit before the tag
    (66e4af3; the tag adds the scheduler-order change, reconverse #274).