Skip to content

M5 Max Reference Engines

This page is the current single-machine reference benchmark map for OpenMM and LAMMPS on the Apple M5 Max host. These are reference-engine results, not mlx_atomistic runtime performance.

FieldValue
Raw manifestresults/m5max-reference/manifest.json
Created2026-06-01T01:40:45Z
HostAppCubics-MacBook-Pro.local
HardwareApple M5 Max, Darwin arm64
OpenMM8.5.1.dev-f7fa0c2, OpenCL platform available
LAMMPS20250722, PKG_GPU=ON, GPU_API=opencl, GPU_PREC=single
Harnessscripts/benchmark_m5max_reference.py
Manifest validationok
Suite statusblocked, because LAMMPS rhodo cannot run with this single-precision OpenCL GPU build

The LAMMPS package metadata and executable path come from the active .venv environment. The harness records and invokes the packaged executable under .venv/lib/python3.13/site-packages/lammps/lmp, so final reproducer commands do not depend on console-script shebang details.

The harness reran the upstream OpenMM benchmark script with OpenCL, single precision, and 30-second timing targets. Raw wrappers and upstream JSON live under results/m5max-reference/openmm/.

CaseUpstream testsStatusWorst-row ns/dayRaw wrapper
DHFRgbsa, rf, pmeok751.19results/m5max-reference/openmm/dhfr.json
ApoA1apoa1rf, apoa1pme, apoa1ljpmeok171.31results/m5max-reference/openmm/apoa1.json
Amber20amber20-cellulose, amber20-stmvok18.01results/m5max-reference/openmm/amber20.json

Detailed committed OpenMM reports remain linked here and were not overwritten by this rerun:

The fresh rerun agrees with the existing story: OpenMM’s OpenCL backend runs the selected named systems on the M5 Max, including the large Amber20 Cellulose and STMV systems, but these numbers are reference ceilings for this repo.

LAMMPS coverage uses the five official top-level inputs from vendors/lammps/bench/. The harness copies each input into results/m5max-reference/lammps/<case>/work/ before running, so vendors/ stays read-only.

CaseStatusAcceleration classLoop time, sRaw wrapper
ljokfull_gpu_opencl0.298473results/m5max-reference/lammps/lj.json
eamokfull_gpu_opencl0.725426results/m5max-reference/lammps/eam.json
chaindiagnosticpartial_gpu_opencl0.544019results/m5max-reference/lammps/chain.json
chutediagnosticcpu_only_diagnostic0.108473results/m5max-reference/lammps/chute.json
rhodoblockedpartial_gpu_openclN/Aresults/m5max-reference/lammps/rhodo.json

chain and chute are not failures of the harness. They are diagnostic because the official inputs do not map fully to /gpu styles in the local LAMMPS OpenCL build. rhodo is a real blocker:

ERROR: PPPM was compiled for double precision floating point but GPU device supports single precision only.

See LAMMPS OpenCL on M5 Max for the per-case style mapping.

The MLX benchmarks in this repo are still development and smoke coverage for the product runtime. They are useful for catching regressions and proving specific code paths, but they are not yet same-workload production MD results against OpenMM or LAMMPS. Keep OpenMM/LAMMPS reference-engine numbers in this page and MLX runtime claims in the MLX benchmark docs.

Run final GPU/OpenCL measurements from a host terminal or an approved outside-sandbox command. Sandboxed sessions can hide GPU devices or trigger Metal/OpenCL cleanup errors.

Terminal window
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python scripts/benchmark_m5max_reference.py environment --json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python scripts/benchmark_m5max_reference.py openmm --dry-run --json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python scripts/benchmark_m5max_reference.py lammps --classify-only --json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python scripts/benchmark_m5max_reference.py run --seconds 30 --json
UV_CACHE_DIR=/tmp/mlx-atomistic-uv-cache uv run python scripts/benchmark_m5max_reference.py validate --manifest results/m5max-reference/manifest.json --json

Amber20 inputs are external and gitignored. For this run, the official Amber20_Benchmark_Suite.tar.gz was downloaded and extracted under results/inputs/Amber20_Benchmark_Suite/.