現在の位置
diff プラグインを使用中
- 追加された行はこの色です。
- 削除された行はこの色です。
- ツール/AutoRunTools へ行く。
- ツール/AutoRunTools の差分を削除
*概要 [#b3d5a85e]
- 設定ファイルに従ってクラスタへのジョブの投入から,そのままグラフに使えるCSVの作成まで一括して行うツール群.
** スクリプト [#ce16513b]
-enqueue.pl
--クラスタへジョブを投入するスクリプト
-execscript.pl
--ジョブ投入書式作成スクリプト
--enqueue.pl から呼ばれる
--execscript.pl を編集することで,研究室外の環境にも対応可能
-statistics.pl
--ジョブが出力したファイルを解析してCSVにするスクリプト
-summary.pl
--statistics.pl の出力したCSVをまとめるスクリプト
-cfg.xml
--設定ファイル
**ディレクトリ構成 [#o6f06aee]
-スクリプト
+-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
+-~データ集計出力ファイル
**スクリプトの共通オプション [#h732cbaf]
- -c 設定XMLファイルの指定
-- SampleCfg.xml を指定する場合,以下の様にする
-- 間にスペースは入れない
-cSampleCfg.xml
*設定ファイルの書き方 [#e36140b8]
-cfg.sample.xmlをcfg.xmlに変更して,中身を修正
-~Patternとある場合,それは全て正規表現
-とりあえず実行を試してみたい場合に,主に書き換える必要があるのは以下の場所
--Configuration/BasePath
--Input 以下
<?xml version="1.0" encoding="utf-8"?>
<!--
Configuration
BasePath : ベースディレクトリ
Onikiriのルートディレクトリを“絶対パス”で指定
これより下の設定は全てこのパスからの相対パスとして扱われる
-->
<Configuration
BasePath="/home/onikiri2/tool/AutoRunTools/"
>
<!--
Result :
BasePath : 出力ファイルのディレクトリ
上のベースディレクトリからの“相対パス”で表記
FileNamePattern : 集計対象とするファイル
NodeNamePattern : XML->CSVとする際に取り出すデータ
ColumnHeaderPattern : 列ヘッダを出力パターン
名前のうちパターンにマッチした部分のみを出力
わからなければ空欄でOK
RowHeaderPattern : 行ヘッダを出力パターン
名前のうちパターンにマッチした部分のみを出力
下の例は,"番号.ベンチマーク名"を取り出すための物
/>
-->
<Result
BasePath="result/"
FileNamePattern=".txt"
NodeNamePattern="(IPC)|(HitRate)|(Executed)"
ColumnHeaderPattern=""
RowHeaderPattern="[0-9]{3}[^-]+"
/>
<!--
Input : ベンチマーク入力パラメータ
各Process/Command 内の条件にマッチしたベンチマークが一回のセッションで実行される.
複数のProcess ノードが存在した場合,それらの間の総当たりの組み合わせで実行が行われる.
以下の場合,SPECCPU 2000 INT 内のref データセットを実行する.
-->
<Input
BinaryFile="../../project/gcc/onikiri2/a.out"
>
<Processes>
<Process>
<Command
BasePath="../../benchmark/SPECCPU2000_INT/alpha64/cmd/"
FileNamePattern="ref.0.xml"
/>
</Process>
</Processes>
</Input>
<!--
Sessions : 入力セッション
複数のSessionエントリを続けて記述可能
下の例の場合,param.xml を入力ファイルとして受け取り,
一つ目のキャッシュ(L1Dキャッシュ)のレイテンシを3に設定した状態で,
FetchWidth が3,4,5に設定された3つのセッションが実行される
パスについては,以下の省略形を使用可能
"/SS/" -> "/Session/Simulator/"
"/SSC/" -> "/Session/Simulator/Configurations/"
"/SSCD/" -> "/Session/Simulator/Configurations/DefaultConfiguration/"
"/SSCDP/" -> "/Session/Simulator/Configurations/DefaultConfiguration/Parameter/"
-->
<Sessions>
<Session>
<Parameter FileName="param.xml"/>
<Parameter
Node="/SSCDP/Cache[0]/@Latency"
Value="3"
/>
<Parameter
Node="/SSCDP/Fetcher/@FetchWidth"
Range="3,4,5"
/>
</Session>
</Sessions>
</Configuration>
**Sessionセクションの詳細 [#t73dae02]
Parameterでは以下の書式が可能
-<Parameter FileName="~">
--"~"の部分のファイルを読み込む
--ここで指定されたファイルは一旦workにコピーされ,ジョブではそれが使用される
-<Parameter Option="~">
--"~"の部分がコマンドラインオプションとして直接追加
-<Parameter Node="~" Value="~">
-- "-x Node=Value" の形に展開される
--Valueは別に数字で無くてもかまわない
-<Parameter Node="~" Range="~">
-- Rangeの内容を展開し,複数のセッションに展開する
***Range構文詳細 [#x2468913]
-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内に複数あった場合,展開された全ての組み合わせのセッションが作られる
*ジョブ投入 [#tee9a703]
-設定ファイルを記述した上で,以下のコマンドをサーバーで実行
-出力先ディレクトリ(result)が作られるディレクトリをあらかじめ作成しておくこと
perl enqueue.pl
-オプション
-t #ディレクトリやスクリプトは作成するが,ジョブ投入は行わない(テスト用)
*XML->CSV [#ld6068ca]
-ジョブ全て完了したら,各出力ファイル(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 # 全てのセッションを処理
*集計 [#eefb4633]
-各セッションディレクトリ内のCSVを集めて集計する
perl summary.pl
**オプション一覧と例(セッション番号指定はstatistics.plと同じ) [#sfb6f8ad]
perl summary.pl -e正規表現パターン # パターンに一致したパラメータだけ出力する
perl summary.pl -eIPC # この場合,パラメータ名にIPCがはいっていたら出力
perl summary.pl -hヘッダファイル # セッション番号と列ヘッダ名を,ヘッダファイルを用いて変換して出力
-コマンドラインから指定したセッション番号の順番に出力される
**ヘッダファイル [#p6d0b4f9]
-以下のようにカンマ区切りで行ごとに変換ルールを定義
1,base
2,Issue+1
3,Issue+2
-セッション番号001は,baseとして表示される
*クイックスタート [#fd6dce79]
-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>
-ジョブ投入スクリプトを編集
execscript.pl を各自の環境に合わせて書き直す.
--execscript.pl を各自の環境に合わせて書き直す.
-ジョブを投入
perl enqueue.pl
-XML->CSV集計
perl statistics.pl all
-集計
perl summary.pl