Build Packages / Create release (push) Successful in 7s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 4m56s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 9m10s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 13m51s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 16m56s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 20m59s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 21m25s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 21m17s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 14m14s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 25m59s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 25m48s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 15m52s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 19m33s
Build Packages / Generate python client (push) Successful in 29s
Build Packages / Build documentation (push) Successful in 1m19s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 20m49s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 25m31s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 25m24s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 26m5s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 22m19s
Build Packages / Unit tests (push) Failing after 2h28m24s
Build Packages / Validation Battery (push) Successful in 40m33s
* Rugnux: Processes a collection live while jfjoch_broker writes it (`rugnux <master.h5> <broker URL>`). * Rugnux: Processing starts on the first images and confirms its choices once all are in, so analysis can begin during collection. * Rugnux: Faster processing, especially on servers with several GPUs and CPU sockets and on computers without a GPU (`--no-gpu`, macOS). * Rugnux: Uses much less GPU memory, so large data sets stay on the GPU of smaller cards, and a data set too large for the card is processed on the CPU instead. * Rugnux: On macOS, Bragg integration runs on the Apple GPU. * Rugnux: Better handling of twinning and pseudo-symmetry, with the twin hypothesis written as `<prefix>_twin_<SG>.mtz`, and a wrong `--model` no longer confirms the data or decides the hand. * Rugnux: `--model` accepts predicted (AlphaFold) models and falls back to molecular replacement when the model is not placed as a rigid body (experimental `--mr` forces it), settling space group, hand and twinning and writing a different answer as `<prefix>_mr.mtz`. * Rugnux: Molecular replacement is faster and settles the space group in more cases with several copies in the asymmetric unit. * Rugnux: Deposition-ready mmCIF, a richer report, and numbered steps on the terminal with the full log in `<prefix>_log.txt`; `_P1.mtz`, `--estimate-beam-center` and `--beam-center-search` are removed. * Rugnux: The beam-stop shadow is found correctly on tilted detectors. * Rugnux: Stills files that record a stationary goniometer axis get the default stills geometry refinement. * jfjoch_viewer: "Analyze dataset" uses the same defaults as a bare `rugnux <file>`, and shows the results of processed CBF, marCCD and SMV sweeps. * jfjoch_viewer: The Files panel refreshes on F5 and every few seconds, and the plot type and other selections stay put during live collection. * jfjoch_writer: Memory stays bounded and old data files are closed efficiently on long runs, any failure ends the run in an error state the broker is told about, and the master file appears only after its data files; the ZeroMQ pusher logs when a stalled writer makes it drop images. * Fixes: The TCP image pusher no longer blocks the broker's receiver, GPU out-of-memory failures stop with a clear message, and the XDS plugin masks module and chip edges. --------- Co-authored-by: Filip Leonarski <jungfrau@filips-mac-mini.home> Reviewed-on: #85 Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
340 lines
24 KiB
JSON
340 lines
24 KiB
JSON
{
|
|
"title": "rugnux timing benchmark across platforms: rc175 3be5dcaac",
|
|
"intro": "`battery.py timing` (tools/battery/README.md, 'The timing benchmark'; timing.py, timing.json). myob_x10sa and cytc_x10sa start from AlphaFold DB models, 4nwv from its deposited model moved by a fixed transform; each must be placed by molecular replacement. Code: rc175 3be5dcaac, pushed 2026-10-16; its rugnux code is identical to e25876055 (the later commits change docs only). Each platform's numbers come from its own pack (named under Reproducibility); 'not recorded' means the pack does not have it. This file is generated by timing_table.py from platforms.json, kept beside it with a copy of timing.json: add a platform to platforms.json and re-run `python3 -I timing_table.py platforms.json -o <this file>`.",
|
|
"timing_json": "../../timing.json",
|
|
"stands_out": [
|
|
"Every check passed on every platform and run (server and GB10 included) (6 of 6 checks on each of the 3 sets). The MR decisions are the same everywhere: myob and 4nwv AGREES. For cytc the data give P 31 2 1 and MR places the model in P 32 2 1 (ENANTIOMORPH), the Mac included.",
|
|
"The steps cover rugnux's whole clock on every platform: on 4nwv the sum of the TIMING steps equals WALL_TIME to 0.1 s. Outside that clock, process launch to exit (elapsed_s) adds 0.5-1.0 s. There is no hidden time between steps.",
|
|
"On Windows, the first set of a run (myob_x10sa) has 4.0-4.3 s between process launch and exit that rugnux's own clock does not cover; the later sets and every other platform have 0.1-1.0 s. What that time is (process or CUDA start-up before step 1, say) is not recorded.",
|
|
"Workstation (RTX 5080): 4nwv takes 84 s. Scaling and merging is the biggest step (25 s), then MR (20 s), then integration (10.5 s). The run of 10-15 23:26, said to be on a loaded machine, is within 1% of the clean run. So load did not inflate that particular run, whatever it did to others.",
|
|
"Workstation (RTX 5080): 4nwv takes 84 s. Scale & merge (P1 merge, symmetry, final merge, analyses) is the largest stage at 28 s. Structure & map follows at 27 s (MR 20 s of it), then post-refine at 8 s and the two per-image passes at 10.5 s together. The run of 10-15 23:26, said to be on a loaded machine, is within 1% of the clean run, and used the identical binary. So load did not inflate that particular run, whatever it did to others.",
|
|
"Workstation CPU only: 4nwv takes 515 s, 6.2x the GPU run. Structure & map takes 331 s of it (MR 243 s, about 12x the GPU), and the per-image passes 83 s (8x). Scale & merge is only 2x slower (56 s). The two small sets are 7x slower.",
|
|
"Mac M6 (CPU + Metal integration): 4nwv takes 431 s, 0.84x the workstation's CPU-only time. Its MR runs on the CPU and takes as long as the workstation's CPU-only MR (240 vs 243 s); it is 56% of the Mac's wall time. Metal brings the per-image passes to 55 s (CPU-only workstation: 83 s). Model validation (56 s) and scale & merge (49 s) also beat the 16-core CPU-only run. Caveat: the Mac binary has no -march flags, the workstation's has x86-64-v3.",
|
|
"Windows laptop (RTX PRO 2000, 8 GB): 4nwv takes 167-206 s, 2.0-2.5x the workstation GPU run. Every stage is slower: per-image passes 27 s (2.6x), scale & merge 40-58 s, structure & map 71-87 s (MR 52-62 s, 2.7-3.1x). Back-to-back runs differ by 23%, spread over the GPU/CPU-heavy stages. The laptop also spends 2.6-5.6 s writing files and 3.3-4.4 s in the geometry-walk probe (0.5 and 0.1 s on the workstation).",
|
|
"GB10 (DGX Spark, unified memory): 4nwv takes 123 s, 1.47x the RTX 5080 workstation and faster than the laptop (167-206 s). By stage against the workstation: scale & merge is nearly level (29.0 vs 27.9 s), the per-image passes are 1.4x (15.1 vs 10.5 s), and structure & map is 2.3x (61.0 vs 27.1 s; MR alone 2.4x, 46.6 vs 19.7 s). MR is its largest step, 38% of the wall time; per the pack's profile the GPU rotation function alone takes 25.7 s. The small sets lose more: myob 17.1 s and cytc 25.7 s, 1.9x the workstation. Everything ran on the GPU. With a 104.5 GB budget, model validation planned 22.1 GB with 10 rigid-body engines and MR 21.6 GB with 9; the 8 and 16 GB cards ran 1-2.",
|
|
"Server (4x Xeon Gold 6146, 4x T4; rugnux uses the 24 CPUs of the GPUs' sockets and all four cards): 4nwv takes 248 s. That is 3.0x the RTX 5080 workstation and slower than the 8 GB laptop (167-206 s). The gap is almost all structure & map: 150 s, of which MR is 123 s (6.3x the workstation's 19.7 s, 2.0-2.4x the laptop's) and model validation 26 s (3.5x). Scale & merge (57 s) and post-refine (16 s) are about 2x the workstation. The two per-image passes, spread over four cards, are level with it (11.0 vs 10.5 s). The small sets match GB10: myob 16.9 s and cytc 25.8 s (GB10: 17.1 and 25.7 s), 1.8-2.0x the workstation, with pre-scan and indexing the largest stages. The run started 5 s after a full battery on the same machine ended; the load during it was not recorded.",
|
|
"Peak host memory for 4nwv: workstation GPU 18.4 GiB RSS, workstation CPU-only 26.8 GiB, Mac 9.1 GiB RSS (~22 GiB physical footprint). The Windows, GB10 and server packs recorded none. The two numbers are not directly comparable: Mac RSS vs footprint, unified memory."
|
|
],
|
|
"platforms": [
|
|
{
|
|
"platform": "Workstation: AMD Ryzen 9 5950X (16C/32T)",
|
|
"gpu": "RTX 5080 16 GB",
|
|
"role": "reference (clean)",
|
|
"run": "/data/battery/runs/20261016-0941_e25876_ws-3be5dc-timing",
|
|
"os": "Rocky Linux 8.10, kernel 4.18.0-553.22.1.el8_10.x86_64, NVIDIA driver 580.82.07 (read 2026-10-16, after the runs)",
|
|
"build": "GCC 13.3.1 (gcc-toolset-13), nvcc 13.0.88, CUDA code for sm_75/80/86/89/90/100/120/121 (the default list; JFJOCH_CUDA_ARCHITECTURES empty), CMAKE_CXX_FLAGS/CMAKE_C_FLAGS = -march=x86-64-v3, no LTO; build dir /data/tmp/rc175-metal-merge/build (CMakeCache and CMakeFiles read 2026-10-16)",
|
|
"battery_cmd": "`cd /home/jungfrau/nextgendcu && nice -n 0 python3 tools/battery/battery.py --site /data/battery/site.json timing --rugnux /data/tmp/rc175-metal-merge/build/rugnux/rugnux --gpulock --label ws-3be5dc-timing`",
|
|
"conditions": "started 09:41:50 right after a full battery ended (09:41); no other rugnux/battery/build process, GPU lock free, 0.3 GiB in use on the card before; load average 1.43 before, 6.70 after, highest 1-min load sampled during the run 9.75 (rugnux's own threads); page cache warm (the full battery had just read the same datasets); not the first run after the build",
|
|
"peak_mem": {
|
|
"myob_x10sa": "3.5 GiB RSS",
|
|
"cytc_x10sa": "5.1 GiB RSS",
|
|
"4nwv": "18.4 GiB RSS"
|
|
},
|
|
"notes": [
|
|
"Peak RSS = VmHWM from /proc/<pid>/status, sampled every 0.5 s. Whole-card GPU memory in use peaked at 8.1 GiB (nvidia-smi every 0.5 s; 0.3 GiB idle baseline).",
|
|
"The binary reports git e25876; the rugnux code of e25876055 and 3be5dcaac is identical (the later commits change docs only). The battery runner was the shared checkout at 2be738f55 (3be5dcaac plus the Windows battery fixes).",
|
|
"The manifest's 'source HEAD' is the build directory's source tree at run time (it had moved on to 2be738f55); the commit the binary was built from is the one it reports (e25876)."
|
|
]
|
|
},
|
|
{
|
|
"platform": "Workstation: AMD Ryzen 9 5950X (16C/32T)",
|
|
"gpu": "none (--no-gpu)",
|
|
"role": "reference (clean)",
|
|
"run": "/data/battery/runs/20261016-0943_e25876_ws-3be5dc-timing-nogpu",
|
|
"os": "Rocky Linux 8.10, kernel 4.18.0-553.22.1.el8_10.x86_64, NVIDIA driver 580.82.07 (read 2026-10-16, after the runs)",
|
|
"build": "GCC 13.3.1 (gcc-toolset-13), nvcc 13.0.88, CUDA code for sm_75/80/86/89/90/100/120/121 (the default list; JFJOCH_CUDA_ARCHITECTURES empty), CMAKE_CXX_FLAGS/CMAKE_C_FLAGS = -march=x86-64-v3, no LTO; build dir /data/tmp/rc175-metal-merge/build (CMakeCache and CMakeFiles read 2026-10-16) (same binary as the GPU run)",
|
|
"battery_cmd": "`cd /home/jungfrau/nextgendcu && nice -n 0 python3 tools/battery/battery.py --site /data/battery/site.json timing --rugnux /data/tmp/rc175-metal-merge/build/rugnux/rugnux --gpulock --extra=--no-gpu --label ws-3be5dc-timing-nogpu`",
|
|
"conditions": "started 09:43:50 right after the GPU run, nothing else running; load average 5.67 before, 12.22 after, highest 1-min load sampled 34.1 during 4nwv (rugnux's own 32 threads); page cache warm",
|
|
"peak_mem": {
|
|
"myob_x10sa": "9.9 GiB RSS",
|
|
"cytc_x10sa": "10.0 GiB RSS",
|
|
"4nwv": "26.8 GiB RSS"
|
|
},
|
|
"notes": [
|
|
"Peak RSS = VmHWM from /proc, sampled every 0.5 s.",
|
|
"Runner and binary as in the GPU run.",
|
|
"The manifest's 'source HEAD' is the build directory's source tree at run time (it had moved on to 2be738f55); the commit the binary was built from is the one it reports (e25876)."
|
|
]
|
|
},
|
|
{
|
|
"platform": "Server: 4x Intel Xeon Gold 6146 (48C/48T recorded; rugnux used 24)",
|
|
"gpu": "4x Tesla T4 (15360 MiB each, as recorded)",
|
|
"role": "reference",
|
|
"archive": "/data/perf/bundle_rc175_3be5dc.tar.gz",
|
|
"member": "bundle_rc175_3be5dc/b_mr_timing",
|
|
"os": "not recorded",
|
|
"build": "Release, -march=x86-64-v3, CUDA on (manifest; build dir build_v3); compiler, CUDA version, CUDA arch and LTO not recorded",
|
|
"battery_cmd": "not recorded (the pack's console.log shows `battery.py timing` output; the manifest: label 'timing', no gpulock, no extra arguments)",
|
|
"conditions": "started 05:31:22, 5 s after a full battery run on the same machine ended (03:27:52 to 05:31:17, the pack's a_battery), so the page cache was presumably warm (not recorded as such); GPU not shared during that battery (its report); load average at 05:37:04, 40 s after the timing run ended: 0.52 / 3.85 / 6.32 (1 / 5 / 15 min), all four GPUs idle then (c_profile machine_before); load during the run not recorded; rugnux limits itself to 24 threads, the CPUs of the GPUs' sockets (24-47), and uses all 4 GPUs",
|
|
"notes": [
|
|
"Peak memory not recorded. 4nwv model validation planned 5.18 GB of a 12.52 GB budget (80% of the card's 15.65 GB) and MR 4.79 GB, on the GPU.",
|
|
"The pack also holds the full battery (a_battery) and nsys/perf profiles (c_profile); they are not used here."
|
|
],
|
|
"run_name": "20261016-0531_3be5dc_timing (on the server; b_mr_timing in the pack, name from its console.log)"
|
|
},
|
|
{
|
|
"platform": "DGX Spark: NVIDIA GB10 (ARM, 20 CPUs recorded)",
|
|
"gpu": "GB10 (unified memory, 121.7 GiB recorded)",
|
|
"role": "reference",
|
|
"archive": "/data/perf/rugnux_gb10_perf_rc175-3be5dc_20261016.tar.gz",
|
|
"member": "rugnux_gb10_perf_rc175-3be5dc_20261016/battery/20261016-0944_3be5dc_gb10-rc175-3be5dc-mr",
|
|
"os": "not recorded (DGX Spark per the pack's ANALYSIS.md)",
|
|
"build": "Release, -DJFJOCH_RUGNUX_ONLY=ON -DJFJOCH_CUDA_ARCHITECTURES=121, no -march (ANALYSIS.md); LTO, compiler and CUDA versions not recorded",
|
|
"battery_cmd": "not recorded (ANALYSIS.md: rc175's tools/battery `battery.py timing`, the pack's data, an absolute-path site config)",
|
|
"conditions": "GPU not shared: the resident GPU service was stopped for the whole session (ANALYSIS.md; the report says 'GPU was not shared during the run'); no gpulock; started 4 min after a six-set battery run on the same data (page cache state not recorded); load not recorded; the pack's pdb_cache JSONs were repointed by hand before this run",
|
|
"notes": [
|
|
"Peak memory not recorded. With unified memory the GPU budget is 104.53 GB: 4nwv model validation planned 22.12 GB (10 rigid-body engines), MR 21.60 GB (9 rigid-body engines).",
|
|
"The same binary with the deposited 4nwv model (six-set run 20261016-0940_3be5dc_gb10-rc175-3be5dc in the same pack): 76.7 s."
|
|
]
|
|
},
|
|
{
|
|
"platform": "Laptop: Intel Core Ultra 7 255H (16C/16T)",
|
|
"gpu": "RTX PRO 2000 Blackwell Laptop 8 GB",
|
|
"role": "reference",
|
|
"archive": "/data/perf/rugnux_win11_perf_3be5dc_20261016.tar.gz",
|
|
"member": "rugnux_win11_perf_3be5dc_20261016/runs/1_timing",
|
|
"os": "Windows 11 (pack name; build number not recorded); GPU in WDDM mode (BRIEF.md)",
|
|
"build": "MSVC 19.51 + CUDA 13.3, CI Windows settings /arch:AVX (BRIEF.md); CUDA arch and LTO not recorded; build dir build-win-ci",
|
|
"battery_cmd": "not recorded (BRIEF.md: `battery.py timing` with the runner patched by battery-windows.patch, run from the pack's unmodified site.json)",
|
|
"conditions": "nothing else on the GPU, no gpulock (site gpulock null); the session's second timing run (the first is the next row); load and page cache not recorded",
|
|
"notes": [
|
|
"Why this run is the reference: it is the run the pack's BRIEF.md reports as its result (`1_timing`, the patched runner from the pack's own site.json). The earlier run (next row) used the same binary (same sha256) and the unpatched runner. BRIEF.md puts the 167 vs 206 s 4nwv spread down to laptop thermals/power; that is its reading, not a measurement."
|
|
],
|
|
"run_name": "20261016-0753_3be5dc_3be5dc-timing-patched (on the laptop; runs/1_timing in the pack, name from its SOURCE_RUN.txt)"
|
|
},
|
|
{
|
|
"platform": "Laptop: Intel Core Ultra 7 255H (16C/16T)",
|
|
"gpu": "RTX PRO 2000 Blackwell Laptop 8 GB",
|
|
"role": "repeat (earlier run)",
|
|
"archive": "/data/perf/rugnux_win11_perf_3be5dc_20261016.tar.gz",
|
|
"member": "rugnux_win11_perf_3be5dc_20261016/runs/repeat_timing",
|
|
"os": "Windows 11 (pack name; build number not recorded)",
|
|
"build": "same binary as the reference row (sha256 ce0248ef...)",
|
|
"battery_cmd": "not recorded (BRIEF.md: the repo's unpatched runner with an absolute-path site config)",
|
|
"conditions": "the session's first timing run; nothing else on the GPU; load and page cache not recorded; hardware not recorded in this run's manifest (same host PC17975)",
|
|
"run_name": "20261016-0741_3be5dc_3be5dc-timing (on the laptop; runs/repeat_timing in the pack, name from its SOURCE_RUN.txt)"
|
|
},
|
|
{
|
|
"platform": "Mac mini: Apple M6, 12 cores",
|
|
"gpu": "Apple M6 GPU (Metal, integration only)",
|
|
"role": "reference",
|
|
"conditions": "nothing else running; data read cold (the report)",
|
|
"devices": [
|
|
"CPU",
|
|
"CPU",
|
|
"CPU (no CUDA build)"
|
|
],
|
|
"peak_mem": {
|
|
"myob_x10sa": "6.7 GiB RSS (~6.9 GiB footprint)",
|
|
"cytc_x10sa": "5.9 GiB RSS (~10 GiB footprint)",
|
|
"4nwv": "9.1 GiB RSS (~22 GiB footprint)"
|
|
},
|
|
"notes": [
|
|
"Peak memory sampled once a second by the Mac agent (ps RSS; top's physical footprint, rounded to whole GiB above 10 GiB).",
|
|
"The pack's 4nwv pdb_cache JSON had to be corrected by hand before 4nwv would run."
|
|
],
|
|
"manual": {
|
|
"sets": {
|
|
"myob_x10sa": {
|
|
"verdict": "pass",
|
|
"wall": 40.41,
|
|
"elapsed": 40.8,
|
|
"mr_decision": "AGREES",
|
|
"steps": {
|
|
"Reading input": 0.107,
|
|
"Pre-scan": 3.234,
|
|
"Indexing": 4.858,
|
|
"Integration (geometry pre-pass)": 7.935,
|
|
"Scaling and post-refinement": 0.33,
|
|
"Indexing at the refined geometry": 2.202,
|
|
"Integration (refined geometry)": 18.139,
|
|
"Scaling and merging": 1.626,
|
|
"Analyses": 0.284,
|
|
"Molecular replacement": 1.61,
|
|
"Writing files": 0.036,
|
|
"Geometry check": 0.009
|
|
},
|
|
"cmd": "/Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/bin/rugnux -o p --no-export-unmerged --report-resolution 1.742,50.000 --model /Users/jungfrau/jungfraujoch-origin-rc175/tools/battery/models/AF-P68082-F1-model_v6.cif /Users/jungfrau/rugnux_battery_perf_20261014/data/inhouse/myob_x10sa/MyoB_13_110ee0_master.h5",
|
|
"version": "rugnux Version 1.0.0-rc.175 (git 3be5dc Fri Oct 16 06:55:26 2026) - CPU build",
|
|
"build_flags": "none",
|
|
"gpu": "Apple M6 through Metal, for the Bragg integration only - the rest runs on the CPU",
|
|
"threads": "12",
|
|
"scaling": "CPU",
|
|
"mv": "CPU",
|
|
"mr_dev": "CPU"
|
|
},
|
|
"cytc_x10sa": {
|
|
"verdict": "pass",
|
|
"wall": 56.83,
|
|
"elapsed": 56.9,
|
|
"mr_decision": "ENANTIOMORPH",
|
|
"steps": {
|
|
"Reading input": 0.107,
|
|
"Pre-scan": 2.841,
|
|
"Indexing": 6.208,
|
|
"Integration (geometry pre-pass)": 9.982,
|
|
"Scaling and post-refinement": 0.618,
|
|
"Integration": 29.335,
|
|
"Scaling and merging": 2.902,
|
|
"Analyses": 0.383,
|
|
"Molecular replacement": 4.312,
|
|
"Writing files": 0.124
|
|
},
|
|
"cmd": "/Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/bin/rugnux -o p --no-export-unmerged --report-resolution 2.039,50.000 --model /Users/jungfrau/jungfraujoch-origin-rc175/tools/battery/models/AF-P62894-F1-model_v6.cif /Users/jungfrau/rugnux_battery_perf_20261014/data/inhouse/cytc_x10sa/cytC_10_002_master.h5",
|
|
"version": "rugnux Version 1.0.0-rc.175 (git 3be5dc Fri Oct 16 06:55:26 2026) - CPU build",
|
|
"build_flags": "none",
|
|
"gpu": "Apple M6 through Metal, for the Bragg integration only - the rest runs on the CPU",
|
|
"threads": "12",
|
|
"scaling": "CPU",
|
|
"mv": "CPU",
|
|
"mr_dev": "CPU"
|
|
},
|
|
"4nwv": {
|
|
"verdict": "pass",
|
|
"wall": 430.62,
|
|
"elapsed": 430.8,
|
|
"mr_decision": "AGREES",
|
|
"steps": {
|
|
"Reading input": 0.056,
|
|
"Pre-scan": 3.87,
|
|
"Indexing": 10.109,
|
|
"Integration (geometry pre-pass)": 24.871,
|
|
"Scaling and post-refinement": 9.42,
|
|
"Metric-symmetry check": 5.295,
|
|
"Indexing at the refined geometry": 0.061,
|
|
"Integration (refined geometry)": 30.121,
|
|
"Scaling and merging": 45.62,
|
|
"Analyses": 3.158,
|
|
"Model validation": 56.374,
|
|
"Molecular replacement": 239.914,
|
|
"Writing files": 1.696,
|
|
"Geometry check": 0.032
|
|
},
|
|
"cmd": "/Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/bin/rugnux -o p --no-export-unmerged --model /Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/work/open/4nwv/4nwv_moved.cif.gz /Users/jungfrau/rugnux_battery_perf_20261014/data/open/4nwv/sbgrid9/formal.001",
|
|
"version": "rugnux Version 1.0.0-rc.175 (git 3be5dc Fri Oct 16 06:55:26 2026) - CPU build",
|
|
"build_flags": "none",
|
|
"gpu": "Apple M6 through Metal, for the Bragg integration only - the rest runs on the CPU",
|
|
"threads": "12",
|
|
"scaling": "CPU",
|
|
"mv": "CPU",
|
|
"mr_dev": "CPU"
|
|
}
|
|
},
|
|
"repro": {
|
|
"pack": "run directory on the Mac (~/rugnux_battery_perf_20261014/runs)",
|
|
"run directory": "20261016-0727_3be5dc_timing-3be5dc",
|
|
"date/time": "2026-10-16T07:27:54 to 2026-10-16T07:36:44 (the machine's local time)",
|
|
"host": "Filips-Mac-Mini-2.local",
|
|
"OS": "macOS 27.0.1 (26A434)",
|
|
"rugnux (as the binary reports)": "rugnux Version 1.0.0-rc.175 (git 3be5dc Fri Oct 16 06:55:26 2026) - CPU build",
|
|
"build flags (as the binary reports)": "none",
|
|
"build (battery manifest)": "Release CXX_FLAGS='' CUDA=OFF; CMakeCache /Users/jungfrau/jungfraujoch-origin-rc175/build/CMakeCache.txt; source HEAD 3be5dcaac8cf39a6871d0865efd669f608f4442d; sha256 ebead2708fed78a1f8e8f00bcbf5cf6d137883ec14794b9c853a472f5093ccdd",
|
|
"compiler / CUDA / arch": "Apple clang 21.0.0 (clang-2100.3.34.2), no CUDA (Metal integration engine), CMAKE_OSX_DEPLOYMENT_TARGET 13.0, no -march/-mcpu, no LTO",
|
|
"battery runner": "tools/battery at 3be5dcaac",
|
|
"battery command": "`cd <scratch dir> && python3 tools/battery/battery.py --site <absolute-path copy of the pack's site.json> timing --rugnux /Users/jungfrau/jungfraujoch-origin-rc175/build/rugnux/rugnux --label timing-3be5dc`",
|
|
"battery options (manifest)": "label timing-3be5dc, threads 0 (0 = no -N), gpulock None, extra args [], timeout 10800 s",
|
|
"threads (rugnux reports)": "12",
|
|
"hardware (manifest)": "CPU Apple M6, 2P+4E cores / 12 threads, 16.0 GiB RAM, GPU None",
|
|
"GPU (rugnux reports)": "Apple M6 through Metal, for the Bragg integration only - the rest runs on the CPU",
|
|
"rugnux command, myob_x10sa": "`/Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/bin/rugnux -o p --no-export-unmerged --report-resolution 1.742,50.000 --model /Users/jungfrau/jungfraujoch-origin-rc175/tools/battery/models/AF-P68082-F1-model_v6.cif /Users/jungfrau/rugnux_battery_perf_20261014/data/inhouse/myob_x10sa/MyoB_13_110ee0_master.h5`",
|
|
"rugnux command, cytc_x10sa": "`/Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/bin/rugnux -o p --no-export-unmerged --report-resolution 2.039,50.000 --model /Users/jungfrau/jungfraujoch-origin-rc175/tools/battery/models/AF-P62894-F1-model_v6.cif /Users/jungfrau/rugnux_battery_perf_20261014/data/inhouse/cytc_x10sa/cytC_10_002_master.h5`",
|
|
"rugnux command, 4nwv": "`/Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/bin/rugnux -o p --no-export-unmerged --model /Users/jungfrau/rugnux_battery_perf_20261014/runs/20261016-0727_3be5dc_timing-3be5dc/work/open/4nwv/4nwv_moved.cif.gz /Users/jungfrau/rugnux_battery_perf_20261014/data/open/4nwv/sbgrid9/formal.001`"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"platform": "Workstation: AMD Ryzen 9 5950X (16C/32T)",
|
|
"gpu": "RTX 5080 16 GB",
|
|
"role": "earlier run (10-15 23:26)",
|
|
"run": "/data/battery/runs/20261015-2326_e25876_rc175-r10-timing",
|
|
"os": "Rocky Linux 8.10, kernel 4.18.0-553.22.1.el8_10.x86_64, NVIDIA driver 580.82.07 (read 2026-10-16, after the runs)",
|
|
"build": "same binary as the clean workstation runs (sha256 identical)",
|
|
"battery_cmd": "not recorded (options in the manifest below)",
|
|
"conditions": "described by the owner as taken while the machine was heavily loaded by other agents (load 15-35); load during this run not recorded; its times are within 1% of the clean run",
|
|
"notes": [
|
|
"Same binary as the clean runs: identical sha256 (4ace4e1f...); at this run the source tree was still at e25876055."
|
|
]
|
|
}
|
|
],
|
|
"step_groups": [
|
|
{
|
|
"box": "Input",
|
|
"steps": [
|
|
"Reading input"
|
|
],
|
|
"why": "opening the dataset and reading its header"
|
|
},
|
|
{
|
|
"box": "Pre-scan",
|
|
"steps": [
|
|
"Pre-scan"
|
|
],
|
|
"why": "frame projection, spot widths, beam-stop shadow, defective pixels"
|
|
},
|
|
{
|
|
"box": "Index",
|
|
"steps": [
|
|
"Indexing",
|
|
"Metric-symmetry check",
|
|
"Indexing at the refined geometry"
|
|
],
|
|
"why": "pass 1 first-pass indexing; the metric-symmetry check (only where the free refinement departs from the promoted Bravais class: the alternative class is re-indexed and re-run as a probe on a copy, RugnuxPasses.cpp); pass 2's re-indexing at the post-refined geometry. Pass 1 and pass 2 are kept together because pass 2's indexing is 0.1-0.2 s"
|
|
},
|
|
{
|
|
"box": "Per image, pass 1",
|
|
"steps": [
|
|
"Integration (geometry pre-pass)"
|
|
],
|
|
"why": "the per-image chain (decode, azimuthal profile, spot finding, refine, predict, integrate) at the header geometry"
|
|
},
|
|
{
|
|
"box": "Post-refine",
|
|
"steps": [
|
|
"Scaling and post-refinement",
|
|
"Geometry check"
|
|
],
|
|
"why": "pass 1's P1 scale-and-merge plus the post-refinement of distance, beam, cell and axis (one Step in RugnuxScaleMerge.cpp); and the geometry walk after pass 2, which re-indexes a probe at the refined geometry to check it holds (RugnuxPasses.cpp; it is logged last, after Writing files)"
|
|
},
|
|
{
|
|
"box": "Per image, pass 2",
|
|
"steps": [
|
|
"Integration (refined geometry)",
|
|
"Integration"
|
|
],
|
|
"why": "the per-image chain again: 'Integration (refined geometry)' where post-refinement moved the detector geometry, plain 'Integration' where it did not and pass 2 runs at the header geometry (RugnuxImagePass.cpp; cytc_x10sa here)"
|
|
},
|
|
{
|
|
"box": "Scale & merge (P1) -> Symmetry -> Scale & merge",
|
|
"steps": [
|
|
"Scaling and merging",
|
|
"Analyses"
|
|
],
|
|
"why": "one Step covers the P1 merge, the space-group search and the merge in the chosen group (plus pass 2's post-refinement observations and the rotation-scale probe); Analyses is the anisotropy, tNCS and twinning analysis of that merge. Kept as one column: the sub-timings inside the step overlap (the all-observation P1 merge runs concurrently with the space-group search, and 'space-group search' encloses 'merge <group>'), so the three boxes cannot be split exactly"
|
|
},
|
|
{
|
|
"box": "Structure & map",
|
|
"steps": [
|
|
"Model validation",
|
|
"Molecular replacement"
|
|
],
|
|
"why": "Model validation is the rigid-body fit of the given model against its null; on 4nwv the moved model is rejected there. For the AlphaFold predictions (myob, cytc) there is no Model validation step, because a predicted model goes straight to MR (RugnuxScaleMerge.cpp). Molecular replacement covers the search, the placement and the maps"
|
|
},
|
|
{
|
|
"box": "Report",
|
|
"steps": [
|
|
"Writing files"
|
|
],
|
|
"why": "MTZ, mmCIF, HKL and maps"
|
|
}
|
|
],
|
|
"step_extra_columns": [
|
|
[
|
|
"of which Molecular replacement",
|
|
"Molecular replacement"
|
|
]
|
|
],
|
|
"step_notes": [
|
|
"The figure's 'Geometry' box is the stills workflow's and does not apply here."
|
|
]
|
|
}
|