アプリケーション内の関数が費やした合計時間は、次の 2 つの要素に大きく分けることができます。
- 実際の計算に費やされた時間 (Tcomp)
- メモリ アクセスに費やされた時間 (Tmem)
通常、プロファイラーは、関数が費やした合計時間の見積もりを提供します。上記の 2 つのコンポーネント (Tcomp と Tmem) に関して費やされた時間を見積もることは可能ですか?
アプリケーション内の関数が費やした合計時間は、次の 2 つの要素に大きく分けることができます。
通常、プロファイラーは、関数が費やした合計時間の見積もりを提供します。上記の 2 つのコンポーネント (Tcomp と Tmem) に関して費やされた時間を見積もることは可能ですか?
算術強度の概念は、ルーフライン モデルによって提案されています: https://crd.lbl.gov/departments/computer-science/PAR/research/roofline/。簡単に言えば、メモリアクセスごとに実行される算術命令の数を定義します。
演算強度の計算は、通常、パフォーマンス カウンターを使用して実装されます。
現在のプロセッサ アーキテクチャでは、計算がメモリ アクセスとオーバーラップするため、これを測定することはできません (測定しても意味がありません)。また、メモリへのアクセスは、通常、より多くのステップに分割されます (メモリへのアクセス、さまざまなキャッシュ レベルへのプリフェッチ、プロセッサ レジスタへの実際の読み取り)。
perf とそのハードウェア カウンター (ハードウェアでサポートされている場合) を使用して、さまざまなキャッシュ レベルでキャッシュ ヒットとキャッシュ ミスを測定し、ハードウェアでのアルゴリズムの効率を見積もることができます。