Bump reconverse to 58921e9 (#217, #222); grow the reconverse CI tier; skip classic-only tests on reconverse - #3974
Conversation
…ic-only tests Reconverse main 58921e9 carries two fixes found by Charm++'s own tests: - #217: CmiWithinNodeBroadcast now follows the classic delivery contract: nokeep messages shared by reference, a zerocopy broadcast receive delivered to the calling PE only, the caller's buffer consumed. Before it, tests/charm++/within_node_bcast aborted at +pe 2 and six of the nine tests/charm++/zerocopy directories segfaulted at +pe 4. - #222: reconverse declares CMK_ONESIDED_IMPL (and CMK_ONESIDED_RO_DISABLE), so zcQdIncrement creates one quiescence count per Direct-API RDMA operation, matching the single acknowledgement of reconverse's RMA path. Before it, zerocopy_with_qd with two processes never reached quiescence after its Direct API test. It also declares CMK_MACHINE_PROGRESS_DEFINED, so CkNetworkProgress() now drives the network instead of compiling to nothing. reconverse-ci's TEST_DIRS gains within_node_bcast and eight zerocopy directories, the tests that caught both bugs; zerocopy/zc_post_modify_size stays out until reconverse #223 (a two-process data mismatch present before and after these fixes) is resolved. tests/charm++/queue and tests/charm++/longIdle are filtered out of TESTDIRS under reconverse (CMK_GDIR=reconverse): queue tests classic's Cqs API, which the reconverse build does not compile, and longIdle needs CcdCallOnConditionOnPE, which reconverse lacks. tests/converse/megacon is likewise skipped: it is written against the Cpm interface; reconverse carries its own port of the bank (tests/megarecon, reconverse PR #218). Verified on macOS arm64 with the equivalent tree (#217 + #222 as the submodule): the whole TEST_DIRS tier passes in one and two processes, zerocopy_with_qd included; nine of nine zerocopy directories pass single process, eight with two processes. An Anvil run (two nodes, InfiniBand, hwloc) is in progress and gates the merge. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Charm's feature detection turned CMK_USE_CMA on for every Linux build with process_vm_readv, reconverse included. Reconverse has no CMA transport: its conv-rdma.cpp compiles the CMA paths only under a CMK_USE_CMA it never defines, and it does not parse +noCMAForZC. So a reconverse-linux build compiled dead CMA branches into Charm++, and the zerocopy tests' Makefiles, which run their +noCMAForZC variants when CMK_USE_CMA is 1, handed the flag to programs that do not consume it: "Usage: ./zerocopy_with_qd <array size>" on Linux CI, while the same tier passes on macOS where CMK_HAS_CMA is 0. Found by the first Linux run of the widened reconverse-ci tier. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… not for hosted runners) Its own zerocopy/Makefile keeps it out of the test target for the same reason; the first Linux run of the widened tier hit a failed assert in it on both x86_64 (two processes) and arm64 (one process) while every other directory passed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Anvil results (one node so far; two-node jobs queued behind ~23k pending): charm
Two-node results (InfiniBand across hosts) will be added when the wholenode jobs run. |
|
We don't need to wait for 2 node result for this. Please review and merge. |
|
Anvil two-node results are in (wholenode a[365,375] and standard a[492,510], InfiniBand between hosts, charm 310d470 with reconverse 75703b2 = main + #217 + #218 + #220 + #222): the whole tier passes across two nodes, including |
Summary
Bumps
contrib/reconverseto main58921e9, which carries two fixes found by Charm++'s own tests, and lets CI run those tests.CmiWithinNodeBroadcastfollows the classic delivery contract (nokeep shared by reference, zerocopy broadcast receive delivered to the calling PE only, caller's buffer consumed). Before ittests/charm++/within_node_bcastaborted at+pe 2and six of ninetests/charm++/zerocopydirectories segfaulted at+pe 4.CMK_ONESIDED_IMPL(withCMK_ONESIDED_RO_DISABLE), sozcQdIncrementcreates one quiescence count per Direct-API RDMA operation, matching reconverse's single acknowledgement. Before it,zerocopy_with_qdwith two processes never reached quiescence after its Direct API test. It also declaresCMK_MACHINE_PROGRESS_DEFINED, soCkNetworkProgress()drives the network instead of compiling to nothing.CI tier (
reconverse-ci.yamlTEST_DIRS): addswithin_node_bcastand eight zerocopy directories, the tests that caught both bugs.zerocopy/zc_post_modify_sizestays out until reconverse #223 (two-process data mismatch, present before and after these fixes) is resolved.Classic-only tests skipped on reconverse (
CMK_GDIR=reconverse):tests/charm++/queue(classic's Cqs API, not compiled for reconverse),tests/charm++/longIdle(needsCcdCallOnConditionOnPE),tests/converse/megacon(Cpm interface; reconverse carries its own port,tests/megarecon, reconverse PR #218).No Charm++ source changes; the quiescence fix takes effect through the rebuild.
Verification
macOS arm64, this tree: the whole TEST_DIRS tier passes in one and two processes,
zerocopy_with_qdincluded. An Anvil run of the same reconverse (two nodes, InfiniBand, hwloc) is in progress and should gate the merge; results will be posted here.🤖 Generated with Claude Code