source-based technical review

Inside the Apple Neural Engine

A source-based review of Spencer H. Bryngelson's Apple Neural Engine reverse-engineering guide: architecture, performance limits, Core ML boundaries, LLM placement, and caveats.

The Apple Neural Engine is no longer just a black box behind Core ML. Bryngelson’s guide presents a full-stack, reverse-engineered map of the engine’s numerics, program path, compiler behavior, memory system, compression support, performance envelope, firmware protocol, and security boundary. The result is an unusually detailed systems artifact: part architecture note, part performance paper, part ABI guide, and part warning label.

The arXiv record describes the paper as a 302-page reference covering A11 through A18 and M1 through M5 families, with direct measurements on M1 and M5 and claims labeled as measured, decompile-derived, or predicted.1 The PDF itself states that the direct route below Core ML is callable from ordinary user space but remains private, unsupported, and version-fragile; the supported production path remains Core ML.2

Bottom line: the paper is most valuable as a practical model of when the ANE wins and when it does not. The strongest claims are the roofline model, the fp16-plus-wide-accumulator characterization, the operation reachability census, the compression streaming distinction, and the workload placement rules. The most important caveats are private-interface fragility, modeled power measurements, and the need to distinguish measured facts from decompile-derived or predicted cross-generation claims.
M1 roofline slope
~12 fp16 TFLOP/s
overhead-isolated matmul slope
M1 ridge point
~141 FLOP/byte
compute vs. DRAM crossover
M1 dispatch floor
~0.23 ms
small operations pay this first

Why the ANE matters

The ANE is one of the most widely deployed neural accelerators, yet Apple exposes it to third-party software mostly as an implementation detail behind Core ML. Apple’s Core ML materials present a high-level deployment model in which the operating system can use CPU, GPU, and Neural Engine resources to execute models efficiently.3 Apple’s own machine-learning posts also describe Core ML as a hybrid planner that blends CPU, GPU, and ANE execution rather than exposing a public ANE instruction set.4

That abstraction is useful for shipping apps. It hides per-chip quirks, absorbs model-format details, and allows fallback when a graph segment does not run on the engine. It also leaves unanswered questions that matter to compiler authors, performance engineers, and researchers: which operations actually lower to the ANE, what precision is used internally, why some ANE-friendly models run fast while others fall behind the GPU, whether compression reduces bandwidth or merely file size, and how dispatch overhead affects small graphs.

Bryngelson’s paper addresses those questions by moving below the public abstraction. The guide says the ANE is reached through a private runtime/compiler path, then triangulates observations from direct execution, static decompilation, live instrumentation, and compile-and-run probes.2 Companion work on ANEForge presents a Python package that programs the ANE directly through private stack components, again emphasizing that production access remains Core ML and that direct access is a research path rather than a public Apple contract.8

The paper’s evidence model

The paper’s best methodological decision is the separation of evidence types. Many reverse-engineering claims fail because they treat a symbol name, a capability bit, or a compiler parse result as if it proved executable hardware support. This guide uses a stricter definition: a capability counts only after the relevant operation compiles and runs on a target device.

The paper records four main evidence streams: direct private-runtime access, static analysis of private runtime/compiler/driver/firmware binaries, live read-only instrumentation, and compile-and-run probing.2 Appendix E makes the taxonomy explicit: claims are marked as measured on a named generation, decompile-derived from a named binary, or predicted from per-chip tables and not yet confirmed on silicon.2

Evidence typeWhat it can supportRisk
Compile-and-run probingOperation reachability, correctness checks, latency, throughput, and selected numerical behavior.Version-sensitive; dependent on the tested compiler and macOS stack.
Static decompilationCompiler gates, target tables, firmware states, program formats, driver checks, and hidden constants.Strong for binary-visible behavior, weaker for unobserved silicon behavior.
Live instrumentationDispatch paths, power telemetry, counters where available, and runtime state changes.Telemetry may be modeled or incomplete.
Cross-generation predictionLikely behavior on unmeasured chips using decoded per-family tables.Needs explicit labeling to prevent measured facts and predictions from blending.

The measurement-host accounting is subtle. The abstract emphasizes M1 and M5 as direct measurement anchors.1 Appendix E later states that M1/H13 and M5/H17s were the two main measured points, with an A14-class Apple M2/H14 point used where a claim required a middle generation.2 That clarification matters because some compression and operation-gating claims use the A14/M2 point rather than only the two headline silicon anchors.

The architecture model: fixed-function fp16 matrix engine, not a small GPU

The guide’s conceptual model is that the ANE is a fixed-function matrix accelerator with a compiler-managed working set, a private program format, and a host-to-firmware command path. It is not presented as a general programmable GPU, a public SIMD ISA, or a CPU coprocessor. The compiler lowers a graph into an ANE program; the runtime loads and dispatches that program; firmware and driver components manage execution, address translation, and security checks.2

Three architecture ideas are central:

  1. Static graph shape matters. The engine wants concrete shapes and compile-time-visible structure. The direct path does not expose the symbolic-shape route described by the compiler machinery; variable-length workloads generally require padding, bucketing, or separate compiled programs.2
  2. Residency matters. The M1 working-set threshold is reported around 2 MB. Below that level, intermediate values can remain resident; above it, the compiler tiles or streams operands through DRAM.2
  3. Dispatch has a fixed cost. The M1 per-evaluation dispatch floor is reported around 0.23 ms, so tiny operations can be dominated by host/runtime/firmware overhead rather than arithmetic throughput.2

The compiler pipeline described in the paper has four broad phases: graph fusion, hardware legalization, scheduling and task-descriptor partitioning, then memory and DMA optimization.2 This explains why apparently equivalent graphs can have different performance. A convolution followed by bias and activation may become one fused operation; an unsupported reshape or dynamic feature can split a graph or send work off-engine.

Numerics: fp16 products, wider accumulation, and real limits

The paper’s numerical characterization is one of its most useful contributions. The reported datapath uses fp16 inputs and fp16 weights, returns fp16 outputs, and accumulates internally in a wider register. The wide accumulator is supported by cancellation and reduction probes, while the fp16 input/product behavior explains why some transformer projections still lose accuracy even when reductions themselves are wider than fp16.2

The distinction is important. A wide accumulator can preserve many well-conditioned partial sums, which is valuable for convolution, matrix multiply, pooling, and normalization. It does not reverse rounding that has already occurred in fp16 products. Cancellation-heavy down-projections can therefore remain numerically fragile even if the final sum is accumulated in a wider internal representation.

Numerical claimPractical effect
fp16 operands and fp16 outputsModels must tolerate half-precision input, weight, and output grids.
Wide internal accumulatorReductions and many convolution/matmul sums are more stable than naive fp16 accumulation.
fp16 finite maximum 65,504Saturation and overflow checks remain necessary, especially around DMA-side scaling paths.
Activation lookup approximationsNonlinearities such as sigmoid/gelu/swish can have table-approximation error that should be measured against model tolerance.
Cancellation-heavy contractions remain riskySome transformer projections may need GPU/CPU placement, reformulation, or separate accuracy checks.

The paper lists several exact constants, including fp16 maximum finite magnitude 65,504, a width-slice crop-DMA gain of 16, a width-slice finite ceiling of 4,094, and activation-table error figures.2 These details make the guide more than a performance note: it becomes a set of numerical guardrails for anyone attempting ANE-targeted graph construction.

Operation reachability: capability bits are not enough

The operation-surface section distinguishes operations that are actually reachable from operations that merely appear in hardware tables, frontend validators, or framework-level descriptions. According to the guide, core perception and encoder primitives are native from the M1 generation onward: two-dimensional convolution and variants, matrix multiply, fused attention, normalization, pooling, elementwise arithmetic, activation tables, and data-movement operations.2

The hard-negative list is just as useful. The paper reports no ANE path on current families for reduce_prod, scatter variants, mod, one_hot, non_zero, shape, recurrent cells, inverse and hyperbolic trigonometric functions, and several other operations. Those operations must be reformulated, compiled off-engine, or placed on CPU/GPU.2

Three-dimensional convolution illustrates the paper’s stricter evidence rule. It is described as visible in capability machinery but not reachable through backend lowering; the engine does not actually run it on the tested direct path.2 That finding is valuable because it prevents a common category error: treating parser acceptance or capability attestation as proof of executable hardware support.

Practical translation: ANE targeting is not a boolean property of a model. It is a per-operation, per-shape, per-chip, per-compiler question. A graph may contain mostly ANE-friendly work and still lose performance if a small number of operations force inter-engine transfers or segment breaks.

The direct route below Core ML

The paper describes a direct dispatch path through private Espresso/e5rt interfaces: construct a graph, compile it into the ANE program format, load the resulting program, bind buffers, and dispatch the work. For production use, the route is undocumented, unsupported, private, and version-fragile.2

The direct route does not mean arbitrary instruction injection. The kernel driver reportedly verifies submitted programs before firmware execution using a program signature, vnode trustcache validation, and client code-signing identity checks. A hand-built or self-compiled program is rejected unless it comes through the system daemon’s compile-and-sign route.2

graph description
          ↓
        compiler / daemon accepted representation
          ↓
        signed ANE program package
          ↓
        private runtime load + buffer binding
          ↓
        firmware-dispatched execution on the engine

This boundary is one reason the work is credible but not directly productizable. It gives researchers a way to measure the engine more precisely than Core ML placement allows, while Apple’s public support and App Store path remain centered on Core ML.

The roofline: two ceilings, one working-set limit, one dispatch floor

The paper’s most actionable performance model is a roofline with four control quantities: compute throughput, DRAM bandwidth, on-chip working-set threshold, and fixed dispatch cost. The M1 constants are reported as an overhead-isolated matmul slope near 12 fp16 TFLOP/s, DRAM bandwidth near 85 GB/s, a ridge point near 141 FLOP/byte, a 2 MB on-chip working-set threshold, and a dispatch floor near 0.23 ms.2

Simplified ANE roofline A simplified roofline chart showing bandwidth-bound workloads below the ridge point and compute-bound workloads above it. Arithmetic intensity (FLOP/byte) Attainable throughput ~141 FLOP/byte Bandwidth-bound weight streaming, decode, tiny ops Compute-bound convolution, resident matmul, encoders ~12 fp16 TFLOP/s slope

Simplified roofline interpretation derived from the M1 constants reported in the guide.2

The paper follows the standard roofline tradition: attainable performance is bounded by the lower of the compute roof and the product of arithmetic intensity and memory bandwidth. The original Roofline model was introduced as a way to relate floating-point throughput, operational intensity, and memory bandwidth in a simple visual performance envelope.7 Bryngelson adapts the model to a fixed-function neural accelerator by adding the ANE-specific working-set and dispatch-floor constraints.

M1/H13 constantReported valueInterpretation
Compute roof, overhead-isolated matmul slope~12 fp16 TFLOP/sUseful as a slope/ceiling, not as a generic end-to-end peak.
Saturating large matmul~4.8 fp16 TFLOP/sLower than the slope once real streaming and program costs apply.
Convolution end-to-end ceiling~1.8 TFLOP/sReported ceiling for measured convolution paths.
DRAM bandwidth roof~85 GB/sMemory-bound workloads cannot use compute throughput fully.
Ridge point~141 FLOP/byteAbove this, compute tends to dominate; below it, bandwidth tends to dominate.
Working-set threshold~2 MBAbove this, operands stream and locality deteriorates.
Per-dispatch floor~0.23 msSmall operations pay overhead before useful compute dominates.

The M5 section reports scaling rather than a new programming model: matmul-slope peak around 19.6 fp16 TFLOP/s, single-program matmul around 9.5 fp16 TFLOP/s, convolution peak around 14.3 fp16 TFLOP/s, a working-set threshold around 4.72 MB, and DRAM weight-stream bandwidth around 145 GB/s.2 The key message is that the engine scales, but the design rules remain recognizable.

Compression: storage savings are not the same as bandwidth savings

The compression chapter is important because it separates two ideas that are often conflated. A compressed model file is not automatically a faster model. Speed improves when the compressed representation streams through the hardware in compressed form; if the compiler expands it to dense fp16 before the DRAM movement, the bandwidth benefit disappears.

Weight formM1/H13 behaviorLater-family behavior reported in the paperWhy it matters
int8 affineFolds to dense fp16; no stream gain on M1.Streams from A14/M2 onward; reported M5 speedups around 1.6–1.8× on bandwidth-bound layers.int8 does not imply faster M1 execution if expansion occurs before streaming.
int4 lookup-tableStreams natively; reported M1 bandwidth-bound speedup around 2.37×.Streams across listed families; M5 speedups around 1.6–1.8×.Four-bit indices reduce streamed bytes directly.
Structured sparsityStreams natively; reported M1 speedup around 1.55–1.64× at about 0.43× dense bytes.Streams across listed families.Useful when sparsity is structured enough for the engine’s format.
Blockwise affineFolds on M1; no stream gain.Reported as streaming on later families, including M5.Can reduce quantization error relative to coarser affine forms, but only helps speed when it streams.

The M1 result is the practical surprise: int4 lookup-table weights and structured sparsity stream natively, while int8 and blockwise affine fold to dense fp16 and therefore do not provide a stream-bandwidth gain on that generation.2 This explains why model-format compression and runtime acceleration have to be measured separately.

Where the ANE wins, and where it loses

The guide’s performance conclusions are not boosterish. It does not claim that an NPU is automatically best for all machine-learning work. The reported model is more specific: the ANE excels when graph work is static, fused, compute-heavy, resident, and built from supported primitives. It loses when work is tiny, dynamic, bandwidth-bound, or dominated by dispatch overhead.

ANE-favored

  • Convolution stacks
  • Vision backbones
  • Low-to-moderate-batch encoders
  • Short-sequence attention
  • Fused static preprocessing
  • Resident, mid-size matmul

GPU-favored

  • Large square GEMM
  • Long-sequence attention
  • Autoregressive decode
  • High-batch encoder serving beyond crossover
  • Large bandwidth-bound layers

CPU or fallback

  • Tiny ops below dispatch floor
  • Unsupported operations
  • Dynamic control flow
  • Variable-sized outputs
  • Shape-heavy graph logic

The paper reports that a single 3×3 convolution at 256 channels runs around 3.8× faster and 9× more energy-efficient than the same chip’s GPU, and that a 16-layer convolution stack reaches a 14.5× efficiency advantage on M1.2 For encoder serving, the reported batch threshold is roughly 23 for a single-sentence encoder and roughly 6 for a self-attention block; beyond those thresholds, GPU throughput can overtake.2

Apple’s public ANE guidance for transformers is directionally consistent with this: Apple’s transformer post emphasizes ANE-optimized implementations to reduce latency and memory use, while its vision-transformer post discusses architecture and layout choices such as working around tensor-rank limits and using NHWC layout for efficient window partition/reverse operations.45 The reverse-engineering guide adds the lower-level reason: the engine rewards fused, resident, statically shaped dataflow.

Energy efficiency and the instrumentation caveat

The reported energy picture is one of the paper’s most striking results. Across measured classes, the ANE is described as drawing a few watts where the GPU can draw tens of watts. The M1 convolution-stack comparison reports 2063 GFLOP/s/W for the engine versus 142 GFLOP/s/W for the GPU. The M5 comparison reports 2289 GFLOP/s/W for the engine versus 175 GFLOP/s/W for the GPU.2

The caveat is measurement basis. The methodology section says per-rail power figures come from powermetrics, a system power estimator, rather than an independently validated wall-meter reading.2 The ML.ENERGY Zeus Apple Silicon project similarly notes that IOReport energy values are believed to be model-based estimates derived from utilization, frequency, and voltage rather than direct power sensor readings, and that Apple’s powermetrics man page warns reported values may be inaccurate.10

That caveat does not make the results useless. A large, consistent power gap across similar measurement methods is still informative. It does mean that exact energy ratios should be quoted with the instrumentation limitation attached.

LLMs: prefill and encoders fit; autoregressive decode does not

The LLM case study is a corrective to a common assumption: “neural engine” does not mean “best processor for every neural network phase.” The paper argues that autoregressive decode is both bandwidth-bound and dispatch-bound. A single-token decode step streams model weights with low arithmetic intensity, while the layer stack issues many small dispatches that each pay the fixed per-evaluation floor.2

The reported numbers are explicit: at batch 16, GPU decode runs about 2.7× faster and about 4.6× more energy-efficient than the ANE path; int8-hybrid decode reaches about 0.99× the fp16 rate because the step is dispatch-bound rather than weight-bandwidth-bound.2 Apple’s own Llama 3.1 Core ML article also targets the GPU for the example M1 Max deployment, explaining that LLMs are often memory-bandwidth constrained and that the GPU offered the best compute/bandwidth combination for that case.6

LLM phaseBetter fitReason
Prompt prefillANE can be usefulLarge static forward work can raise arithmetic intensity and amortize dispatch.
Encoder / embedding modelANE at low-to-moderate batchWhole-sequence processing uses compute-heavy matmul, normalization, and attention blocks.
Vision front end in multimodal modelANE-favoredConvolution and vision-style encoders are among the strongest measured workloads.
Autoregressive decodeGPU-favoredWeight streaming and many small dispatches dominate; ANE compute throughput is not the bottleneck.

The practical placement rule is therefore hybrid: put prefill, encoders, and vision front ends on the ANE where they fit the static fused model; put token-by-token decode on the GPU unless a future compiler/runtime path removes the dispatch and bandwidth bottlenecks.

Training and scientific computing: possible, but bounded

The training chapter is interesting because it demonstrates that “inference accelerator” is not the same as “inference-only arithmetic.” The paper reports no native backward operation, but expresses forward, backward, and optimizer updates as ordinary graph operations, keeping optimizer state resident across steps. A small convolutional network reportedly trains to 0.9080 final test accuracy on M1 and 0.9070 on M5 after the described run.2

This should be read as a capability demonstration, not as proof that ANE training is broadly competitive. Larger models face graph-size limits, compile latency, optimizer-state pressure, and fp16 conditioning constraints. Related contemporary work, such as Orion, also explores direct ANE execution and training/inference paths for LLM workloads. This remains an active reverse-engineering and systems research area rather than a stable public development surface.11

The scientific-computing chapter makes a similar point. Fixed-trip-count loops can be unrolled into static graphs: stencils, explicit integration, some series expansions, and small dense factorizations can fit. Data-dependent trip counts, adaptive output sizes, large factorizations, and ill-conditioned fp16 problems remain poor fits. The paper reports small dense factorization and eigensolver limits around n ≈ 20–32 for some routines, while fixed iterative solvers can run larger when the matrix is embedded as a constant weight.2

System internals and security

The back half of the guide reads like a systems reference: compiler internals, program/container format, hardware-abstraction-layer gates, compression internals, hidden layers, kernel driver ABI, address translation, firmware scheduling, command protocol, power behavior, security, and telemetry.

The security model described by the paper places most trust enforcement in the kernel driver, not in the firmware. The driver checks program signatures, trustcache status, and code-signing identity before the work reaches the engine; the firmware then performs structural checks such as bounds and overlap checks.2

The paper also reports a cross-process timing and occupancy side channel. On M1, contention between processes leaks co-tenant presence and coarse duty cycle at roughly 20–50 bit/s, while data isolation held in the reported concurrent-program checks: 9,000 of 9,000 checks were correct with no evidence of outputs reflecting another process’s inputs or weights.2 That is a measured confidentiality caveat, not a reported arbitrary data leak.

What the paper gets right

It uses multiple independent evidence streams

The strongest feature of the work is triangulation. Reverse-engineering claims are supported through combinations of compile/run behavior, measured latency and correctness, binary-derived constants, and live instrumentation. This is especially important for a private accelerator where no public ISA or driver contract exists.

It separates reachability from appearance

The guide repeatedly distinguishes “recognized by a frontend,” “present in a table,” “accepted by a validator,” and “actually lowered and run on the engine.” That discipline is the reason the operation tables are useful.

It explains failures, not just wins

The best performance sections are the ones that explain why the ANE loses. Tiny operations fall below the dispatch floor. Large GEMM and long-sequence attention can become GPU territory. Autoregressive decode is bandwidth- and dispatch-bound. These negative results make the positive results more credible.

It turns optimization into a cost model

The article’s practical rules fall out of the model: fuse small operations, keep intermediate working sets resident, increase arithmetic intensity, avoid unnecessary inter-engine transfers, and verify compression streaming rather than assuming it.

Main caveats

Private-interface fragility

The methodology says the path calls private Apple framework symbols tied to ANECompiler 9.509.0 and that macOS updates can break the build or dispatch path.2 This is not a small detail. It defines the boundary between research utility and production suitability.

Energy measurements need independent validation

The reported energy ratios are large, but they depend on modeled system telemetry rather than independent wall-meter validation.2 Future work would be stronger with a limited external power sanity check, even if per-rail attribution still requires system telemetry.

Measured, decompiled, and predicted facts can blur

The paper makes a serious effort to label provenance, especially in Appendix E. Even so, the density and breadth of the text make it easy for readers to quote a predicted or decompile-derived family-wide claim as if it were measured on every chip. A front-loaded “claim matrix” would make the guide easier to cite accurately.

Headline TFLOP/s values need careful wording

The M1 ~12 fp16 TFLOP/s number is an overhead-isolated slope, while other tables report lower single-program and convolution ceilings.2 A reader quoting only the largest number can overstate typical end-to-end throughput.

The work is too large for normal paper review

At 302 pages, the guide is closer to a reference manual than a conventional paper. The breadth is valuable, but auditability suffers. A shorter companion paper focused on methodology, numerics, roofline, operation reachability, and workload placement would make the central claims easier to review.

Practical implications

For production Core ML deployment

The public path remains Core ML. Apple’s developer-facing model is to convert and deploy models through Core ML, allowing the system to use CPU, GPU, and Neural Engine resources as appropriate.3 The reverse-engineering guide is still useful for production teams because it explains why Core ML placement may behave the way it does. ANE-friendly models tend to have static shapes, supported primitives, fused operator patterns, moderate working sets, and layout choices that avoid unnecessary movement.

For researchers and compiler authors

The direct route enables better measurement and experimentation, but every result needs compiler-version and OS-version provenance. A reproducible ANE experiment should record the chip, macOS version, ANECompiler version, graph shapes, operation list, precision, compression form, and whether energy figures come from modeled telemetry.

For model designers

The design rules are concise:

  1. Use static shapes where possible.
  2. Fuse small operations to pay the dispatch floor once.
  3. Keep intermediate working sets below the on-chip threshold.
  4. Prefer supported convolution, matmul, normalization, pooling, elementwise, and activation patterns.
  5. Measure numerical error for cancellation-heavy fp16 contractions.
  6. Verify whether compression streams on the target chip.
  7. Place decode-heavy LLM work on the GPU unless measurements prove otherwise.

Verdict

Bryngelson’s guide is a high-value technical reference for Apple Neural Engine architecture and performance. Its strongest contributions are the ANE roofline model, the fp16/wide-accumulator numerical characterization, the distinction between advertised and reachable operations, the compression streaming table, and the workload-placement logic that separates convolution and encoder wins from autoregressive decode losses.

The correct way to cite the work is with qualifiers. M1 and M5 measurements should be treated as strong evidence for those targets under the tested compiler/runtime stack. M2/A14 middle-generation claims should be quoted only where the paper says they were measured. Cross-generation claims derived from tables should remain labeled as decompile-derived or predicted unless the paper reports silicon confirmation. Energy-efficiency claims should include the modeled-power caveat.

The larger implication is that NPUs are not magic. The ANE is powerful because it is specialized: fixed-function, static, low-power, and efficient for the right graph shapes. The same specialization creates the limits. The paper is valuable precisely because it maps both sides.

Sources

  1. Spencer H. Bryngelson, “Apple Neural Engine: Architecture, Programming, and Performance,” arXiv record, submitted 21 June 2026. https://arxiv.org/abs/2606.22283
  2. Spencer H. Bryngelson, “Apple Neural Engine: Architecture, Programming, and Performance,” arXiv PDF, version 1, 302 pages, June 2026. https://arxiv.org/pdf/2606.22283
  3. Apple Developer Documentation, “Core ML” and “MLComputeUnits.” Core ML documentation; MLComputeUnits documentation
  4. Apple Machine Learning Research, “Deploying Transformers on the Apple Neural Engine,” 6 June 2022. https://machinelearning.apple.com/research/neural-engine-transformers
  5. Apple Machine Learning Research, “Deploying Attention-Based Vision Transformers to Apple Neural Engine,” 5 January 2024. https://machinelearning.apple.com/research/vision-transformers
  6. Apple Machine Learning Research, “On Device Llama 3.1 with Core ML,” 1 November 2024. https://machinelearning.apple.com/research/core-ml-on-device-llama
  7. Samuel Williams, Andrew Waterman, and David Patterson, “Roofline: An Insightful Visual Performance Model for Multicore Architectures,” Communications of the ACM, 2009. https://dl.acm.org/doi/10.1145/1498765.1498785
  8. Spencer H. Bryngelson, “ANEForge: Python for direct computation on the Apple Neural Engine,” arXiv:2606.17090, 2026. https://arxiv.org/abs/2606.17090
  9. ANEForge project page. https://aneforge.com/
  10. ML.ENERGY, “zeus-apple-silicon,” GitHub repository notes on IOReport and Apple Silicon energy counters. https://github.com/ml-energy/zeus-apple-silicon
  11. Ramchand Kumaresan, “Orion: Characterizing and Programming Apple’s Neural Engine for LLM Training and Inference,” arXiv:2603.06728, 2026. https://arxiv.org/abs/2603.06728

This article is an independent synthesis and review. Apple, Core ML, Apple silicon, and Apple Neural Engine are trademarks of Apple Inc. The reviewed paper states that it is independent and not affiliated with, authorized by, or endorsed by Apple Inc.