CPU
初級

Intel AMX(インテルエーエムエックス)

行列演算を高速化するIntelの新しいアクセラレータ拡張命令

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
CPU
プロセッサ
自作PC
初心者向け

Intel AMX(Advanced Matrix Extensions)は、Sapphire Rapids世代のXeonプロセッサから搭載された、AI/MLワークロードの行列演算を劇的に高速化する専用アクセラレータです。タイルと呼ばれる2次元レジスタを使用して大規模な行列演算を効率的に実行します。

アーキテクチャ

従来のSIMD: 1次元ベクトル演算
AMX: 2次元タイル演算

タイルレジスタ:
- 8個のタイル(tmm0-tmm7)
- 各タイル: 最大1KB(16×64バイト)
- 総容量: 8KB

対応データ型

型精度用途パフォーマンス
INT88bit整数推論最高
BF16Brain Float16学習/推論高
FP16半精度浮動小数点将来対応-

理論性能

Xeon Platinum 8380(40コア):
AVX-512 VNNI: 5.3 TOPS(INT8)
AMX INT8: 42.6 TOPS(8倍)
AMX BF16: 21.3 TFLOPS

実アプリケーション

ResNet-50推論(バッチサイズ64):
AVX-512: 1,200 images/sec
AMX: 4,800 images/sec(4倍)

BERT-Large推論:
AVX-512: 50 sequences/sec
AMX: 180 sequences/sec(3.6倍)

基本的な使い方

#include <immintrin.h>
#include <amxintrin.h>

// タイル設定
struct tile_config {
    uint8_t palette_id;
    uint8_t start_row;
    uint8_t reserved[14];
    uint16_t colsb[8];
    uint8_t rows[8];
};

// AMXを使った行列乗算
void amx_gemm(int8_t* A, int8_t* B, int32_t* C,
              int M, int N, int K) {
    // タイル設定
    tile_config cfg = {0};
    cfg.palette_id = 1;
    cfg.rows[0] = M;
    cfg.colsb[0] = K;
    cfg.rows[1] = K;
    cfg.colsb[1] = N * 4; // INT32は4バイト
    cfg.rows[2] = M;
    cfg.colsb[2] = N * 4;

    _tile_loadconfig(&cfg);

    // タイルロード
    _tile_loadd(0, A, K);     // tmm0 = A
    _tile_loadd(1, B, N*4);   // tmm1 = B
    _tile_zero(2);            // tmm2 = 0

    // 行列乗算
    _tile_dpbssd(2, 0, 1);    // tmm2 += tmm0 * tmm1

    // 結果ストア
    _tile_stored(2, C, N*4);

    // リリース
    _tile_release();
}

PyTorchでの活用

import torch
import intel_extension_for_pytorch as ipex

# AMX自動活用
model = model.to(memory_format=torch.channels_last)
model = ipex.optimize(model, dtype=torch.bfloat16)

# 推論実行(AMXが自動的に使用される)
with torch.no_grad():
    with torch.cpu.amp.autocast():
        output = model(input)

ハードウェア

対応CPU:
- Intel Xeon Scalable 第4世代(Sapphire Rapids)
- Intel Xeon Max シリーズ
- 将来のコンシューマCPU(未定)

必要BIOS設定:
- AMX: Enabled
- TME: Enabledが推奨

ソフトウェア

OS要件:
- Linux: カーネル5.16以降
- Windows: Server 2022以降

ライブラリ:
- Intel oneAPI 2022.2以降
- GCC 11以降
- LLVM 13以降

タイルサイズ選択

推奨サイズ(INT8):
- M=16, N=64, K=64: 最大効率
- M=32, N=32, K=32: バランス型

メモリアライメント:
- 64バイト境界必須
- できれば4KB境界

パフォーマンスチューニング

// 良い例: タイルサイズに合わせたブロッキング
for (int i = 0; i < M; i += 16) {
    for (int j = 0; j < N; j += 64) {
        for (int k = 0; k < K; k += 64) {
            // AMX命令でブロック処理
        }
    }
}

// キャッシュ最適化
#pragma omp parallel for
for (int tile = 0; tile < num_tiles; tile++) {
    process_tile_with_amx(tile);
}

推論サーバー

構成例:
- Xeon 8380 × 2ソケット
- メモリ: 512GB
- 用途: リアルタイムAI推論

性能:
- レイテンシ: 5ms以下
- スループット: 10,000 req/sec
- 電力効率: 4倍向上

エッジAI

将来の展開:
- 組み込みXeon D
- 低電力版AMX
- リアルタイム画像処理

現在の制限

  1. コンテキストスイッチ: オーバーヘッド大
  2. 仮想化: 限定的サポート
  3. 小行列: オーバーヘッドで逆に遅い
  4. メモリ帯域: ボトルネックになりやすい

推奨しない用途

不適切:
- 小規模行列(32×32以下)
- スパース行列
- 頻繁なカーネル切り替え
- リアルタイムOS環境
技術提供元強み弱み
AMXIntel CPU汎用性、低レイテンシGPUより低速
Tensor CoreNVIDIA GPU最高性能高価、高消費電力
TPUGoogle大規模学習限定的アクセス
NPUVarious低消費電力柔軟性低い

ロードマップ

現在: INT8, BF16
次世代: FP16追加
将来:
- より大きなタイル
- 新データ型(FP8等)
- コンシューマCPU搭載

### エコシステム
- **フレームワーク統合**: TensorFlow, PyTorch完全対応
- **コンパイラ最適化**: 自動AMX活用
- **ライブラリ**: BLAS/LAPACK AMX版

Intel AMXは、CPUでのAI処理を大幅に高速化する画期的な技術です。適切なワークロードに対しては、GPUに匹敵する性能を低消費電力で実現できる可能性を秘めています。
この記事について
カテゴリーCPU
難易度初級
作成日2025/7/16