Files
CelerisLab/research/j3-coverage-2026-10-12/REVIEW.md
T

95 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 环境。
## 固定顺序与判据
1. 从既有 end-21280.h5 恢复,SHA256 `19a94e9e8db6dd9ac981effe06032c351992250b58768d9c090409193893d588`。校验配置、运行参数及 postcollision g(t) 分布阶段。A 在未推进时另存本轮 checkpoint,再推进 16 步到 21296;关闭 A 后新建 B,从本轮 checkpoint 独立恢复并推进 16 步。逐字节比 DDF/temp/flags,比较 step_count、config/runtime;不声称拥有历史不间断参照。失败或非有限即停,不继续零/负例。
2. 同 48×35/W16、rho1、nu.1、U0、top reservoir,A=0,固定 64 步。每步检查有限性、rho/speed/质量界;记录初始化及 64 步的质量、速度、边界和密度。zero_speed≤2e-6;零参考相对通量为 N/A;不宣称完整稳态通过,不额外做预算推进。
3. 唯一负例 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):
```bash
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重构。这只是建议,本轮不实施。
本轮完成并停止复审,不追加求解或波动诊断。