背景:SU2-Quantum = SU2 8.3.0 "Harrier" 分支,研究量子门噪声 / 有限比特精度对 CFD 的影响(每步隐式线性解后对守恒量增量做 3-D 实数 FFT、谱空间截断/扰动再变回)。参考算例 = 3-D Taylor–Green Vortex (TGV)。术语见 docs/glossary.md,总览 docs/index.md,工作流 docs/tgv-workflows.md,HPC docs/hpc-sweeps.md。 约定(接手必读):① 正式/出结果的 Job 必须从 develop 跑,manifest 的 git sha ∈ develop;feature 分支仅临时测试。② 下游机(BSCC-M9 HPC、1810 WSL)ff-only 拉取、不本地提交;若 dirty/未推送先无损 push 到 origin。③ 原始数据/派生图不入 git;每个 Job 一个 run_dir+manifest.json(权威),登记进 private/lab/jobs.md(数据单元)与 private/lab/experiments/<slug>.md(研究单元,uses-jobs:[...],Job⇄Experiment 多对多)。
背景:SU2-Quantum = SU2 8.3.0 "Harrier" 分支,研究量子门噪声 / 有限比特精度对 CFD 的影响(每步隐式线性解后对守恒量增量做 3-D 实数 FFT、谱空间截断/扰动再变回)。参考算例 = 3-D Taylor–Green Vortex (TGV)。术语见 docs/glossary.md,总览 docs/index.md,工作流 docs/tgv-workflows.md,HPC docs/hpc-sweeps.md。
docs/glossary.md
docs/index.md
docs/tgv-workflows.md
docs/hpc-sweeps.md
约定(接手必读):① 正式/出结果的 Job 必须从 develop 跑,manifest 的 git sha ∈ develop;feature 分支仅临时测试。② 下游机(BSCC-M9 HPC、1810 WSL)ff-only 拉取、不本地提交;若 dirty/未推送先无损 push 到 origin。③ 原始数据/派生图不入 git;每个 Job 一个 run_dir+manifest.json(权威),登记进 private/lab/jobs.md(数据单元)与 private/lab/experiments/<slug>.md(研究单元,uses-jobs:[...],Job⇄Experiment 多对多)。
develop
run_dir
manifest.json
private/lab/jobs.md
private/lab/experiments/<slug>.md
uses-jobs:[...]
先做一个 mpi×omp 加速比基准,据此(throughput/efficiency)选定 canonical 拓扑,再用它重跑、消除 size=8 的 L2「误差底」(plateau)。
size=8 列在大 sfreq 处 L2 锁定在 ~1.4%、不降到 0。已确认根因是 config 漂移——baseline (HQ job 26, 8 MPI×4 OMP, 56 cases) 与 correction (HQ job 29, 2 MPI×2 OMP, 672 cases) MPI 拓扑不同 → 浮点累加顺序不同 → 初值差 ~5e-5 → 演化放大到 ~1.4%。不是 FT filter bug(单 rank 受控实验里 FT_SFREQ=1024 与 FT_MODE=NONE 每 iter KE 字节级一致)。L2 在精确算术下与拓扑无关,所以要消除就得让两个 sweep 拓扑一致。详见 docs/experiments/mpi-reproducibility.md。 (注:headline 拟合已排除 N=8,所以 plateau 不影响主结论,只影响 published 热图 size=8 那列的观感。)
docs/experiments/mpi-reproducibility.md
tgv/config.cfg
Re=400
TIME_ITER=30
N=48
N=96
mpi∈{1,2,4,8} × omp∈{1,2,4}
amd_m9_768
s/iter
speedup S(p)=t(1)/t(p)
efficiency E=S/p
analysis/scaling/
analysis/
private/lab/
experiments/mpixomp-scaling.md
tgv/submit.py --compare-with <manifest_or_run_dir>
docs/hpc-sweeps.md §6.8
private/machines.md
docs/walltime-scaling.md
tgv/submit.py
--compare-with
--ntasks
--omp
tgv/run.py
tgv/runner.py
docs/experiments/cfl-time-step.md §2.7
未设置到期时间。
未设置依赖项。
删除分支是永久的。虽然已删除的分支在实际被删除前有可能会短时间存在,但这在大多数情况下无法撤销。是否继续?
目标
先做一个 mpi×omp 加速比基准,据此(throughput/efficiency)选定 canonical 拓扑,再用它重跑、消除 size=8 的 L2「误差底」(plateau)。
为什么
size=8 列在大 sfreq 处 L2 锁定在 ~1.4%、不降到 0。已确认根因是 config 漂移——baseline (HQ job 26, 8 MPI×4 OMP, 56 cases) 与 correction (HQ job 29, 2 MPI×2 OMP, 672 cases) MPI 拓扑不同 → 浮点累加顺序不同 → 初值差 ~5e-5 → 演化放大到 ~1.4%。不是 FT filter bug(单 rank 受控实验里 FT_SFREQ=1024 与 FT_MODE=NONE 每 iter KE 字节级一致)。L2 在精确算术下与拓扑无关,所以要消除就得让两个 sweep 拓扑一致。详见
docs/experiments/mpi-reproducibility.md。(注:headline 拟合已排除 N=8,所以 plateau 不影响主结论,只影响 published 热图 size=8 那列的观感。)
任务 A — 加速比基准
tgv/config.cfg,只改 mpi×omp + 短运行;Re=400固定。TIME_ITER=30,丢前 ~5 iter warmup,取后 25 的 median s/iter(比设 MAX_TIME 更可控、跨 N/机可比)。N=48(中、compute-bound)+N=96(大)。mpi∈{1,2,4,8} × omp∈{1,2,4}= 1×1,1×2,1×4, 2×1,2×2,2×4, 4×1,4×2,4×4, 8×1,8×2,8×4。amd_m9_768)+ 1810(60 物理核 / 120 逻辑,Xeon 8369B)。两机都 ≥32 核 ⇒ combos 对称、可直接对比。s/iter、speedup S(p)=t(1)/t(p)、efficiency E=S/p。写成 CSV + 图(新增analysis/scaling/,PEP-723 自包含脚本,风格同analysis/其它子目录)。登记进private/lab/(jobs.md 每个基准 run 一行 +experiments/mpixomp-scaling.md,uses-jobs:[...])。任务 B — 据此决定 canonical 拓扑 + 重跑消 plateau
tgv/submit.py --compare-with <manifest_or_run_dir>强制拓扑一致(已实现,见docs/hpc-sweeps.md §6.8)。验收
private/lab/。docs/hpc-sweeps.md+private/machines.md的逐机推荐)。参考
docs/experiments/mpi-reproducibility.md(plateau 根因、复现配方)docs/walltime-scaling.md(s/iter ∝ N^~2.8 的 32 核 scaling)tgv/submit.py(--compare-with、--ntasks/--omp)、tgv/run.py、tgv/runner.pydocs/experiments/cfl-time-step.md §2.7(mock N+1、per-N dt)