SimPointは、プログラムの実行時間を短縮するために使用される重要なツールである。 SimPointはコンピュータアーキテクチャの研究のために使用されることが多く、特に実行時間の長いベンチマークの中から、実行される頻度の多いブロックを取り出すために使用する。
インストール方法
現状、古いバージョンではコンパイルエラーが発生するため、GitHubにある修正されたバージョンを使用することを推奨している。
- 修正版SimPoint: https://github.com/hanhwi/SimPoint
基本的な使用方法
BBV (Basic Block Vector) を使用してSimPointを実行する例が以下だ:
../../SimPoint/bin/simpoint \ -inputVectorsGzipped \ -loadFVFile bbv.0.bb.gz \ -k 5 \ -saveSimpoints results.simpts \ -saveSimpointWeights results.weights
パラメータの説明
-inputVectorsGzipped: 入力ベクトルがgzip圧縮されていることを指定-loadFVFile bbv.0.bb.gz: BBVファイルのパスを指定-k 5: クラスタ数を5に設定-saveSimpoints results.simpts: SimPointの結果を保存するファイル名-saveSimpointWeights results.weights: 重み情報を保存するファイル名
出力ファイルの解析
SimPointの実行により、以下の2つのファイルが生成される。
results.simpts
このファイルには、各BBVのSimPointのインデックスが記録されている。Intervalが100,000の場合(10万命令単位でのブロック解析)、各値に100,000を乗算することで実際の命令位置を特定できる。
例えば、以下のような内容が出力される:
174022 0 448746 1 0 2 141 3 508302 4
174022 0: 174,022番目のインターバルがSimPoint 0に対応- 実際の命令位置: 174,022 × 100,000 = 17,402,200,000命令目から100,000命令が実行対象
results.weights
このファイルには、全体の実行時間における各インターバルの重み(実行時間の割合)が記録されている。
0.664616 0 0.151954 1 0.127546 2 0.0139075 3 0.0419765 4
0.664616 0: SimPoint 0が全体の約66.5%の実行時間を占める- 合計が1.0になるように正規化されている