Added new criu mnist testcase - #65
Open
arunkumar-AMD wants to merge 10 commits into
Open
Conversation
arunkumar-AMD
requested review from
a team,
madkasul and
mparamas-amd
as code owners
July 29, 2026 10:24
mparamas-amd
requested changes
Aug 3, 2026
| framework_config=framework_config, | ||
| config=config, | ||
| node_pool=node_pool, | ||
| is_multi_node=True, |
Contributor
Author
There was a problem hiding this comment.
Removed complete remote node plugin changes on this PR and updated on #48
| logger.info("[health-delta] %s", hm.delta_line(pre, post)) | ||
|
|
||
|
|
||
| def _container_marker_opts(request, config) -> dict | None: |
Contributor
There was a problem hiding this comment.
pls update the below 2 fixtures to read the container_opts and pass to _acquire_and_yield.
though not related to this single gpu scenario, this may remain as silent no-op for containerExecutor
multi_gpu_fixture
multi_node_fixture
Contributor
Author
There was a problem hiding this comment.
Removed complete remote node plugin changes on this PR and updated on #48
mparamas-amd
reviewed
Aug 3, 2026
mparamas-amd
approved these changes
Aug 7, 2026
mparamas-amd
left a comment
Contributor
There was a problem hiding this comment.
LGTM, thanks! pls merge after PR#63
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
CRIU (Checkpoint/Restore In Userspace) freezes a running process and checkpoints its full state to disk so it can later be restored and resume where it left off. On AMD GPUs this relies on the ROCm KFD checkpoint/restore hooks plus AMD's amdgpu_plugin.so, which serialize per-process GPU state (VRAM BOs, user-mode queues, events). This PR adds e2e coverage for checkpoint/restore of a real ML training workload — the upstream PyTorch MNIST example — running under ROCm PyTorch on the GPU. It is a correctness check, not a benchmark: "good" means a live training process can be criu dumped and criu restored and then keeps making forward progress, guarding specifically against the failure mode where restore reports success but the process silently hangs.
Technical Details
New test
tests/e2e/recovery/criu/test_criu_pyt_ex_mnist.py, plus the supporting fixtures and framework infra that let a workload be checkpointed inside a container.Test Plan
Test Result
Required:
--rock-dir (or ROCK_DIR / rocm-test.toml)
--container-image (must provide torch + torchvision)
Linux AMD GPU node with passwordless sudo -n
supported GFX (gfx90a/908/942/950, gfx110x/gfx120x).
Optional env:
ROCM_TEST_MNIST_PYTHON, ROCM_TEST_PYT_EXAMPLES_URL, ROCM_TEST_PYT_WORKDIR, ROCM_TEST_CRIU_AUTO_INSTALL (default 1), ROCM_TEST_CRIU_VERSION (default v4.1).
Optional flags:
-s (full CRIU logs inline), --remote-node. Run single-process (no -n).
pytest tests/e2e/recovery/criu/test_criu_pyt_ex_mnist.py -v --container-image <rocm-pytorch-image> --rock-dir <therock path>Test Result
Run inside a ROCm PyTorch container on an AMD GPU node → 1 passed (129.80 s).