notebooks: isolate solver bake-off combos in subprocesses#298
Merged
Conversation
- Replace outdated Fortran-kernel references with native C++ kernels (TortuosityKernels.H); the .F90/*_F.H files no longer exist - Add TortuosityMLMG matrix-free solver and TortuositySolverBase abstraction - Add homogenization (DeffTensor), microstructure modules (SSA, PSD, connected components, through-thickness, REV study) to the file reference - Document the Python/pybind11 layer and pure-Python fallback - Update data-flow and test tables (MLMG, synthetic, Diffusion integration, validation, pytest)
The profiling notebook's solver bake-off runs every HYPRE config including standalone SMG/PFMG. On a GPU build, standalone SMG drives many full cyclic-reduction V-cycles to tolerance and can abort at the C++ level (CUDA OOM / HYPRE kernel error). That hard-aborts the process, killing the Jupyter kernel with no catchable exception and wiping df_solvers plus every downstream section. Run each combo in its own short-lived subprocess so a hard crash only takes down that child — the parent records it as a FAILED row (decoding the signal, e.g. SIGABRT/SIGKILL, as a likely OOM) and continues. The crashed child's CUDA context is reclaimed on exit. Adds a per-combo timeout and a robustness note in the section markdown. All 10 combos are retained for completeness.
Claude Code on the web runs in ephemeral containers that clone the repo fresh with no git identity configured. This SessionStart hook sets the local user.name/user.email on every session so commits are attributed to James Le Houx's GitHub account (via the GitHub noreply email, which maps reliably to the account). Idempotent and repo-scoped.
Code Coverage ReportGenerated by CI — coverage data from gcovr |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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.
The profiling notebook's solver bake-off runs every HYPRE config including
standalone SMG/PFMG. On a GPU build, standalone SMG drives many full
cyclic-reduction V-cycles to tolerance and can abort at the C++ level
(CUDA OOM / HYPRE kernel error). That hard-aborts the process, killing the
Jupyter kernel with no catchable exception and wiping df_solvers plus every
downstream section.
Run each combo in its own short-lived subprocess so a hard crash only takes
down that child — the parent records it as a FAILED row (decoding the signal,
e.g. SIGABRT/SIGKILL, as a likely OOM) and continues. The crashed child's CUDA
context is reclaimed on exit. Adds a per-combo timeout and a robustness note in
the section markdown. All 10 combos are retained for completeness.