Repository navigation
GPU stack 8/8: profiling cases Poisson cube and Vlasov slab (CPU node vs GPU, GPU scaling) - #789
Draft
max-models wants to merge 9 commits into
Draft
max-models wants to merge 9 commits into
max-models wants to merge 9 commits into
Conversation
…U scaling - Poisson gaussian_cube: --steps (repeated solves with the matrices assembled once), --solver pcg|pcg_sr, --gpu-timing (one thread per rank, CUDA-event times per region), --no-output; submit scripts for 28 CPU ranks vs 1 GPU and for GPU scaling; sweep_poisson.py runs several cases. - Vlasov homogeneous_slab: particle push profiling case (default 16M markers, --test-run for the examples test) with post-processing and the same two submit scripts. - profiling_job.py: launcher detection and job setup for these cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its two pushers have CUDA versions, so the case keeps the layout it was measured with (STRUPHY_MARKERS_COLUMN_MAJOR defaults to 1 here). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 16, 2026
max-models
added this pull request to stack #790
October 16, 2026 08:51
…ack-7-particle-loading-sorting)
devel stores the marker buffer as (n_cols, n_markers) on both backends (#774), so the column-major opt-in of the GPU stack is gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…profiling-cases (feectools update)
…profiling-cases (feectools update, CachedLaunch)
…ack-7-particle-loading-sorting)
…profiling-cases (pcg_sr in the shear Alfven solves)
examples/Poisson/sweep_poisson.py imports run_sweep and variant_entries from it, and profiling_job.py refers to it (begin_sweep, finalize_all), but it was never committed on cuda-aware-mpi-fixes, so the sweep script failed at import. variant_entries lists one entry per key of a submit script's VARIANTS; run_sweep runs the scripts as __main__ in this process inside profiling_job.begin_sweep (each submits its jobs and only registers its case), reports failing scripts and goes on, and then calls profiling_job.finalize_all to package (and push) every run as its job finishes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
max-models
marked this pull request as draft
October 22, 2026 06:39
This branch has not been deployed
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.
Part 8 of 8 of the split of #772 (
cuda-aware-mpi-fixes) into stacked PRs. Requires struphy-hub/feectools#104 to be merged into feectoolsdevel-tinyfirst (PR 1 bumps the submodule).gaussian_cube:--steps(repeated solves with the matrices assembled once),--solver pcg|pcg_sr,--gpu-timing(one thread per rank, CUDA-event device times per region),--no-output. Submit scripts for 28 CPU ranks vs 1 GPU and for GPU scaling.examples/Poisson/sweep_poisson.pyruns several cases.homogeneous_slab: particle push profiling case (16M markers by default,--test-runfor the examples test), with post-processing and the same two submit scripts.profiling/profiling_job.py: launcher detection and job setup for these cases.profiling/sweep.py(run_sweep,variant_entries): runs several submit scripts as one sweep in one process (profiling_job.begin_sweep/finalize_all), so they share one packaging folder; a failing script is reported and the sweep goes on.sweep_poisson.pyimported it, but it was never committed, so it is written new here. Checked with a dry run ofsweep_poisson.py(30 submit commands) and a run on test scripts (variants, a failing exit code, an exception, registered cases).Tests
Local, macOS without a GPU, in a fresh environment with feectools
1d8d47cand the pinned cunumpy, after merging devel (with #774 and #775). The PR passestest_cuda_parity,test_cuda_emulation,test_kernel_backends,test_sorting,test_accum_matrix_cupy,test_preconditioner_cupy,test_poissonandtest_outputon its own. The top of the stack also passes the mass-matrix, preconditioner, Derham-GPU, fused-gradient, Kronecker-block, Poisson, shear Alfvén, post-processing, polar fake-CuPy and allpictests (1477 passed), the examples test for the two profiling cases, the sorting, Poisson and fused-gradient tests undermpirun -n 2, and the device MPI sort on the fake CuPy on 2 and 4 ranks. The Kronecker products match the stencil mass matrices to 5e-16 for M0, M1, M2, M3, Mv, M1n and M2n on a Cuboid, periodic and Dirichlet, on 1 and 2 ranks.Not tested on a GPU here. The CUDA kernels and the device paths need a run on the cluster.
Stack (merge in order)
devel-tiny)devel🤖 Generated with Claude Code