Add new application: petsc-gmres - #87
Conversation
|
Thanks for the detailed validation notes. One current blocker is DCO: the check is failing on this draft PR. Could you please add Signed-off-by lines to the commits that are missing them, or otherwise update the branch so the DCO check passes? |
bd75260 to
ff47f16
Compare
GPU scaling re-measured under the iterate-only FOMPer Suzuki-san's recommendation, the FOM now measures only the GMRES iterate (
Setup was 91-97% of the old FOM — even more dominant than the 70% Correctness held throughout (L2 in the expected 0.03-0.04 band, bit-identical to the old runs at each GPU count). |
stokes2 matrix — full three-machine results (iterate-only FOM)Switched the benchmark matrix from Rikyu (GB200 NVL4, GPU, 1 rank/GPU)
Multi-GPU now wins — at ~1M rows/GPU there is enough work to amortize communication. Compare with Fugaku (A64FX, multi-node CPU, 48 ranks/node,
|
| nodes | ranks | ksp_iter_time_s | relative L2 | speedup |
|---|---|---|---|---|
| 1 | 48 | 44.881 | 0.2663 | 1.00x |
| 2 | 96 | 28.532 | 0.2582 | 1.57x |
| 4 | 192 | 16.777 | 0.2317 | 2.67x |
| 8 | 384 | 15.959 | 0.2641 | 2.81x |
Clean scaling through 4 nodes (2.67× at 4× ranks), then nearly flat 4→8 (2.81× at 8× ranks) — communication wall hits ~192 ranks for this problem size on A64FX.
DGX Spark (GB10 Blackwell, 1 GPU)
| machine | GPU | ksp_iter_time_s | relative L2 |
|---|---|---|---|
| Rikyu | B200 | 1.497 | 0.2516 |
| DGX Spark | GB10 | 21.430 | 0.2516 |
Correctness bit-identical (L2 0.251638 on both). 14.3× slowdown on GB10 vs B200 — larger than audikw_1's 5.2×, since the larger matrix stresses memory bandwidth more and GB10 has a smaller bandwidth budget.
Summary
All three machines validated via test_submit.sh with the stokes2.dat data staged at the per-system paths in run.sh. The f-pt queue was used for the Fugaku multi-node runs (wider node range than small); the committed list.csv/system.csv stay on small.
0c41518 to
1da485a
Compare
|
@william-dawson #134 has been merged into develop/main and addresses the common scheduler/CI side that came up while reviewing this PR. Could you please rebase #87 onto the latest develop and update it accordingly?
This should keep #87 focused on the |
1da485a to
2404574
Compare
|
@william-dawson Thanks for the update. I checked the latest head and the previous blocker around the DGX Spark One small cleanup before review/merge: If that is the only remaining item on your side, please also mark the PR ready for review / undraft after the cleanup. |
|
Updated the top-of-file comment and usage string in |
92aedbd to
4273bb8
Compare
A PETSc KSP (GMRES + GAMG) benchmark, verified on Rikyu, Fugaku, and R-CCS Cloud's DGX Spark. FOM measures the GMRES iteration only: KSPSetUp runs untimed before the timed KSPSolve, so GAMG setup is excluded. A per-routine breakdown -- MatMult, KSPSolve, SF pack/unpack, from PETSc's -log_view -- ships as both a results/fom_details.txt artifact and SECTION lines. BK_PETSC_GMRES_RESTART overrides the GMRES restart parameter; BK_PETSC_GMRES_MATRIX selects the benchmark matrix. The benchmark matrix is stokes2, a 4.26M-row / 256M-nnz Stokes-flow saddle-point system. On Rikyu, PETSc builds with CUDA; run.sh uses -mat_type aijcusparse and binds each MPI rank to a distinct GPU via CUDA_VISIBLE_DEVICES, with a CUDA context established before PetscInitialize calls MPI_Init so multi-node GPU runs work correctly. On Fugaku, the app stages its matrix data on group storage volume /vol0005 via the /vol0500 mount alias. build.sh anchors the vendored source to its own script location, so the build resolves regardless of the caller's working directory. Signed-off-by: William Dawson <william.dawson@riken.jp> Co-Authored-By: Claude <noreply@anthropic.com>
4273bb8 to
7c713cb
Compare
A PETSc KSP (GMRES + GAMG) benchmark, verified on Rikyu, Fugaku, and R-CCS Cloud's DGX Spark.
[code:petsc-gmres]