Skip to content

GPCRmd 729 PME Runtime Closure (M5 Max)

Date: 2026-07-15

Status: bounded-pass. The MLX/Metal product runtime passed independent OpenMM fixed-coordinate parity, bounded source-protocol NVT execution, saved trajectory/checkpoint reload, and checkpoint continuation for the real 92,001-atom GPCRmd 729 membrane fixture.

This closes the stale fixture-specific topology and PME blockers. It does not establish production NPT, analytic PME virial, triclinic PME, production-length stability, or broad membrane-system readiness.

Every quantitative result below comes from these gitignored artifacts:

  • [source] results/gpcrmd-pme-runtime-closure/source/fixture-manifest.json
  • [prepared] results/gpcrmd-pme-runtime-closure/prepared/mlx-workload-manifest.json
  • [parity] results/gpcrmd-pme-runtime-closure/parity/gpcrmd_pme_parity_report.json
  • [runtime] results/gpcrmd-pme-runtime-closure/runtime/gpcrmd_performance.json
  • [profile] results/gpcrmd-pme-runtime-closure/profile/pme-profile.json
  • [matrix] results/gpcrmd-pme-runtime-closure/blocker-matrix.json

Complete MLX, OpenMM, and difference force arrays are stored at results/gpcrmd-pme-runtime-closure/parity/complete_force_comparison.npz, as recorded by [parity].

The acquisition manifest records the four required official GPCRmd file IDs, their resolved names, sizes, SHA-256 hashes, and safe protocol-archive extraction. Official file downloads require a GPCRmd account; no cookie, credential, or session material is persisted. [source]

Official simulation record: https://www.gpcrmd.org/dynadb/dynamics/id/729/.

IDRoleResolved fileBytesSHA-256
15286topology15286_dyn_729.psf17,137,8633e20322b7a5f441eb7d07eec962c4cd17138dd562fa58b7d0a38f3d08ff5434f
17686model17686_dyn_729.pdb7,268,12991ae6058c6be2a837bcaa0ba14472d91f35d3b99da9c873bb246a15c2e456925
15290parameters15290_prm_729.prm1,186,094f6df09414454e50a22da48908d4680b9c7b695223cd8da6a030425f9294502e9
17687protocol/start files17687_oth_729.tar.gz13,162,376c333d83cdfd891fa50bf2acf1e29280d837da5ad47aa5f017b613bd656f07642
FieldSource-faithful value
Fixturegpcrmd-729-beta1-5f8u-cyanopindolol
Atoms92,001
Selectionsreceptor 5,195; ligand 43; lipid 26,800; water 59,832; ions 131
Cellorthorhombic, 87.17032 × 87.15242 × 118.58050 Å
Ensemblefixed-cell Langevin NVT
Selected source replicaterep_1 restart coordinates, velocities, and cell
Temperature / friction310 K / 0.10 ps⁻¹
Timestep4 fs
Source production length125,000,000 steps; trajectory interval 50,000 steps
Constraints78,896
HMR58,952 bonded hydrogens repartitioned to 4.032 Da
Nonbonded9 Å cutoff; switching from 7.5 Å
PMEα = 0.29202899 Å⁻¹; mesh 78 × 78 × 108; order 5
Charge policysource-neutral; reject_non_neutral; tolerance 1 × 10⁻⁴ e

Source topology and prepared arrays agree on 91,734 bonds, 80,726 angles, 109,071 expanded proper terms, 1,214 harmonic impropers, 49,223 Urey-Bradley terms, 317 CMAP terms, 237,483 nonbonded-exception records, and five applicable NBFIX overrides. The prepared manifest hash is 13b69589e48dc72abfba59232ac1a2ff913f047d892c5a2f8712c3501d93eeac. [prepared]

The analytic PME minimum in the source derivation was 78 × 78 × 106. Both independent builders round dimensions to the OpenCL/VkFFT-supported 2/3/5/7/11/13 factor set, yielding 78 × 78 × 108. OpenMM resolved exactly that declared grid. [prepared] [parity]

OpenMM was built independently from the GPCRmd PSF, PDB, parameter, and start files. It did not consume MLX force objects. The canonical manifests matched particles, coordinates, masses, charges/LJ data, cell, CHARMM terms, constraints/HMR, exclusions/exceptions, switching, and PME semantics before metrics were accepted. [parity]

CheckMeasuredGateResult
Total-energy error per atom1.49744 × 10⁻⁷ kJ/mol/atom≤ 5 × 10⁻³pass
Relative total-energy error1.57880 × 10⁻⁸≤ 5 × 10⁻⁵pass
Complete-force RMS error0.085565 kJ/mol/nm≤ 3pass
Complete-force maximum error11.6013 kJ/mol/nm≤ 12pass

The complete force arrays each have shape (92001, 3). Every reported component-energy bound passed. The maximum force error is inside, but close to, the fixed 12 kJ/mol/nm gate; the bound was not relaxed. [parity]

Reference execution used OpenMM 8.5.1.dev-f7fa0c2, OpenCL single precision, and Apple M5 Max. MLX used version 0.31.2, float32, Metal GPU device 0, and backend mlx_fft_cic. [parity]

Bounded source-protocol runtime and restart

Section titled “Bounded source-protocol runtime and restart”

The runtime used source-derived 4 fs, 310 K, 0.10 ps⁻¹ fixed-cell NVT. Prepared velocities were projected onto the constraints without temperature rescaling. Twenty constraint iterations were used for this real-system row. [runtime]

PhaseStep rangeTime rangeStepsRun wall timeMax constraint residual
Warmup0 → 10 → 0.004 ps136.3446 s3.3855 × 10⁻⁵ Å
Measured1 → 30.004 → 0.012 ps238.2100 s5.5552 × 10⁻⁵ Å
Restart3 → 40.012 → 0.016 ps135.6137 s4.9829 × 10⁻⁵ Å

Measured throughput was 0.052342 steps/s, equivalent to 2.09369 × 10⁻⁴ ps/s. No OpenMM runtime ratio is reported because no matching OpenMM NVT runtime manifest was produced. [runtime]

Every phase reported finite positions, velocities, potential/kinetic/total energy, forces, temperature, and constraint diagnostics. The fixed cell, HMR state, thermostat RNG step offset, lazy topology, neighbor policy, and PME-plan metadata were preserved. Trajectory and checkpoint files reloaded, and restart continued without minimization or equilibration. [runtime]

Each phase built one PME plan and recorded reuse. The runtime used mlx_cell_blocks/NeighborBlocks, shared LJ and direct-space PME neighbors, and no dense or tiled fallback. The process-wide cumulative RSS high-water mark reported by ru_maxrss rose from 25,479 MB in warmup to 39,538 MB after restart; these are not phase-local allocation measurements. [runtime]

The profiler used the passing parity report and prepared artifact as explicit inputs, then rechecked atom count, manifest integrity, PME configuration, lazy topology, shared NeighborBlocks, and no-fallback policy before timing. It ran one warmup plus two measured evaluations. Values are medians from [profile].

Profile stageMedian time
Direct-space Coulomb0.468097 s
Reciprocal space0.043819 s
Assignment/interpolation0.058718 s
FFT/influence0.002230 s
Corrections0.002716 s
Synchronization probe0.000371 s
PME Coulomb total0.524680 s
Production nonbonded total1.141916 s

Assignment/interpolation and FFT/influence are independently timed diagnostic decompositions of reciprocal work. They must not be added to the separately timed reciprocal-space row to reconstruct wall time. The profile recorded one plan build, nine reuses, 8.763 GB peak MLX memory, 12.766 GB peak process RSS, and no runtime fallback. The dense O(N²) reference lane was intentionally disabled at this atom count; the production direct path remained block-neighbor based. [profile]

The regenerated blocker matrix marks all in-boundary categories passed. The npt_barostat category is an explicit anti-goal rather than a hidden blocker. The stale topology_terms and electrostatics_pme observations are not reused. [matrix]

The evidence supports this statement only:

MLX/Metal can prepare, parity-check, execute, save, and restart the fixed-cell orthorhombic NVT GPCRmd 729 workload for this bounded four-step protocol.

It does not support a claim of production-length stability, production NPT, cell-changing dynamics, analytic PME virial, triclinic PME, general GPCRmd coverage, or broad membrane-production readiness.

Terminal window
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python \
scripts/acquire_gpcrmd_fixture.py \
--target-id gpcrmd-729-beta1-5f8u-cyanopindolol \
--cache notebooks/ligand-receptor-motion/data/gpcrmd-cache/729 \
--manifest results/gpcrmd-pme-runtime-closure/source/fixture-manifest.json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python \
-m mlx_atomistic.prep.gpcrmd prepare \
--target-id gpcrmd-729-beta1-5f8u-cyanopindolol \
--cache notebooks/ligand-receptor-motion/data/gpcrmd-cache/729 \
--source-manifest results/gpcrmd-pme-runtime-closure/source/fixture-manifest.json \
--out results/gpcrmd-pme-runtime-closure/prepared \
--report results/gpcrmd-pme-runtime-closure/preparation-report.json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run --with openmm python \
scripts/run_gpcrmd_pme_parity.py \
--source-manifest results/gpcrmd-pme-runtime-closure/source/fixture-manifest.json \
--cache notebooks/ligand-receptor-motion/data/gpcrmd-cache/729 \
--mlx-prepared results/gpcrmd-pme-runtime-closure/prepared \
--platform OpenCL --out results/gpcrmd-pme-runtime-closure/parity
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python \
-m mlx_atomistic.prep.gpcrmd_benchmark \
--target-id gpcrmd-729-beta1-5f8u-cyanopindolol \
--prepared results/gpcrmd-pme-runtime-closure/prepared \
--protocol-manifest \
results/gpcrmd-pme-runtime-closure/prepared/mlx-workload-manifest.json \
--warmups 1 --measured-steps 2 --checkpoint-restart \
--out results/gpcrmd-pme-runtime-closure/runtime --force --json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python \
-m mlx_atomistic.benchmarks.pme_performance \
--parity-report \
results/gpcrmd-pme-runtime-closure/parity/gpcrmd_pme_parity_report.json \
--prepared results/gpcrmd-pme-runtime-closure/prepared \
--iterations 2 --warmups 1 \
--out-dir results/gpcrmd-pme-runtime-closure/profile --json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python \
scripts/build_production_md_blocker_matrix.py \
--candidate results/gpcrmd-pme-runtime-closure/source/fixture-manifest.json \
--openmm \
results/gpcrmd-pme-runtime-closure/parity/gpcrmd_pme_parity_report.json \
--mlx results/gpcrmd-pme-runtime-closure/runtime/gpcrmd_performance.json \
--out results/gpcrmd-pme-runtime-closure/blocker-matrix.json \
--report results/gpcrmd-pme-runtime-closure/final-readiness-report.md

Acquisition needs access to the official GPCRmd downloads. The parity and live runtime/profile commands need the local source/prepared artifacts, Apple Silicon/Metal, and OpenMM OpenCL for the reference evaluation.