⏲️

a64fx PMU profiler report tool 作った.

に公開

fapp の a64fx PMU events 結果から CPU 性能解析 report 作るツール作った.
Claude クンにぜんぶやってもらった.

https://github.com/lighttransport/gemm/tree/main/a64fx/preport

簡易ボトルネック解析機能つき.

背景

一応 Excel で profile レポートするのが提供されているけど,
Excel マクロ + Password protected マクロコードというおぞましいもので, 実務ではセキュリティ上あぶなくて使えないし, Excel 持っていないと使えない.

あとは実機でプロファイルしてそのまま ASCII なりで結果を見たい

とりあえず PMU events の説明は https://github.com/fujitsu/A64FX にあるので, Claude クンに計算式とか頑張って考えてもらった.
細かいところで計算間違いあるかもだけど, 主要要素はたぶんあっていると思う!

しくみメモ

PMU で一度に取れるイベント(カウンタ)は 7 個っぽい.
そこでプログラムを最大 17 回実行して, 最大 100+ のイベントを取得する.

1 = 単体
5 = 簡易
11 = 標準
17 = 詳細

pa1(単体)で得られるイベントはこんな感じ.

pa1.csv - FP Operations & L2 Cache

Hex Name Description
0x80c0 FP_SCALE_OPS_SPEC SVE FP operations (scaled)
0x80c1 FP_FIXED_OPS_SPEC SIMD FP operations (fixed)
0x0017 L2D_CACHE_REFILL L2 cache refill
0x0018 L2D_CACHE_WB L2 cache write-back
0x0325 L2D_SWAP_DM L2 swap (demand hits prefetch buffer)
0x0326 L2D_CACHE_MIBMCH_PRF L2 prefetch hits demand buffer
0x0121 EFFECTIVE_INST_SPEC Effective instructions (excl. MOVPRFX)
0x8000 SIMD_INST_RETIRED SIMD instructions retired

あとはこれを読み込んでいい感じにレポートしてあげる.

TODO

  • TOFU や CMG 間のデータ転送レポート

Discussion