Record independent campaign clocks and matched Newton follow-up cases
This commit is contained in:
62
experiments/damped_coupled_newton_2026-09-18.json
Normal file
62
experiments/damped_coupled_newton_2026-09-18.json
Normal file
@@ -0,0 +1,62 @@
|
||||
[
|
||||
{
|
||||
"id": "n1p5_J0_control",
|
||||
"arguments": [
|
||||
"--index",
|
||||
"1.5",
|
||||
"--angular-momentum",
|
||||
"0",
|
||||
"--strategy",
|
||||
"curvature",
|
||||
"--no-central",
|
||||
"--max-newton",
|
||||
"6",
|
||||
"--restart",
|
||||
"160",
|
||||
"--max-linear",
|
||||
"200",
|
||||
"--linear-tol",
|
||||
"0.03",
|
||||
"--rtol",
|
||||
"1e-8",
|
||||
"--atol",
|
||||
"0",
|
||||
"--preconditioner-variant",
|
||||
"gravity-schur",
|
||||
"--schur-sweeps",
|
||||
"1",
|
||||
"--schur-relaxation",
|
||||
"0.5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "n1p5_J0_near",
|
||||
"arguments": [
|
||||
"--index",
|
||||
"1.5",
|
||||
"--angular-momentum",
|
||||
"0",
|
||||
"--strategy",
|
||||
"curvature-backtracked-coupled",
|
||||
"--no-central",
|
||||
"--max-newton",
|
||||
"6",
|
||||
"--restart",
|
||||
"160",
|
||||
"--max-linear",
|
||||
"200",
|
||||
"--linear-tol",
|
||||
"0.03",
|
||||
"--rtol",
|
||||
"1e-8",
|
||||
"--atol",
|
||||
"0",
|
||||
"--preconditioner-variant",
|
||||
"gravity-schur",
|
||||
"--schur-sweeps",
|
||||
"1",
|
||||
"--schur-relaxation",
|
||||
"0.5"
|
||||
]
|
||||
}
|
||||
]
|
||||
143
experiments/damped_coupled_repeat_2026-09-18.json
Normal file
143
experiments/damped_coupled_repeat_2026-09-18.json
Normal file
@@ -0,0 +1,143 @@
|
||||
[
|
||||
{
|
||||
"id": "late_curvature_full",
|
||||
"arguments": [
|
||||
"--index",
|
||||
"1.5",
|
||||
"--angular-momentum",
|
||||
"0",
|
||||
"--no-central",
|
||||
"--max-newton",
|
||||
"0",
|
||||
"--damped-coupled-probe",
|
||||
"--strategy",
|
||||
"curvature-coupled",
|
||||
"--probe-state",
|
||||
"/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/nonlinear_step_2026-09-18/late_v1/n1p5_late_eta003/nonlinear_step_physical_base.txt",
|
||||
"--probe-direction",
|
||||
"/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/nonlinear_step_2026-09-18/late_v1/n1p5_late_eta003/nonlinear_step_direction_full.txt",
|
||||
"--linear-tol",
|
||||
"0.03",
|
||||
"--restart",
|
||||
"160",
|
||||
"--preconditioner-variant",
|
||||
"gravity-schur",
|
||||
"--schur-sweeps",
|
||||
"1",
|
||||
"--schur-relaxation",
|
||||
"0.5",
|
||||
"--gravity-tol",
|
||||
"1e-10",
|
||||
"--gravity-iterations",
|
||||
"300",
|
||||
"--gravity-restart",
|
||||
"80",
|
||||
"--coupled-tol",
|
||||
"0.03",
|
||||
"--coupled-iterations",
|
||||
"160",
|
||||
"--coupled-restart",
|
||||
"160",
|
||||
"--coupled-max-ratio",
|
||||
"1",
|
||||
"--coupled-attempts",
|
||||
"1",
|
||||
"--coupled-search",
|
||||
"full"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "late_raw_none",
|
||||
"arguments": [
|
||||
"--index",
|
||||
"1.5",
|
||||
"--angular-momentum",
|
||||
"0",
|
||||
"--no-central",
|
||||
"--max-newton",
|
||||
"0",
|
||||
"--damped-coupled-probe",
|
||||
"--strategy",
|
||||
"coupled",
|
||||
"--probe-state",
|
||||
"/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/nonlinear_step_2026-09-18/late_v1/n1p5_late_eta003/nonlinear_step_physical_base.txt",
|
||||
"--probe-direction",
|
||||
"/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/nonlinear_step_2026-09-18/late_v1/n1p5_late_eta003/nonlinear_step_direction_full.txt",
|
||||
"--linear-tol",
|
||||
"0.03",
|
||||
"--restart",
|
||||
"160",
|
||||
"--preconditioner-variant",
|
||||
"gravity-schur",
|
||||
"--schur-sweeps",
|
||||
"1",
|
||||
"--schur-relaxation",
|
||||
"0.5",
|
||||
"--gravity-tol",
|
||||
"1e-10",
|
||||
"--gravity-iterations",
|
||||
"300",
|
||||
"--gravity-restart",
|
||||
"80",
|
||||
"--coupled-tol",
|
||||
"0.03",
|
||||
"--coupled-iterations",
|
||||
"160",
|
||||
"--coupled-restart",
|
||||
"160",
|
||||
"--coupled-max-ratio",
|
||||
"1",
|
||||
"--coupled-attempts",
|
||||
"1",
|
||||
"--coupled-search",
|
||||
"none"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "late_raw_near",
|
||||
"arguments": [
|
||||
"--index",
|
||||
"1.5",
|
||||
"--angular-momentum",
|
||||
"0",
|
||||
"--no-central",
|
||||
"--max-newton",
|
||||
"0",
|
||||
"--damped-coupled-probe",
|
||||
"--strategy",
|
||||
"coupled",
|
||||
"--probe-state",
|
||||
"/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/nonlinear_step_2026-09-18/late_v1/n1p5_late_eta003/nonlinear_step_physical_base.txt",
|
||||
"--probe-direction",
|
||||
"/Users/tboudreaux/.codex/.chatgpt-projects/g-p-6a6b3f2194ec8191bebcd59075897f1d/diagnostics/nonlinear_step_2026-09-18/late_v1/n1p5_late_eta003/nonlinear_step_direction_full.txt",
|
||||
"--linear-tol",
|
||||
"0.03",
|
||||
"--restart",
|
||||
"160",
|
||||
"--preconditioner-variant",
|
||||
"gravity-schur",
|
||||
"--schur-sweeps",
|
||||
"1",
|
||||
"--schur-relaxation",
|
||||
"0.5",
|
||||
"--gravity-tol",
|
||||
"1e-10",
|
||||
"--gravity-iterations",
|
||||
"300",
|
||||
"--gravity-restart",
|
||||
"80",
|
||||
"--coupled-tol",
|
||||
"0.03",
|
||||
"--coupled-iterations",
|
||||
"160",
|
||||
"--coupled-restart",
|
||||
"160",
|
||||
"--coupled-max-ratio",
|
||||
"1",
|
||||
"--coupled-attempts",
|
||||
"1",
|
||||
"--coupled-search",
|
||||
"near"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -9,6 +9,7 @@ import math
|
||||
import os
|
||||
from pathlib import Path
|
||||
import platform
|
||||
import resource
|
||||
import shutil
|
||||
import subprocess
|
||||
import time
|
||||
@@ -133,6 +134,7 @@ def main():
|
||||
state_files[str(path)] = digest(path)
|
||||
print('START', name, flush=True)
|
||||
start = time.monotonic()
|
||||
cpu_start = resource.getrusage(resource.RUSAGE_CHILDREN)
|
||||
record = {'id': name, 'command': command, 'started_utc': utc(), 'input_state_hashes': state_files}
|
||||
write_json(output / (name + '_run.json'), record)
|
||||
with (output / (name + '.log')).open('w') as stream:
|
||||
@@ -144,6 +146,16 @@ def main():
|
||||
record['timed_out'] = True
|
||||
record['exit_code'] = None
|
||||
record.update(seconds=time.monotonic() - start, finished_utc=utc())
|
||||
cpu_end = resource.getrusage(resource.RUSAGE_CHILDREN)
|
||||
# Keep independent clocks: suspend can affect elapsed clocks differently,
|
||||
# and rescaling solver phase timings would hide that uncertainty.
|
||||
record['utc_elapsed_seconds'] = (
|
||||
datetime.datetime.fromisoformat(record['finished_utc']) -
|
||||
datetime.datetime.fromisoformat(record['started_utc'])).total_seconds()
|
||||
record['utc_minus_monotonic_seconds'] = record['utc_elapsed_seconds'] - record['seconds']
|
||||
record['child_user_cpu_seconds'] = cpu_end.ru_utime - cpu_start.ru_utime
|
||||
record['child_system_cpu_seconds'] = cpu_end.ru_stime - cpu_start.ru_stime
|
||||
record['child_cpu_seconds'] = record['child_user_cpu_seconds'] + record['child_system_cpu_seconds']
|
||||
record['output_hashes'] = {
|
||||
str(path.relative_to(folder)): digest(path)
|
||||
for path in sorted(folder.rglob('*'))
|
||||
|
||||
Reference in New Issue
Block a user