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

108 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 单轨迹 lag 诊断:运行前冻结计划
2026-10-12。重新核对当前工作树并记录baseline.json准确哈希。仅新增独立诊断脚本和本目录证据,root唯一写入/计算者;不改任何生产公式、旧脚本、旧结果或环境。J3原验收失败保持。本次不是新验收,不调整任何门槛。
## 固定状态与步数
同NX48/NY35/H32/W16、nu=.1、U=0、rho0=1、A=+.002、D2Q9/SRT/FP32/unshifted/double-buffer、top_wall_bc=reservoir,无物体/力/LES。同make_sim、初始化g(0)=局部feq、pull→arrival重建→collision→postcollision g(t)。仅此正例。
先40次各519步,到t0=20760;复用原完整场计算,保存重放40间隔历史并与原J3终态macros/history比较,不从macros重建DDF。不跑J1/J2/default回归。立即持久保存start-20760.h5,包含真实DDF、temp、flags/domain_flags、step_count、config、runtime_params及分布阶段说明。用新Simulation无时间推进load,按字节比较DDF/temp/flags,比较count、配置和运行参数;失败立即停止,不进入诊断。文件记录SHA256。
然后只沿一个轨迹推进520步,记录n=0..520共521帧(t=20760..21280)。结束保存end-21280.h5及SHA256,同样无时间推进核验恢复。不删除这些唯一状态。所有统计覆盖固定完整窗口,不事后挑选窗口。
## 场与统计定义
统计格点为所有流体平面节点x=0..47、y=1..33,共1584点,含底slot、零速flanks和top,不含ghost y=0/34。用实际FP32 postcollision DDF在CPU float64求rho/u/v,分析精度不等于新增FP64运行支持。速度归一固定.002,密度归一rho0=1。
- lag L=1/16/519:起点n=0..520−L,共520/505/**2**个合法起点;绝对起点t0+n。逐起点记录du=u[n+L]−u[n]、dv同理的空间RMS、max绝对值、空间有符号均值;向量记录sqrt(mean(du²+dv²))及max sqrt(du²+dv²),同时保留两个有符号分量。汇总每种lag的均值/最小/最大,并给/.002归一结果。样本相互重叠;尤其519只有两个起点,不能声称大量独立样本。
- 时间均值:521帧等权平均(含两端),保存完整平均rho/u/v场。记录每帧偏离时间均值的分量RMS/max、有符号空间均值、向量指标,以及全时间/空间汇总。
- 有符号漂移:保存完整首末差u[520]−u[0]、v同理;平均每步漂移场=首末差/520(等于逐步差的时间均值)。报告每个分量的空间有符号均值、最小/最大,以及双分量向量均值;不只报非负RMS或范数。各lag另报告有符号空间均值/L,不能用u的对称抵消掩盖局部变化。
- 每帧记录总质量M、全部y截面的实际宏观Σrho*v与Σv、顶rho/u/v和完整rho/u/v场。以单个压缩trajectory.h5保留原始完整场、逐步账和汇总数组,results.json保存可读摘要及文件哈希,不拆多份场文本。
## 同一520步的真实population账
不能调用原population_budget(会额外跑普通/审计轨迹)。只复用它已验证的AUDIT源码与临时构建注入方式,520步全部使用这一审计OneStep,不另跑普通轨迹。记录器仅用FP64累加已计算的FP32 populations,无生产公式改动。
逐步保存所有底/顶节点实际incoming、由前一g(t)计算的outgoing,以及每个节点真实collision前后质量差。分账覆盖slot、全部零目标flanks和整个top,核对ΔM=边界净交换+collision舍入。另列未扣舍入的物理残差。目标Q仅作为记录,不用于填补预算。
该临时源码SHA须匹配原J3已通过普通/审计逐值对照的源码SHA;同一诊断轨迹的前16步真实账与原J3既有16步记录比较,不增加步数。不会声称新做了520步普通/审计双轨迹对照。若源码或恢复状态不一致、发现明确阻塞,停止解释。
RMS对lag的形状只提供相关性/漂移线索,既不证明噪声,也不证明FP32平台;不以约1e−7量级改判J3。保留其原40间隔非单调变化及末段下降。压力库下仍独立记录collision舍入,不推论其消失。
固定cwd=/home/frank14f/CelerisLab、解释器/home/frank14f/anaconda3/envs/pycuda_3_10/bin/python、进程PYTHONPATH=/home/frank14f/CelerisLab/src;执行时核对解释器、Python/CUDA实际来源及所有起点源哈希。GPU先核对获准0/1空闲;不杀其他作业,不改网络/全局环境/依赖,不提交推送。完成后停止。当前尚未执行重放或诊断。
## 完成结果
以上为运行前冻结计划。实际仅重放20760步一次,然后沿同一轨迹推进**520步**,末步21280,程序退出0。没有第二条520步轨迹或其他案例。重放40间隔历史及20760末态完整rho/u/v与原J3逐值一致;原非单调历史、末段下降及失败结论均保留,没有改判。
两个真实checkpoint均通过无推进恢复:分别从GPU直接下载DDF/temp/flags,与HDF5数据按字节核对,再加载到新Simulation核对三块缓冲、步数、配置和运行参数。未由macros重建平衡分布。临时审计源码SHA与原J3一致,同一轨迹前16步的质量/边界/舍入账与原J3记录完全匹配;未另跑普通轨迹。
### 多lag变化与有符号漂移
下表RMS为各合法起点的空间RMS再作算术平均;max为所有起点/格点中的最大绝对分量差。数值均为未归一绝对速度;归一结果除以.002,逐起点数据与全部mean/min/max见trajectory.h5及results.json。
| lag | 合法起点数 | u平均RMS | v平均RMS | u最大绝对差 | v最大绝对差 |
| ---: | ---: | ---: | ---: | ---: | ---: |
| 1 | 520 | 4.02775e−8 | 1.34694e−7 | 2.19793e−7 | 8.40133e−7 |
| 16 | 505 | 4.25738e−8 | 4.92469e−8 | 2.10493e−7 | 5.14083e−7 |
| 519 | **2** | 5.32746e−8 | 1.32336e−7 | 2.23534e−7 | 5.84936e−7 |
lag519两个实际起点为20760、20761,对应v RMS为1.32748121e−7与1.31923248e−7;不能当作大量独立样本。u/v平均RMS除以.002分别为:lag1 (2.01388e−5,6.73470e−5),lag16 (2.12869e−5,2.46235e−5),lag519 (2.66373e−5,6.61678e−5)。向量RMS均值分别1.40599e−7、6.51399e−8、1.42657e−7;其双分量有符号均值在下表。
| 量 | u分量 | v分量 |
| --- | ---: | ---: |
| lag1平均有符号空间变化 | +1.56269e−12 | −7.51472e−12 |
| lag16平均有符号空间变化 | −1.43409e−11 | −2.77115e−10 |
| lag519平均有符号空间变化 | +8.47311e−10 | −5.50534e−9 |
| 首末变化的空间有符号均值 | +8.12599e−10 | −3.90766e−9 |
| 平均每步有符号漂移 | +1.56269e−12 | −7.51472e−12 |
| 首末局部变化最小值 | −1.62008e−7 | −2.55195e−7 |
| 首末局部变化最大值 | +1.34117e−7 | +2.57095e−7 |
完整首末变化与每步平均漂移向量场分别保存在end_minus_start_uv、mean_drift_per_step_uv,分量顺序u/v。不能因全域平均很小而忽略局部变化。相对521帧等权时间均值的全时空RMS为u=3.36455e−8、v=7.37527e−8,最大绝对偏差为u=1.79551e−7、v=4.99302e−7;完整均值场和逐帧偏差统计均保留。
解释限度:v在lag16下的差异小于lag1与lag519,提示时间相关/相位结构的线索,不支持仅凭量级宣布独立噪声或FP32平台。不能排除更慢漂移或离散波动。lag519的新两个样本没有延续原J3末段单调下降的简单外推;原40间隔的非单调变化仍须一起看。本包既不修改原519间隔收敛判据,也不把选择较小的lag16当成通过依据。
### 质量、宏观流量与真实账
M从1583.999700639397变为1583.9996760860085,净变化−2.45534e−5,相对净变化−1.55009e−8;521帧相对质量跨度6.43318e−8。逐帧M及每步有符号ΔM完整保留,没有只报非负变化。
| 实际520步平均账 | 每步数值 |
| --- | ---: |
| 底slot incoming / outgoing | 2.67535507278 / 2.65829271536 |
| 底flanks incoming / outgoing | 5.33318304943 / 5.33317602280 |
| 顶全平面 incoming / outgoing | 7.99146266776 / 8.00854370598 |
| 全边界净交换 | −1.16541802597e−5 |
| collision舍入 | +1.16069622051e−5 |
| 全域ΔM | −4.72180545330e−8 |
逐步预算残差最大值为0;未扣collision时最大相对物理预算残差1.15957e−8。压力库净排出与正collision舍入在这段轨迹中大部分抵消,舍入没有消失。slot/flanks/top的incoming/outgoing全节点数组及每节点collision差均保留,未遗漏零目标flanks;分段population账不直接等于该段宏观穿壁通量。
底请求Q仍为.01706689453125。521帧平均宏观底/顶质量流量为.01706952701/.01708118459,平均宏观体积流量为.01706692824/.01708118487。顶rho全窗口范围[.9999996405094862,1.0000003930181265],顶Cartesian v范围[.0002521053106847591,.0004627742200818292]。请求量、宏观面流量和分布交换分别记录,不互相自证。
## 持久可恢复状态与数据
所有文件均位于本目录,不在TemporaryDirectory中:
- start-20760.h5,SHA256 `6c4cba5928c77566c2afc32231311a3986831c18fea766faadebb101243399e2`。
- end-21280.h5,SHA256 `19a94e9e8db6dd9ac981effe06032c351992250b58768d9c090409193893d588`。
- trajectory.h5(约17MiB),SHA256 `2b51f8ec5e0cc8ca72c73ac1b51dd611158368e6d6de791d85150fa111ea1986`。
checkpoint版本仍为3,额外diagnostic属性只记录分布阶段和诊断脚本SHA。两块分布缓冲均为真实FP32状态;当前ddf是postcollision g(t),不是到达态f,也不是由均值场生成的feq。配置与运行参数保存在原checkpoint属性中。未来使用同一make_sim参数后load_checkpoint即可恢复;继续推进需要另行明确下一工作包,不能以本次诊断授权追加计算。
trajectory.h5存储521×33×48的rho/u/v、逐帧全y截面宏观流量、520×2×48边界incoming/outgoing、520×35×48实际collision差、完整逐步预算和lag/均值/漂移汇总。step数组给出绝对步数,recorded_samples=521;字段first_16_match_j3为true。results.json记录可读统计、重放历史、源/数据哈希和两个checkpoint核验结果。
## 执行、检查与文件保留
GPU启动前`nvidia-smi -i 0,1`显示两卡无计算任务(各5MiB,只有Xorg);原始输出在gpu-availability.log。仅使用GPU0。科研命令只运行一次,实际命令为:
```bash
env CUDA_VISIBLE_DEVICES=0 PYTHONPATH=/home/frank14f/CelerisLab/src PYTHONDONTWRITEBYTECODE=1 /home/frank14f/anaconda3/envs/pycuda_3_10/bin/python tests/validation/diagnose_j3_lags.py --output-dir research/j3-lag-2026-10-12 > research/j3-lag-2026-10-12/gpu-diagnostic.log 2>&1
```
cwd为/home/frank14f/CelerisLab。脚本启动核对sys.executable、CelerisLab.__file__、kernel_v2.cu路径以及全部224个起点文件SHA。正式运行前用同一解释器和PYTHONPATH做了两次无CUDA初始化的主机解析fixture检查:u(n)=n×1e−8、v(n)=−2n×1e−8、n=0..520,独立核对lag起点数、RMS、带符号漂移、521帧时间均值偏差和归一化汇总;日志保存在host-check.log。fixture临时文件已自动清理。
只读复核指出的两项主机侧完善均在GPU前完成:三块缓冲直接GPU下载;各lag全部指标的mean/min/max及/.002汇总完整保存。没有生产更改、额外GPU验收矩阵或重复轨迹。
所有224个原有文件哈希保持不变,包括J1/J2/J3原结果、旧脚本、四个配置头及notebook。仅新增diagnose_j3_lags.py和本目录资料;incremental.diff为该独立脚本补丁。git diff --check及新增脚本补丁反向校验通过,唯一checkpoint和原始数据全部保留;无提交、推送或依赖/环境修改。任务到此停止,J3原失败结论不变。