現在の位置
backup プラグインを使用中
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- ツール/AutoRunTools へ行く。
- 1 (2009-07-06 (月) 22:35:44)
概要 †
- 設定ファイルに従ってクラスタへのジョブの投入から,そのままグラフに使えるCSVの作成まで一括して行うツール群.
スクリプト †
- enqueue.pl
- クラスタへジョブを投入するスクリプト
- execscript.pl
- ジョブ投入書式作成スクリプト
- enqueue.pl から呼ばれる
- execscript.pl を編集することで,amateras 以外の環境にも対応可能
- statistics.pl
- ジョブが出力したファイルを解析してCSVにするスクリプト
- summary.pl
- statistics.pl の出力したCSVをまとめるスクリプト
- cfg.xml
- 設定ファイル
ディレクトリ構成 †
- スクリプト
+-enqueue.pl # ジョブ投入スクリプト +-execscript.pl # ジョブ投入書式作成スクリプト +-statistics.pl # XML->CSV解析スクリプト +-summary.pl # データ集計スクリプト +-cfg.xml # 設定ファイル
- 出力データ
+-result +--000 # 各セッションの出力(3桁の数字) | +-work # クラスタで実行した際のエラーなどが置かれる | +-sh # ジョブ投入を行う際に使用するシェルスクリプト | +-param # ジョブ投入時に使用したパラメータファイルのコピー | +-statistics000.csv # XML->CSVの出力ファイル | +-001 # 以下000と同じ +-002 +-~ | +-summary +-~データ集計出力ファイル
スクリプトの共通オプション †
設定ファイルの書き方 †
- cfg.sample.xmlをcfg.xmlに変更して,中身を修正
- ~Patternとある場合,それは全て正規表現
<?xml version="1.0" encoding="utf-8"?> <Configuration # ベースディレクトリ # Onikiriのルートディレクトリを“絶対パス”で指定 # これより下の設定は全てこのパスからの相対パスとして扱われる BasePath="/home/onikiri2/autorun/" > <Result # 出力ファイルのディレクトリ # 上のベースディレクトリからの“相対パス”で表記 BasePath="result/" # 集計対象とするファイル FileNamePattern=".txt" # XML->CSVとする際に取り出すデータ NodeNamePattern="(IPC)|(HitRate)|(Executed)" # 列ヘッダを出力パターン.名前のうちパターンにマッチした部分のみを出力 # わからなければ空欄でOK ColumnHeaderPattern="" # 行ヘッダを出力パターン.名前のうちパターンにマッチした部分のみを出力 # 下の例は,"番号.ベンチマーク名"を取り出すための物 RowHeaderPattern="[0-9]{3}[^-]+" /> # ベンチマーク入力パラメータ # 下の条件にマッチしたベンチマーク全てが一回のセッションで実行される <Input BinaryFile="../autobuild/trunk/project/gcc/onikiri2/a.out" > <Command BasePath="../autobuild/trunk/benchmark/spec2000/alpha64/cmd/" FileNamePattern="ref.0.xml" /> <Command BasePath="../autobuild/trunk/benchmark/spec2006/alpha64/cmd/" FileNamePattern="ref.0.xml" /> </Input> # 入力セッション # 複数のSessionエントリを続けて記述可能 # パラメータはファイル名とコマンドラインオプションの二種類 # Range構文を使用すると,パラメータの幅を振ったセッションを作ってくれる <Sessions> <Session Name="test"> # セッション名はここで指定すること <Parameter FileName="param.xml"/> <Parameter Option="-x Simulator/ObjectMap/Declaration/Scheduler[0]/@IssueLatency=5"/> <Parameter Node="Simulator/ObjectMap/Declaration/Fetcher/@DecodeWidth" Range="3,4,5" /> </Session> </Sessions> </Configuration>
Sessionセクションの詳細 †
Parameterでは以下の書式が可能
- <Parameter Option="~">
- "~"の部分がコマンドラインオプションとして直接追加
- <Parameter Node="~" Value="~">
- "-x Node=Value" の形に展開される
- Valueは別に数字で無くてもかまわない
- <Parameter Node="~" Range="~">
- Rangeの内容を展開し,複数のセッションに展開する
Range構文詳細 †
- Range="1,2"
- Value="1" と Value="2" のセッションに展開される
- Range="1-3"
- Value="1" と Value="2" と Value="3" のセッションに展開される
- Range="[1,2],[3,2]"
- Value="1,2" と Value="3,2" のセッションに展開される
- 複数のRangeを持つParameterが一つのSession内に複数あった場合,展開された全ての組み合わせのセッションが作られる
ジョブ投入 †
- 設定ファイルを記述した上で,以下のコマンドをamaterasで実行
- 出力先ディレクトリ(result)が作られるディレクトリをあらかじめ作成しておくこと
perl enqueue.pl
- オプション
-t #ディレクトリやスクリプトは作成するが,ジョブ投入は行わない(テスト用)
XML->CSV †
- ジョブ全て完了したら,各出力ファイル(XML)からCSVを作る
perl statistics.pl
- これにより,各セッションのディレクトリ内にstatistics~.csvの名前で集計されたcsv画生成される
- オプション一覧例
perl statistics.pl 4 # セッション004を処理 perl statistics.pl 1-7 # 001~007を処理 perl statistics.pl 3,5,4 # 003,004,005を処理 perl statistics.pl 2,9,5-7 # 002,009,005,006,007を処理 perl statistics.pl all # 全てのセッションを処理
集計 †
- 各セッションディレクトリ内のCSVを集めて集計する
perl summary.pl
オプション一覧と例(セッション番号指定はstatistics.plと同じ) †
perl summary.pl -e正規表現パターン # パターンに一致したパラメータだけ出力する perl summary.pl -eIPC # この場合,パラメータ名にIPCがはいっていたら出力 perl summary.pl -hヘッダファイル # セッション番号と列ヘッダ名を,ヘッダファイルを用いて変換して出力
- コマンドラインから指定したセッション番号の順番に出力される
ヘッダファイル †
- 以下のようにカンマ区切りで行ごとに変換ルールを定義
1,base 2,Issue+1 3,Issue+2
- セッション番号001は,baseとして表示される
クイックスタート †
- cfg.sample.xmlをcfg.xmlになおして,以下のセクションを自分のパス用に書き直す
Configuration/@BasePath Configuration/Result/@BasePath
- ベンチマークはサンプルだとrefになっているので,必要ならデータを展開しておく
- スクリプトがあるところに以下の内容のparam.xmlを置く(実行命令数を設定しているだけ)
<?xml version="1.0" encoding="utf-8"?> <Session> <Simulator> <System SimulationInsns="1K" SimulationCycle="0" SkipInsns="1K" /> </Simulator> </Session>
- amaterasでジョブを投入
perl enqueue.pl
- XML->CSV集計
perl statistics.pl all
- 集計
perl summary.pl