Files
SystemSimulationApp/docs/other/assets/2026-09-16/solver-profile-summary.json
ljz 1aac220084 优化 Jacobian 确定性复用并补充性能剖析与平台依赖文档
在单次 Jacobian 构建内按完整输入精确复用储气物性、PH 反算、密度和管路求根结果,保持原有求值副作用、差分政策与失败回退。八路模型求解 CPU 中位数减少 19.27%,循环和不循环的完整原始采样均与恢复基线一致。

增加独立的跨平台时间剖析工具,记录互斥阶段耗时、Newton/LU 统计、矩阵复用与内核复用,保存 UD00 两种工况的调查报告和机器可读汇总。

补充 Windows/Linux 运行、测试、原生编译和剖析所需依赖文档及索引,不修改依赖清单、版本锁或安装环境。

验证:8 项新增专项回归通过;2270 次完整 Jacobian 核对零差异;16 次剖析配对及预热运行保持完整数值一致。既有固定样本哈希失败和 Linux 实机验收限制见报告。
2026-09-16 13:39:53 +08:00

465 lines
15 KiB
JSON

{
"scope": "Native worker: model initialization through result encoding and cleanup. Excludes build, process launch, API and browser. Error estimation remains inside CVODE controller. Dense LU has no symbolic factorization. Explicit Newton uses the same library implementation.",
"cases": [
{
"name": "noncyclic",
"meanTotalSeconds": 7.6562506666667405,
"phases": {
"residual_evaluation": {
"seconds": 2.0878067666756883,
"percent": 27.269310496395295
},
"jacobian_assembly": {
"seconds": 2.739998700024747,
"percent": 35.78773500656092
},
"numerical_factorization": {
"seconds": 0.23652539999102373,
"percent": 3.089311077820268
},
"linear_solve": {
"seconds": 0.17955199999232718,
"percent": 2.3451687752864254
},
"linear_system_setup_other": {
"seconds": 0.10677826666005785,
"percent": 1.3946547900389645
},
"newton_overhead": {
"seconds": 0.012538333336427362,
"percent": 0.16376597217507388
},
"cvode_controller_including_error_estimation": {
"seconds": 0.021977399989888607,
"percent": 0.28705172997499034
},
"event_detection": {
"seconds": 0.001956633334733245,
"percent": 0.025556025003882137
},
"accepted_property_checks": {
"seconds": 1.1713370666645158,
"percent": 15.29909504875804
},
"sampling_and_storage": {
"seconds": 0.0096981666655059,
"percent": 0.12666992092786503
},
"output_replay": {
"seconds": 0.2987757666667979,
"percent": 3.9023770207470787
},
"result_encoding": {
"seconds": 0.777298566666559,
"percent": 10.152470190803813
},
"poll_and_progress": {
"seconds": 0.006268433334904937,
"percent": 0.0818734078573996
},
"framework_other": {
"seconds": 0.005739166663564295,
"percent": 0.0749605376499895
}
},
"meanScopes": {
"total": {
"inclusiveSeconds": 7.6562506666667405,
"exclusiveSeconds": 0.00013766666703910838
},
"integration": {
"inclusiveSeconds": 6.578948899999887,
"exclusiveSeconds": 0.005601499996525187
},
"cvode_controller": {
"inclusiveSeconds": 5.389218199991167,
"exclusiveSeconds": 0.021977399989888607
},
"rhs": {
"inclusiveSeconds": 2.0841626000111924,
"exclusiveSeconds": 2.082771766674341
},
"nonlinear_residual": {
"inclusiveSeconds": 2.0881416333457614,
"exclusiveSeconds": 0.005035000001347119
},
"jacobian": {
"inclusiveSeconds": 2.7426492000089033,
"exclusiveSeconds": 0.02242556667806639
},
"jacobian_probe": {
"inclusiveSeconds": 2.720223633330837,
"exclusiveSeconds": 2.7175731333466806
},
"linear_setup": {
"inclusiveSeconds": 3.085952866659985,
"exclusiveSeconds": 0.10677826666005785
},
"numerical_factorization": {
"inclusiveSeconds": 0.23652539999102373,
"exclusiveSeconds": 0.23652539999102373
},
"linear_solve": {
"inclusiveSeconds": 0.17955199999232718,
"exclusiveSeconds": 0.17955199999232718
},
"newton": {
"inclusiveSeconds": 5.366184833334501,
"exclusiveSeconds": 0.012538333336427362
},
"event_detection": {
"inclusiveSeconds": 1.181901733331415,
"exclusiveSeconds": 0.001956633334733245
},
"accepted_property_checks": {
"inclusiveSeconds": 1.1713370666645158,
"exclusiveSeconds": 1.1713370666645158
},
"sampling": {
"inclusiveSeconds": 0.00887103333207051,
"exclusiveSeconds": 0.0008239000012508768
},
"append": {
"inclusiveSeconds": 0.008658133330906518,
"exclusiveSeconds": 0.000971733330970892
},
"flush": {
"inclusiveSeconds": 0.007902533333284131,
"exclusiveSeconds": 0.007902533333284131
},
"output_replay": {
"inclusiveSeconds": 0.2987757666667979,
"exclusiveSeconds": 0.2987757666667979
},
"result_encoding": {
"inclusiveSeconds": 1.076074333333357,
"exclusiveSeconds": 0.777298566666559
},
"poll": {
"inclusiveSeconds": 0.006268433334904937,
"exclusiveSeconds": 0.006268433334904937
}
},
"symbolic_factorization": {
"seconds": 0,
"status": "not applicable: dense LU"
},
"error_estimation": {
"seconds": null,
"status": "included in cvode_controller_including_error_estimation"
},
"counters": {
"accepted_steps": 11006,
"residual_evaluations": 20048,
"linear_rhs_evaluations": 0,
"jacobian_evaluations": 1073,
"linear_setups": 3287,
"error_test_failures": 884,
"newton_iterations": 20037,
"newton_failures": 978,
"nonlinear_step_failures": 179,
"counter_segments": 5,
"jacobian_reuses": 2214,
"jacobian_refresh_setups": 1073,
"linear_setup_failures": 0,
"LU_factorization_failures": 0,
"LU_solve_failures": 0,
"event_model_evaluations": 0,
"scheduled_boundary_count": 3,
"rejected_steps": 1063,
"application_accepted_steps": 11006,
"same_time_returns": 0,
"max_same_time_streak": 0,
"nonlinear_residual_calls": 20037,
"jacobian_probe_evaluations": 30044,
"LU_factorizations": 3287,
"LU_solves": 20037,
"newton_solve_calls": 12069,
"event_count": 1,
"event_detection_calls": 11006,
"solver_starts": 5,
"all_counted_model_evaluations": 50092,
"accepted_property_checks": 11007,
"sample_count": 2172,
"jacobian_kernel_reuse": {
"gasEvaluations": 180304,
"gasReuses": 1502160,
"phEvaluations": 105403,
"phReuses": 732566,
"densityEvaluations": 531697,
"densityReuses": 2979837,
"pipeEvaluations": 235272,
"pipeReuses": 1063254
}
},
"medians": {
"control": {
"solveSeconds": 6.583620599999904,
"solveCpuSeconds": 6.59375,
"processWallSeconds": 7.7777962999998635
},
"profiled": {
"solveSeconds": 6.638836199999787,
"solveCpuSeconds": 6.6875,
"processWallSeconds": 7.830034699999942
}
},
"observedOverheadPercent": {
"solveSeconds": 0.8386813784482694,
"solveCpuSeconds": 1.4218009478673022,
"processWallSeconds": 0.671634971978885
},
"allRunsFullParity": true,
"samples": 3
},
{
"name": "cyclic",
"meanTotalSeconds": 9.711948900000152,
"phases": {
"residual_evaluation": {
"seconds": 2.8323357333368526,
"percent": 29.163412642511005
},
"jacobian_assembly": {
"seconds": 3.431086966648157,
"percent": 35.32851132122517
},
"numerical_factorization": {
"seconds": 0.3293585666582051,
"percent": 3.391271618595521
},
"linear_solve": {
"seconds": 0.24083636668046893,
"percent": 2.479794417786374
},
"linear_system_setup_other": {
"seconds": 0.14310710000260465,
"percent": 1.4735157842789146
},
"newton_overhead": {
"seconds": 0.01622606665841886,
"percent": 0.1670732293331836
},
"cvode_controller_including_error_estimation": {
"seconds": 0.028731599965188554,
"percent": 0.2958376352782097
},
"event_detection": {
"seconds": 0.002641499996722511,
"percent": 0.02719845443917512
},
"accepted_property_checks": {
"seconds": 1.6209957666577186,
"percent": 16.69073615757691
},
"sampling_and_storage": {
"seconds": 0.009674700005386208,
"percent": 0.09961646323516032
},
"output_replay": {
"seconds": 0.29708673333334445,
"percent": 3.058981635841801
},
"result_encoding": {
"seconds": 0.7434664000000643,
"percent": 7.655172073650971
},
"poll_and_progress": {
"seconds": 0.008574800045759426,
"percent": 0.0882912393181897
},
"framework_other": {
"seconds": 0.007826600011261084,
"percent": 0.08058732692941743
}
},
"meanScopes": {
"total": {
"inclusiveSeconds": 9.711948900000152,
"exclusiveSeconds": 0.00014803333336506816
},
"integration": {
"inclusiveSeconds": 8.670142566666678,
"exclusiveSeconds": 0.007678566677896015
},
"cvode_controller": {
"inclusiveSeconds": 7.026683966654825,
"exclusiveSeconds": 0.028731599965188554
},
"rhs": {
"inclusiveSeconds": 2.8279145666924705,
"exclusiveSeconds": 2.825953500006411
},
"nonlinear_residual": {
"inclusiveSeconds": 2.832391033356089,
"exclusiveSeconds": 0.006382233330441522
},
"jacobian": {
"inclusiveSeconds": 3.4341274666670265,
"exclusiveSeconds": 0.027501033304664208
},
"jacobian_probe": {
"inclusiveSeconds": 3.406626433362362,
"exclusiveSeconds": 3.403585933343493
},
"linear_setup": {
"inclusiveSeconds": 3.9065931333278363,
"exclusiveSeconds": 0.14310710000260465
},
"numerical_factorization": {
"inclusiveSeconds": 0.3293585666582051,
"exclusiveSeconds": 0.3293585666582051
},
"linear_solve": {
"inclusiveSeconds": 0.24083636668046893,
"exclusiveSeconds": 0.24083636668046893
},
"newton": {
"inclusiveSeconds": 6.9960466000228125,
"exclusiveSeconds": 0.01622606665841886
},
"event_detection": {
"inclusiveSeconds": 1.632206199992955,
"exclusiveSeconds": 0.002641499996722511
},
"accepted_property_checks": {
"inclusiveSeconds": 1.6209957666577186,
"exclusiveSeconds": 1.6209957666577186
},
"sampling": {
"inclusiveSeconds": 0.008811533338606145,
"exclusiveSeconds": 0.0008969333368137692
},
"append": {
"inclusiveSeconds": 0.008516533335447699,
"exclusiveSeconds": 0.0009090666676456749
},
"flush": {
"inclusiveSeconds": 0.007868700000926765,
"exclusiveSeconds": 0.007868700000926765
},
"output_replay": {
"inclusiveSeconds": 0.29708673333334445,
"exclusiveSeconds": 0.29708673333334445
},
"result_encoding": {
"inclusiveSeconds": 1.0405531333334086,
"exclusiveSeconds": 0.7434664000000643
},
"poll": {
"inclusiveSeconds": 0.008574800045759426,
"exclusiveSeconds": 0.008574800045759426
}
},
"symbolic_factorization": {
"seconds": 0,
"status": "not applicable: dense LU"
},
"error_estimation": {
"seconds": null,
"status": "included in cvode_controller_including_error_estimation"
},
"counters": {
"accepted_steps": 15733,
"residual_evaluations": 28023,
"linear_rhs_evaluations": 0,
"jacobian_evaluations": 1374,
"linear_setups": 4700,
"error_test_failures": 1334,
"newton_iterations": 28003,
"newton_failures": 1218,
"nonlinear_step_failures": 229,
"counter_segments": 10,
"jacobian_reuses": 3326,
"jacobian_refresh_setups": 1374,
"linear_setup_failures": 0,
"LU_factorization_failures": 0,
"LU_solve_failures": 0,
"event_model_evaluations": 0,
"scheduled_boundary_count": 5,
"rejected_steps": 1563,
"application_accepted_steps": 15731,
"same_time_returns": 2,
"max_same_time_streak": 1,
"nonlinear_residual_calls": 28003,
"jacobian_probe_evaluations": 38472,
"LU_factorizations": 4700,
"LU_solves": 28003,
"newton_solve_calls": 17296,
"event_count": 4,
"event_detection_calls": 15731,
"solver_starts": 10,
"all_counted_model_evaluations": 66495,
"accepted_property_checks": 15732,
"sample_count": 2175,
"jacobian_kernel_reuse": {
"gasEvaluations": 230872,
"gasReuses": 1923560,
"phEvaluations": 136587,
"phReuses": 940359,
"densityEvaluations": 685389,
"densityReuses": 3819723,
"pipeEvaluations": 301626,
"pipeReuses": 1368464
}
},
"medians": {
"control": {
"solveSeconds": 8.631554299999607,
"solveCpuSeconds": 8.65625,
"processWallSeconds": 9.813595800000257
},
"profiled": {
"solveSeconds": 8.620837400000255,
"solveCpuSeconds": 8.640625,
"processWallSeconds": 9.760674299999664
}
},
"observedOverheadPercent": {
"solveSeconds": -0.12415956184568255,
"solveCpuSeconds": -0.18050541516245744,
"processWallSeconds": -0.5392671664813387
},
"allRunsFullParity": true,
"samples": 3
}
],
"evidence": {
"revision": "2b07d996cff295d9f401dd32edd10472238bdf2d",
"compiler": "gcc.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0",
"platform": "win32",
"stop": 21.7,
"settings": {
"method": "BDF",
"start": 0,
"sample_step": 0.01,
"rtol": 1e-08,
"max_step": 1e+30
},
"directionOneStash": "06b161c309644bb01aa402ff79f34749ff8e889a",
"normalSourcesUnchanged": true,
"generatedModelIdentical": true,
"runsWithFullParity": 16,
"repeats": 3,
"warmups": 1,
"builds": [
{
"name": "noncyclic",
"ud00Count": 2,
"buildKey": "7fe268c97557c3e1c5a511ea5e28cf0f0479a087031abe1a38d7007dde3c4ca0",
"inputSha256": "f16fc251c10073a4155b56060625e622d81cbc141779dc52fa44746ae8654b5b",
"controlSha256": "ee51ac31f625391ede4457d909968dae856471e66f19f1ae6d614a0735dc20d6",
"profiledSha256": "06c56f6963e7e3ea6930b1fc1f832231b97eb9feb231d60a3b0bed5b8d28fd01"
},
{
"name": "cyclic",
"ud00Count": 2,
"buildKey": "a50f302b77a49d1aa28a4ee305239a36e8c9281ecdc93756b729183b8f1e0a0a",
"inputSha256": "38189b2d3608ca8dfc2691dd8e60b634de499b8d7c35f94ea1a3e72e9b58eae3",
"controlSha256": "02041b6b16a2aca2d26f3ef727d995e67595ff094387615f66e8b7f759626f3d",
"profiledSha256": "705948a62df23999084223e8e96269b65741de3f913c731041f42eecaaa8de27"
}
]
}
}