Apple AMX (Apple Matrix Extension)(アップルエーエムエックス)
Apple M1/M2/M3/M4 に搭載される非公開行列計算アクセラレータ。512bit 幅・FP16 / FP32 / BF16 / INT8 / INT16 対応、Accelerate Framework経由でmacOS の機械学習を加速。
概要
Apple AMX (Apple Matrix Extension) はApple がApple Silicon M1 (2020-11) で初搭載した非公開の行列計算アクセラレータ。Apple は公式には命令セットを公開しないが、リバースエンジニアリング (Dougall Johnson・2021) で詳細解析され、512bit 幅・FP16 / FP32 / BF16 / INT8 / INT16 行列乗算をハードウェア加速する設計が判明。Accelerate Framework (BNNS / vDSP) 経由で活用、macOS / iOS の機械学習推論で5-10倍性能向上。
AMX 主要仕様 (解析推定)
| 項目 | 仕様 |
|---|---|
| ベクトル幅 | 512 bit (X/Y/Z レジスタ) |
| 行列レジスタ | Z レジスタ (32×512 bit = 2KB) |
| 対応精度 | FP16 / FP32 / BF16 / INT8 / INT16 |
| 1コアあたり | 1個 (P-core 共有) |
| 配置 | P-core クラスタ内 |
| 動作 | P-core からCo-Processor 命令で発火 |
AMX 命令 (解析・非公式)
| 命令 | 機能 |
|---|---|
| ldx | X レジスタへロード |
| ldy | Y レジスタへロード |
| extrx / extry | レジスタ抽出 |
| fma | Fused Multiply-Accumulate (行列) |
| matint | 整数行列乗算 |
| matfp | 浮動小数点行列乗算 |
| genlut | Look-up table 生成 |
Apple 公式は非公開
Apple AMX のアセンブリ命令仕様は公式リファレンスマニュアル非公開。Apple の方針:
- ユーザはAccelerate Framework 経由でのみ利用
- macOS / iOS バージョンごとに命令詳細変更可能
- ライブラリ抽象化で互換性維持
- 直接アセンブリ書込はサポート対象外
Apple Silicon M シリーズ AMX 性能
| Mシリーズ | AMX 数 | 推定FP32 性能 |
|---|---|---|
| M1 (8コア・P 4 / E 4) | 1 (P 共有) | 約 2 TFLOPS |
| M1 Pro / Max | 1-2 | 2-4 TFLOPS |
| M1 Ultra | 4 | 8 TFLOPS |
| M2 / M2 Pro / Max | 改良 | 2.5-5 TFLOPS |
| M3 / M4 | 強化 | 3-6 TFLOPS |
| M3 Max | 2 | 6-10 TFLOPS |
Accelerate Framework 活用
#include <Accelerate/Accelerate.h>
// 行列乗算: C = A × B + C
cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans,
M, N, K, 1.0, A, K, B, N, 1.0, C, N);
// 内部的にAMX 利用 (適切なサイズなら)
cblas_sgemm / vDSP_mmul / BNNS 等のBLAS / NN ライブラリ呼出で透過的にAMX が利用される。
llama.cpp 等のローカルLLM
Apple Silicon + llama.cpp (Llama 推論ライブラリ) は Metal / AMX 経由で高速動作。M3 Max で Llama 3.1 8B Q4 量子化を30-50 tok/sec で推論可能、RTX 4090 (PC) と同等水準を低消費電力で達成。
関連用語との違い
- vs Intel AMX: Apple は非公開命令 / Intel は標準公開
- vs Apple Neural Engine (ANE): AMX はCPU 内 / ANE はNPU
- vs ARM SVE2 / NEON: ベクトル (SIMD) / 行列 (AMX)
FAQ
Q1: 直接プログラム可能? A: 非推奨。Apple 非公開・Asahi Linux / dougallj 解析で実験的可能だが、macOS バージョン更新で動作保証なし。
Q2: ANE との違い? A: AMX = CPU内 / ANE = 独立NPU (Apple Neural Engine)。役割分担: AMX = CPU から呼び出し中規模行列 / ANE = 大規模ニューラルネット推論。
Q3: M3 Max は M1 から? A: 改良継続。命令体系類似だが演算ユニット数・スループット向上。Apple は仕様非公開で詳細不明、性能ベンチマークから推定。