実行駆動型アプリケーション解析ツール Exana を Graph500 の性能解析でも利用しています。
実行駆動型アプリケーション解析ツール Exana (Execution-driven application analyisis tool) の概要とその出力結果を示す。本ツールは、任意の x86 バイナリコードを入力し、ループ階層構造やそれらの間のデータ依存関係を実行時に解析する。Static Analysis 部において、バイナリコード中の機械語命令を逆アセンブル後にコンパイラが行っている制御フロー解析と同等の解析を行い、動的解析においてループ、メモリアクセスをモニタするための Instrumentation Code を挿入する。
次に、Runtime Analysis 部において、実行時に出現するループネスト構造と全てのメモリアクセス命令に関するアドレス情報を抽出する。これにより、コンパイル時には困難なポインタによる間接メモリアクセスも解析可能となる。結果として、ループネスト構造や関数を単位としてそれらの間のデータ依存関係を実行時に解析する。同時に、ループ反復回数、関数の出現頻度、プロファイリングに必要な時間を計測することが可能である。最終的には、ループ並列性、パイプライン並列性、タスク並列性を実行時にプロファイルすることも可能である
実行駆動型アプリケーション解析ツール Exana (Execution-driven application analyisis tool) の概要とその出力結果を示す。本ツールは、任意の x86 バイナリコードを入力し、ループ階層構造やそれらの間のデータ依存関係を実行時に解析する。Static Analysis 部において、バイナリコード中の機械語命令を逆アセンブル後にコンパイラが行っている制御フロー解析と同等の解析を行い、動的解析においてループ、メモリアクセスをモニタするための Instrumentation Code を挿入する。
次に、Runtime Analysis 部において、実行時に出現するループネスト構造と全てのメモリアクセス命令に関するアドレス情報を抽出する。これにより、コンパイル時には困難なポインタによる間接メモリアクセスも解析可能となる。結果として、ループネスト構造や関数を単位としてそれらの間のデータ依存関係を実行時に解析する。同時に、ループ反復回数、関数の出現頻度、プロファイリングに必要な時間を計測することが可能である。最終的には、ループ並列性、パイプライン並列性、タスク並列性を実行時にプロファイルすることも可能である