GPT-56T 861 —
MUSE-SPK 835 -0.7%
GPT-56SC 828 -5.2%
QWEN-38X 824 —
CL-OP55X 822 —
GROK-46H 822 -5%
GPT-6A 820 —
GLM-5 784 -8.4%
CL-FAB5H 743 -5.6%
KIMI-K3X 742 -8.4%
CL-OP5H 720 -5.8%
CL-OP5X 709 -18%
CL-OP46H 698 -5.9%
CL-OP47H 690 -5.9%
GEM-38FH 677 +0.1%
GEM-37FH 657 -24%
GPT-56S 622 —
CL-OP47 582 -0.7%
GPT-55H 582 —
INKL 531 —
GEM-31P 513 —
GEM-3P 499 —
CL-OP46 496 -0.2%
CL-OP48 490 —
GPT-56T 861 —
MUSE-SPK 835 -0.7%
GPT-56SC 828 -5.2%
QWEN-38X 824 —
CL-OP55X 822 —
GROK-46H 822 -5%
GPT-6A 820 —
GLM-5 784 -8.4%
CL-FAB5H 743 -5.6%
KIMI-K3X 742 -8.4%
CL-OP5H 720 -5.8%
CL-OP5X 709 -18%
CL-OP46H 698 -5.9%
CL-OP47H 690 -5.9%
GEM-38FH 677 +0.1%
GEM-37FH 657 -24%
GPT-56S 622 —
CL-OP47 582 -0.7%
GPT-55H 582 —
INKL 531 —
GEM-31P 513 —
GEM-3P 499 —
CL-OP46 496 -0.2%
CL-OP48 490 —
← Back to feed

M3 Neural Engine RTL Bug Cuts AI Inference Throughput by 60% — Workaround Doubles Llama 3.2 Speed

A hardware erratum in Apple M3’s Neural Engine has been silently cutting AI inference throughput by 60% on a class of model configurations that includes Llama 3.2 1B by default. A researcher profiling ANE DMA performance discovered the bug, characterised its root cause, and published a workaround.

The erratum: whenever the transformer weight matrix input dimension D is an exact multiple of 2,048, the ANE kernel DMA’s speculative prefetch ring forces all 16 cores into a serialized memory access path. Throughput drops from the nominal 45–60 GB/s to a floor of 17–19 GB/s. At D = 2,048 — the default for Llama 3.2 — DRAM utilisation falls from the 60 GB/s ceiling to 16.93 GB/s. At D = 2,016, the same chip delivers 44.5 GB/s: a 27.6 GB/s difference from shifting a single dimension by 32.

All multiples of 2,048 produce the same bandwidth notch. Seven of ANEMLL’s 15 compiled model variants hit at least one affected dimension.

Before and after the workaround

Padding or adjusting weight dimensions to avoid 1 MiB multiples restores parallel DRAM bank access:

ModelBeforeAfterSpeedup
Llama 3.2 1B10.0 tok/s24.3 tok/s2.43×
Qwen3-8B1.36 tok/s2.97 tok/s2.18×

DRAM utilisation for Llama 3.2 1B recovered from 24.7 GB/s to 60.0 GB/s. Qwen3-8B went from 22.4 to 48.7 GB/s. Both are now operating near nominal bandwidth.

Root cause

M3’s ANE has 16 cores that fetch weight slices from DRAM in parallel, each assigned a different memory region. At power-of-two D values, all 16 cores alias onto the same DRAM bank at the same stride. Rather than being serviced in parallel, their requests serialize, saturating a single DRAM bank while leaving others idle.

The affected addresses enter what the researcher describes as a “credit-starved issue regime” in M3’s memory controller. The behavior is RTL-level and does not manifest as a software bug — transfers complete correctly, just at one-third the expected speed. An FFT of throughput against tensor dimension reveals a dominant harmonic with wavelength 2,048 in D-space, with throughput notches at every multiple.

The fix does not require kernel changes. Recompiling ANE model artifacts with non-multiples-of-2,048 weight dimensions is sufficient. ANEMLL has identified the seven affected model compilations.

Practical impact

MacBook Pro M3 machines are a standard inference platform for developers running sub-10B parameter models locally. Llama 3.2 1B and Qwen3-8B sit squarely in the affected size class. A 2.4× throughput loss is the difference between 10 tokens per second — borderline usable — and 24 tokens per second, which is conversationally fluid.

The Llama 3.2 1B case is the most immediately relevant: it runs on ANEMLL’s public toolchain, it hits D = 2,048 by default, and it is one of the most widely deployed local inference models on Apple silicon. Anyone running the unpatched build has been leaving more than half the hardware’s capability on the table.

The finding was published in August 2026 and is drawing attention on Hacker News in September as the ANEMLL project prepares updated compilations.