プロファイリングツール実践ガイド

このページは、2026-06-05の勉強会でチームが整理した「用途別プロファイラ・トレースツールの全体像」をまとめたものです。 個々のツールの公式情報は参考文献を参照してください。

これは何か

性能解析ツールは、何をどの粒度で測りたいかによって使い分けます。 ここでは、抽象度(マクロ/ミドル/ミクロ)と対象レイヤ(CPU/MPI/OpenMP/GPU/メモリ)で整理します。

大局から局所へ:3つの抽象度

抽象度計測オーバーヘッド手法用途ツール例
高(マクロ)サンプリング、全体傾向の俯瞰CPU/GPU/通信の「どこ」が遅いか切り分けLinaro MAP、Nsight Systems、mpiP、IPM
中(ミドル)関数単位のコールグラフ、MPI待機時間、メモリ推移関数特定、並列インバランスの発見Score-P、TAU、HPCToolkit、Massif
低(ミクロ)インストルメンテーション、詳細トレース、HWイベント行レベルの原因解明(cache miss、依存関係)Scalasca(trace)、Nsight Compute、Valgrind、ftrace

レイヤ別の代表ツール

CPU(計算密度・メモリアクセス)

アプローチツール特徴
サンプリング(低負荷・推奨)perfLinux標準。HWカウンタ(PMU)を読む。perf c2cでfalse sharing(偽共有)も検出
サンプリングIntel VTune ProfilerEBSでcache missをソース行へ直接マッピング
サンプリングLinux ftraceカーネルレベルの挙動(スケジューリング遅延・割り込み)を追跡
インストルメンテーション(高負荷)Callgrind(Valgrind)正確な命令数とコールグラフを生成。Cachegrindでcacheも模擬

gprofは関数プローブのオーバーヘッドが大きく、現代のHPCでは非推奨とされています。

MPI(通信・同期のオーバーヘッド)

アプリが「計算」しているのか「待機」しているのかを切り分けます。

ツール特徴
mpiP極めて軽量。関数ごとの時間・通信量をテキストサマリで出力。最初の一手
IPMメッセージサイズごとの通信量・通信トポロジを低負荷で把握
Score-PHPC標準の計測インフラ。CUBE4形式で出力し後続解析へ繋ぐハブ
Scalasca待機状態(wait states)を定量化し、通信ボトルネックを特定
TAUMPI + OpenMP + GPUのハイブリッド環境を統合プロファイル
HPCToolkitMPIとCPU HWカウンタを紐づけた統計プロファイル

MPIトレース・タイムライン可視化

「なぜ・いつ・誰のせいで待機したか」を時系列で追います。

ツール特徴
VampirScore-PのOTF2トレースを読み、大規模ノードのタイムラインを可視化
Cubeメトリクス・コールツリー・システムの3軸で階層的にボトルネック特定
Intel Trace Analyzer (ITAC)「理想化(無限に速いネットワーク)」機能で通信オーバーヘッドを分離
Paraver / JumpshotExtraeベース/レガシーMPICH向けのトレース可視化

GPU(ホスト連携→カーネル深掘り)

最大の罠は「いきなりGPUカーネル内部を見ること」。まずCPU-GPU間のデータ転送(PCIe)を疑います。

視点ツール特徴
マクロ(システム全体)Nsight SystemsCPUスレッド、GPUへのデータ転送、kernel dispatchの非効率を特定
ミクロ(カーネル内部)Nsight Computeレジスタ使用量、メモリ帯域、命令レベルのstall原因を解析
AMD ROCm環境rocprof (v3)Roofline分析でHW理論限界に対する位置を可視化

OpenMP(並列インバランスと同期)

「CPU使用率が100%か」ではなく「有意義な計算をしているか」を問います。

ツール特徴
Intel VTune (OpenMP Wait Analysis)アクティブ時間と待機/アイドル時間を厳密に分離
Linaro MAP適応型サンプリングで極小ファイルサイズ。ソース改変なしで行レベルの待機を特定
TAU (OMPT)ハイブリッド実行時のタイムラインを可視化

メモリ(安全性検証とヒープ最適化)

目的ツール特徴
エラー検出(安全性)AddressSanitizer (ASan)コンパイラベース。低負荷でCI/CDに組み込める
エラー検出(深掘り)Valgrind Memcheck再コンパイル不要だが負荷は数十倍
使用量・ヒープ最適化Heaptrack低負荷でヒープ確保/解放をトレース。リークや無駄を特定
使用量・ヒープ最適化Massif (Valgrind)メモリ使用量の推移をスナップショットで記録

富岳・HPCコンテストでよく使う組み合わせ

チームの調査では、富岳環境で次のツールが定番として挙がりました(実機・利用可否は要確認)。

  • 必須: mpiP / Score-P / Cube / perf / nsys(GPU使用時)
  • 発展: Scalasca / Vampir / HPCToolkit / VTune

OpenFOAMのMPI最適化なら、次の流れが強力とされています。

mpiP  →  Score-P  →  Cube  →  Scalasca

まず何から使うか(チームの結論)

  • 最初の一手は perf + mpiP。低負荷で「当たり」をつけられる。
  • 必要に応じてScore-P/Cube/Scalascaへ深掘りする。

注意点

  • 富岳前提のツール構成です。2026年大会の実機は未確定なので、利用可能なツールは要確認です(調査ステータス)。
  • ツールはオーバーヘッドが大きいものほど後段で使います。

関連ページ

参考文献