11 KiB
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。科研命令只运行一次,实际命令为:
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原失败结论不变。