Table of Contents |
概要 †
- 設定ファイルに従ってクラスタへのジョブの投入から,そのままグラフに使える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 +-~データ集計出力ファイル
スクリプトの共通オプション †
設定ファイルの書き方 †
- cfg.sample.xmlをcfg.xmlに変更して,中身を修正
- ~Patternとある場合,それは全て正規表現
- とりあえず実行を試してみたい場合に,主に書き換える必要があるのは以下の場所
<?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セクションの詳細 †
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内に複数あった場合,展開された全ての組み合わせのセッションが作られる
ジョブ投入 †
- 設定ファイルを記述した上で,以下のコマンドをサーバーで実行
- 出力先ディレクトリ(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>
- ジョブ投入スクリプトを編集
- execscript.pl を各自の環境に合わせて書き直す.
- ジョブを投入
perl enqueue.pl
- XML->CSV集計
perl statistics.pl all
- 集計
perl summary.pl
- 関連ページ
- チュートリアル/やりたいこと別インデックス1280日前
ツールボックス
メニュー
最新の20件
最新の20件
2022-12-31
2022-09-24
2022-01-26
2019-09-17
2019-07-11
2018-07-12
2018-05-09
2018-02-07
2017-10-27
2017-10-15
2017-05-01
2017-03-27
2015-12-24