11 KiB
J3 最小功能覆盖:运行前冻结
本轮唯一写入/执行者 root;仅新增独立验证脚本和本目录。257 个现有文件的 SHA256 已冻结于 baseline.json,含源码、旧测试、报告、日志、数据及真实 checkpoint;旧正例失败不改。固定已有 pycuda_3_10 解释器、当前仓库及进程 PYTHONPATH;每次科研命令核对 Python 包及 CUDA 源码来源。不安装依赖、不改生产公式、不提交推送、不访问其他项目、不联系外部评审。
GPU 只选空闲的 0。初查 GPU0 为 0%/9 MiB,无计算进程;GPU1 有 362 MiB Python 作业,本轮不使用。正式命令前再查。48×35×9×4×2=120960 字节双缓冲,加 flags 3360 字节、宏观缓存约 20 KiB/实例;顺序实例及小型审计模块,预算显存低于 1 GiB、CPU RSS 低于 512 MiB、输出低于 10 MiB。系统当前可用内存约 56 GiB,GPU0 总显存 16 GiB。临时编译目录使用现有编译器的独立构建和清理;不改 PyCUDA 环境。
固定顺序与判据
- 从既有 end-21280.h5 恢复,SHA256
19a94e9e8db6dd9ac981effe06032c351992250b58768d9c090409193893d588。校验配置、运行参数及 postcollision g(t) 分布阶段。A 在未推进时另存本轮 checkpoint,再推进 16 步到 21296;关闭 A 后新建 B,从本轮 checkpoint 独立恢复并推进 16 步。逐字节比 DDF/temp/flags,比较 step_count、config/runtime;不声称拥有历史不间断参照。失败或非有限即停,不继续零/负例。 - 同 48×35/W16、rho1、nu.1、U0、top reservoir,A=0,固定 64 步。每步检查有限性、rho/speed/质量界;记录初始化及 64 步的质量、速度、边界和密度。zero_speed≤2e-6;零参考相对通量为 N/A;不宣称完整稳态通过,不额外做预算推进。
- 唯一负例 A=−.002,同原参数,固定最多 40×519=20760 主轨迹步,不提前以某个短窗口改判。每步检查有限性、rho_error≤.005、speed≤.01、mass_offset≤1e-3;每 519 步检查 mass_change≤2e-6、最近最多五采样点质量跨度≤6e-6。任一硬界越界立即停止,保留失败统计及 checkpoint。每采样记录实际质量、u/v 带符号均值、完整场 RMS 差/.002、边界、通量、镜像和非均匀流向;速度稳态不通过可继续到固定上限一次。
原全部 GATES 保留:velocity_change 5e-5(至少8间隔、末4间隔 u/v 同时满足)、mass_change 2e-6、mass_window_span 6e-6、mass_offset 1e-3、rho_error .005、speed .01、zero_speed 2e-6、flux_error .005、flux_span .002、boundary_error 2e-6、top_density_error 5e-7、rho_symmetry 2e-5、velocity_symmetry .002、budget_residual 2e-7,非零内部中心 v 与 A 同号且 max|u|>1e-5。未测/null 不计为通过;不改 gate、不选择偶数 lag。
负例如能运行到上限,在20744保存实际checkpoint,普通路径推进最后16步到20760作参照;独立审计路径加载20744状态,仅推进同一窗口16步,不产生20760之后轨迹。复用已验证 AUDIT 记录真实 incoming/outgoing/collision,覆盖slot/flanks/top;保留临时源码 SHA、逐步真实账及与普通末态 DDF/temp/flags/config/runtime/count 逐值比较。主路径20760步、重叠审计16步分别计数。硬界失败则预算标未测,不继续。
有限幅波动仅报告新轨迹每个519步窗口的在线时间方差 RMS、最大节点峰峰差和场差;不保留逐步全场、不追成因。短恢复/零例也逐步做安全检查。只保留聚合统计、日志和必要小checkpoint。正例只引用既有 J3/lag/offline 结果并明确窗口不同。完成后补一页功能范围/限制/下一里程碑,立即停止。
完成摘要:恢复与零例通过,负例速度稳态失败
本轮命令只执行一次,退出码 1,来自负例原稳态门槛失败;没有异常、越界或重跑。真实状态短恢复通过;零幅值短例通过。负例达到固定上限,除速度稳态外其余原验收项通过,不能将整体改判通过。正例沿用旧失败。
| 项目 | 实际运行与结果 |
|---|---|
| 真实 checkpoint 续跑 | A 从旧 end-21280 恢复并另存,推进16步;关闭A后B从本轮另存文件恢复,推进16步;均到21296 |
| 恢复比较 | 起点及终点 DDF/temp/flags 逐字节一致,step_count/config/runtime 一致;恢复检查通过 |
| 零幅值 | 初始化+64步的65个状态,最大速度严格为0;质量相对跨度/最大偏移6.70552e-8;最大rho偏差7.45058e-8 |
| 负幅值 | 普通路径20760步;独立审计仅重叠20744→20760的16步,未产生20760以后的负例轨迹 |
| 资源/保留 | CPU峰值RSS 211.20 MiB;输出约0.7 MiB;257个旧文件哈希全部保持;未修改生产或旧测试 |
总新执行求解步数为 20872:正态恢复两条路径各16步、零例64步、负例普通20760步、独立重叠审计16步;其中正态仅从21280推进至21296,没有正例20760步重放。本次没有测量显存峰值,显存大小在启动前估算并确认有足够余量;不能将估算写成实测。
零例所有逐步数据在 results.json。边界指定速度误差0,顶密度最大误差7.45058e-8≤5e-7,质量跨度低于6e-6、偏移低于1e-3,每步质量变化低于2e-6,零速低于2e-6。相对流量误差/跨度为 null 并明确标 N/A(零参考);没有将其计作通过,也没有声称64步满足至少8间隔的完整稳态要求。零例没有单独的population预算或恢复测试。
正负实测与原门槛
正例数值直接引用 j3-reservoir-2026-10-12/results.json,不重新运行;下表为各自20760末态,质量跨度和速度收敛取各自原末四间隔。
| 量 | 原正例 +.002 | 本轮负例 −.002 | 原门槛 / 判定 |
|---|---|---|---|
| u场RMS变化/.002,末4 | 2.6381/2.6857/3.0247/2.9349 e-5 | 4.4394/4.3232/4.4663/4.4558 e-5 | ≤5e-5,均通过 |
| v场RMS变化/.002,末4 | 7.3296/6.9940/6.4742/6.0220 e-5 | 6.0193/6.1294/6.3192/6.4750 e-5 | ≤5e-5,均失败 |
| 初末质量相对偏移 | 1.93463e-7 | 3.08173e-7 | ≤1e-3,通过 |
| 末四间隔质量跨度 | 2.97376e-8 | 3.64015e-8 | ≤6e-6,通过 |
| 末间隔质量相对变化 | 2.17732e-8 | 6.19118e-9 | ≤2e-6,通过 |
| rho最大偏差 | 2.45519e-4 | 2.53472e-4 | ≤.005,通过 |
| 最大速度 | .00198440335 | .00198443044 | ≤.01,通过 |
| 指定边界速度最大误差 | 3.66935e-8 | 3.56677e-8 | ≤2e-6,通过 |
| 顶密度最大误差 | 2.06754e-7 | 1.97440e-7 | ≤5e-7,通过 |
| 截面质量流量相对误差 | .0010008493 | .0007190498 | ≤.005,通过 |
| 截面流量相对跨度 | .0005283367 | .0004005362 | ≤.002,通过 |
| rho镜像误差 | 4.95464e-7 | 6.22123e-7 | ≤2e-5,通过 |
| u/v镜像误差/.002 | .000202076/.000137884 | .000124795/.000216072 | 各≤.002,通过 |
| 内部非均匀流向 | 通过(旧记录) | 中心v=−.001084366,max|u|=.000432660 | 中心v与A同号且max|u|>1e-5,通过 |
| 初始化边界误差 | 通过(旧记录) | 1.78962e-8 | ≤2e-6,通过 |
| 实际population预算 | 通过(旧末态后16步) | 通过(20744→20760) | 残差/M≤2e-7且逐值一致 |
负例每步有限,逐步观测到的全程最大rho偏差 .000602724、最大速度 .001984436、最大质量偏移8.14183e-7;40个采样间隔的最大质量变化6.43070e-7、最大滚动跨度7.00168e-7,均低于对应硬界。各采样原始值保留,没有删掉早期瞬态。
负例底请求体积流量−.01706689453125;20760末态距底8/16/24处实际质量流量分别−.01706145331、−.01705793291、−.01705461740。顶v范围[−.00045778788,−.00025554935],没有强制等于初始均匀猜测。全域有符号速度均值u=1.29822e-9、v=−.000355422879;末519步有符号空间平均变化分别−1.11917e-10、−5.99107e-9。各y宏观质量/体积流量、顶底所有节点宏观量及每次采样的镜像/流向均保存。
有限幅波动:负例最后 20242–20760的519帧 在线时间方差RMS为u=5.06547e-8、v=6.80326e-8;最大节点峰峰差为4.35901e-7、8.38259e-7。旧正例离线窗口为 20760–21280的521帧,RMS为3.36455e-8、7.37527e-8(引用旧文件)。时间窗口不同,不能宣称正负同窗口等价;不继续分析成因。
重叠16步实际账
临时审计 one_step_double.cu SHA256:d6532c48ea0bf972bce6ec3809989e9f2ec52eb1440d58f8945eb59d67dcf1b5。审计与普通末态DDF/temp/flags逐字节相同,配置/运行参数/步数相同。每步 ΔM−实际边界净交换−实际碰撞舍入残差为0,最大相对残差0≤2e-7;未扣舍入的最大相对残差7.51761e-9。
| 16步平均实际量 | incoming | outgoing | 净进入 |
|---|---|---|---|
| 底slot | 2.65799031034 | 2.67504728318 | −.01705697284 |
| 底flanks | 5.33348024054 | 5.33348734328 | −7.10273e-6 |
| 全顶部 | 8.00853079371 | 7.99147556582 | +.01705522789 |
全边界平均净进入−8.84768e-6,碰撞舍入+8.26980e-6,实际ΔM=−5.77886e-7。预算闭合不代表速度稳态通过,也不等同于宏观截面流量。逐步原始账在results.json。
可复核清单与后续边界
唯一新增代码:tests/validation/run_j3_coverage.py;复用旧make_sim/observables/AUDIT及原GATES,未改旧脚本。新脚本SHA256 329869519b7078e854d96241a7aad8ef93f35ac9be83f0be502c3a93523c3b13。运行前同一解释器做语法、静止平衡分布宏观量/零参考N/A及状态步数比较的主机检查,均通过,没有初始化CUDA;没有跑无关矩阵。
实际GPU命令(工作目录为 /home/frank14f/CelerisLab):
env CUDA_VISIBLE_DEVICES=0 PYTHONPATH=/home/frank14f/CelerisLab/src PYTHONDONTWRITEBYTECODE=1 /home/frank14f/anaconda3/envs/pycuda_3_10/bin/python tests/validation/run_j3_coverage.py > research/j3-coverage-2026-10-12/gpu-validation.log 2>&1
脚本在创建CUDA上下文前复核GPU0无计算进程、显存小于100 MiB且利用率为0;记录包与kernel实际来源,并核对全部基线哈希。入口拒绝覆盖已有results.json,不能无意重跑。必要checkpoint四个均持久保存,本轮checkpoint路径、SHA及步数在results.json;原始日志、基线清单、独立新增脚本补丁保留,编译目录由现有编译器清理。
当前功能范围: 在D2Q9/SRT/FP32/unshifted/double-buffer、无物体/力/LES、固定小网格上,有限平壁slot与顶部reservoir支持正向喷入、负向抽吸和短时零驱动;真实保存/加载后的短续跑一致。正负质量、边界、宏观流量、镜像及population账在上述窗口内通过。
尚不能保证: 正负完整速度稳态均失败;未验证长期精度、网格收敛/精度阶、性能、多种碰撞/streaming组合、动态喷口、物体交互、曲面或AMR;零例仅64步,恢复一致只覆盖此次固定配置。量级小不构成精度保证。
下一真正功能里程碑建议: 整理一个精简、可外部调用的平壁Jet案例入口,复用现有Simulation及参数,提供正/零/负幅值、喷口宽度和持久恢复用法,明确边界含义并如实显示未收敛状态;不要为此新增求解器抽象或启动AMR重构。这只是建议,本轮不实施。
本轮完成并停止复审,不追加求解或波动诊断。