現在の位置
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