-
Notifications
You must be signed in to change notification settings - Fork 31
AutoRunTools
Yuya Degawa edited this page Jun 5, 2023
·
3 revisions
- 設定ファイルに従ってクラスタへのジョブの投入から,そのままグラフに使えるCSVの作成まで一括して行うツール群.
-
enqueue.pl
- クラスタへジョブを投入するスクリプト
-
execscript.pl
- ジョブ投入書式作成スクリプト
- enqueue.pl から呼ばれる
- execscript.pl を編集することで,研究室外の環境にも対応可能
-
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 +-~データ集計出力ファイル
-
-c
設定XMLファイルの指定- SampleCfg.xml を指定する場合,以下の様にする
- 間にスペースは入れない
-cSampleCfg.xml
- 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>
-
Parameter
では以下の書式が可能
-
<Parameter FileName="~">
-
~
の部分のファイルを読み込む - ここで指定されたファイルは一旦workにコピーされ,ジョブではそれが使用される
-
-
<Parameter Option="~">
-
~
の部分がコマンドラインオプションとして直接追加
-
-
<Parameter Node="~" Value="~">
-
-x Node=Value
の形に展開される -
Value
は別に数字で無くてもかまわない
-
-
<Parameter Node="~" 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
内に複数あった場合,展開された全ての組み合わせのセッションが作られる
-
設定ファイルを記述した上で,以下のコマンドをサーバーで実行
-
出力先ディレクトリ(result)が作られるディレクトリをあらかじめ作成しておくこと
perl enqueue.pl
-
オプション
-t #ディレクトリやスクリプトは作成するが,ジョブ投入は行わない(テスト用)
-
ジョブ全て完了したら,各出力ファイル(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
```
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>
-
ジョブ投入スクリプトを編集
- execscript.pl を各自の環境に合わせて書き直す.
-
ジョブを投入
perl enqueue.pl
-
XML->CSV集計
perl statistics.pl all
-
集計
perl summary.pl