PC クラスターシステム 利用手引書

PC クラスターシステム
利用手引書
【利用者ガイド】
第 1.2 版
更新履歴
版数
1.0
1.1
1.2
1.2
更新日
2010.9.24
2010.10.8
2010.10.15
2012.4.1
更新内容
初版
運用に合わせ内容を修正
利用申請,アクセス方法を追記
組織名を変更
更新者
富士通九州システムズ
情報基盤センター
情報基盤センター
情報基盤センター
~ 目次 ~
1.
はじめに ............................................................................................................................................................. 1
2.
利用申請とサーバーへのアクセス ................................................................................................................... 2
2-1
利用申請.................................................................................................................................................... 2
2-2
サーバーへのアクセス ............................................................................................................................. 2
2-2-1 PC クラスターサーバー ホスト名 2
2-2-2 ユーザー名とパスワード 2
3.
プログラムの作成方法 ...................................................................................................................................... 3
3-1
ジョブスクリプトについて ..................................................................................................................... 3
3-1-1 ジョブスクリプト例を実行した場合
4
3-1-2 ジョブスクリプトのパラメータに指定出来る値の範囲一覧
3-2
3-2-1
3-2-2
3-2-3
3-2-4
4.
並列計算プログラムの作成(翻訳/結合) ........................................................................................... 5
FORTRAN77 5
FORTRAN90 6
C
7
C++ 8
ジョブの実行方法.............................................................................................................................................. 9
4-1
ジョブの投入 (qsub コマンド).......................................................................................................... 9
4-1-1 ジョブの実行について
5.
4
9
投入したジョブの管理 .....................................................................................................................................11
5-1
ジョブの状態の参照 ................................................................................................................................11
5-2
ジョブの詳細表示....................................................................................................................................12
5-3
ジョブの削除 ...........................................................................................................................................12
はじめに
情報基盤センターに導入した PC クラスターシステムについての概要は以下の通りです。
本利用ガイドでは情報基盤センター研究室の PC1台をテスト用(test_queue)として表記していますが、
管理用の為、通常は利用できません。
計算サーバー
管理サーバ
ーSCore
サーバー
Torque
サーバー
演
習
室
A
Torque
クライアント
演
習
室
B
SCore
クライアント
maui
研
究
室
/home/general/
マウント
範囲
ファイル
サーバー
PC クラスターシステムは、Torque システム、SCore システムならびに Linux OS の諸機能によって構成
されています。利用者は Torque システムに対してジョブという形式でプログラムを投入して実行結果を
得ます。
管理サーバー
計算サーバー
キュー
ジョブ
スクリプト
ジョブ X
実行
ジョブ U
ジョブ V
ジョブ W
ジョブ T
キ
ュ
ー
へ
格
納
翻訳・結合
投入
並列計算
プログラム
Torque サーバ
利用者
ー
SCore(MPI)が提供するモジュールやライブラリを用いて、PC クラスターシステム上で動作する並列計算プロ
グラムを作成できます。Torque(に加えて maui)システムは、ジョブに含まれる並列計算プログラムを PC ク
ラスターシステムのリソースを効率良く活用して実行したり管理する役割を担っています。
利用ガイドでは、以下の項目について記述します。
・ 利用申請とサーバーへのアクセス
・ プログラムの作成方法
・ ジョブの実行方法
・ 投入したジョブの管理について
1
利用申請とサーバーへのアクセス
利用申請
PC クラスターシステムの利用を希望する場合は、以下のサイトより利用申請を行ってください。
https://intra.ipc.tcu.ac.jp/sc_systems/sc_auth/
PC クラスターシステムを利用するためには、担当教員などの責任者の承認登録が必要です。申請後
も責任者による承認が無い場合は利用できません。責任者への承認依頼は,別途各自で行ってくださ
い。承認登録も上記のサイトで行えます。
申請・利用承認後、情報基盤センター側で、申請ユーザーが PC クラスターシステムの利用が行える
よう登録を行います。登録は最長で 2 日(休日を除く)程度かかる場合もありますので、余裕をもっ
て申請してください。
サーバーへのアクセス
2-1-1
PC クラスターサーバー ホスト名
PC クラスターサーバーのホスト名は以下です。Tera Term など SSH クライアントを用いてアクセス
してください。なお、PC クラスターシステムへの接続は学内のみに限定されています。
cls1.ipc.tcu.ac.jp
2-1-2
ユーザー名とパスワード
PC クラスターシステムへも情報基盤センター演習室利用時と同じユーザー名(学生の場合は g 学
籍番号)とパスワードでログインできます S。
2
プログラムの作成方法
利用者の並列計算プログラムは、ジョブとして Torque システム経由で実行します。この Torque システムに
投入するジョブは“ジョブスクリプト”と呼ばれるシェルスクリプトです。Torque システムへ与えるパ
ラメータを含みます。また、並列計算プログラムはこのジョブスクリプトの中から利用するように記述
します。ジョブスクリプトについて
ジョブスクリプトは以下の項目を意識して記述します。
1) ジョブの属性(Torque システムへのパラメータ)
2) ファイルサーバー上の共有ディレクトリ
3) scrun コマンドへの引数との整合性
4) exit コード
<ジョブスクリプト例>
① #! /bin/sh
② #PBS -l nodes=2
③ #PBS -q score_queue
④ #PBS -N sample⑤ #PBS -j oe
⑥ cd ~
⑦ scrun -nodes=2x2 -group=${PBS_NODEFILE} -network=ethernet ./a.out
⑧ exit 0
<各行の説明>
① ジョブスクリプトを実行するシェルの指定。
情報基盤センターの環境では、/bin/sh 固定
② Torque システムへのパラメータ
ジョブが用いる計算サーバーの台数を記述しています。
③ Torque システムへのパラメータ
ジョブを格納するキューの名称を記述しています。
情報基盤センターの環境では、以下のキュー名が利用できます。
score_queue : 演習室にある計算サーバーを用います。
test_queue : 研究室にある計算サーバーを用いますが、管理用の為、通常は利用できません。
④ Torque システムへのパラメータ
ジョブの名前を指定しています。ジョブの出力結果ファイル名は、このジョブ名に出力の種別を示
す記号とジョブの ID を付加した名称となります。
⑤ Torque システムへのパラメータ
ジョブの結果出力方法を指定しています。指定可能な記述は以下の通りです。(指定の 1 文字目が
出力の種別しめす記号として用いられます)
oe : 標準出力ならびに標準エラー出力への出力を一つにまとめて出力結果ファイルとして出力
します。
o : 標準出力への出力のみを出力結果ファイルとして出力します。
e : 標準エラー出力への出力のみを出力結果ファイルとして出力します。
n : 標準出力ならびに標準エラー出力への出力結果はファイルとして出力しません。
⑥ カレントディレクトリをホームディレクトリに変更しています。
情報基盤センターの環境は、ホームディレクトリを計算サーバー・管理サーバーで共有しており、
ホームディレクトリの資源を用いて動作するようにします。
他のユーザーとプログラムをシェアする場合は/work ディレクトリを使用してください。
⑦ 並列計算プログラムを SCore を用いて実行しています。
8 行目の記述について個別に解説します。
3
scrun
(a)
-nodes=2x2
(b)
-group=${PBS_NODEFILE}
(c)
-network=ethernet
(d)
./a.out
(e)
(a) SCore のプログラム実行コマンド。(b)~(e)は本コマンドの引数。
(b) 使用する計算サーバー数と計算サーバー毎の CPU 数の指定。
記述形式: -nodes = 計算サーバー数 x CPU 数
計算サーバー数は Torque システムに要求した計算サーバー数と同じにする必要があります。
すなわち②と(b)の計算サーバー数は等しい値を指定するということです。
CPU 数は、情報基盤センターの環境では1~4の間の値を指定します。並列計算プログラムの
実行は1CPU=1 計算プロセスとなります。
(c) 並列計算プログラムの実行に用いる計算サーバーを記したファイルの指定。
Torque システムは、環境変数 PBS_NODEFILE を用いて計算サーバーを記したファイルを指し示
します。
(d) 用いるネットワーク種別の指定。
情報基盤センターの環境では、ethernet を必ず指定します。
(e) 並列計算プログラムの指定。
例では、⑥で指定したホームディレクトリに存在する a.out を指定しています。全ての計算サ
ーバーから同じパスで並列計算プログラムを参照できる必要があります。
⑧ ジョブスクリプトの exit ステータスを記しています。
Torque システムは、exit ステータスが0の時に正常終了したと判断します。また、0を返却する
ように推奨されています。
3-1-1
ジョブスクリプト例を実行した場合
2-1 章のジョブスクリプト例を実行した場合、ジョブ ID に 12.cls1 が割り振られたとすると、以下の
ようになります。
用いる計算サーバー:2台(2CPU 使用) =>
出力結果ファイル: sample-.o12
3-1-2
4計算プロセス
ジョブスクリプトのパラメータに指定出来る値の範囲一覧
ジョブスクリプトのパラメータに指定可能な数値の範囲を以下に示します。
名称
計算サーバー
数
キュー名
ジョブ名
CPU 数
設定箇所
score_queue の場合
test_queue の場合
1 ~ 138
1
#PBS -l nodes
#PBS -q
#PBS -N
scrun -nodes
score_queue
test_queue
OS のファイル名の命名規約に準じる
1 ~ 4
1 ~ 4
4
並列計算プログラムの作成(翻訳/結合)
並列計算プログラムソースコードは、次の言語でコーディングできます。
作成したソースプログラムを翻訳/結合処理するには、言語に対応する SCore のコマンドを用います。
言語
FORTRAN77:
FORTRAN90:
C:
C++:
3-1-3
翻訳・結合コマンド
mpif77
mpif90
mpicc
mpic++
FORTRAN77
mpif77 コマンドの入力形式は、以下の通りです。
mpif77
[-compiler compiler_name -o output_file -I include_dir -lname
-Olevel –i_dynamic]
source_file
[ ]:必要のない場合、省略可能なオプション
各オプションの設定値の内容について以下に記します。
設定値
-compiler
内容
任意のコンパイラを利用する場合に指定します。指定できるコンパイラは gnu, intel
compiler_name です。省略した場合は gnu コンパイラが指定されます。
-o
出力(作成される実行可能プログラム)ファイル名を指定します。
output_file
省略すると、a.out というファイル名で作成されます。
-I
INCLUDE 行に指定されているファイル名またはモジュール翻訳情報に対するディレクト
include_dir
リ名を指定します。
-lname
結合処理時に参照させる外部のライブラリがあれば指定します。
なお、並列処理に必要な MPI ライブラリや SCore ライブラリについては、mpif77 コマン
ドにて標準でリンクするため、利用者からリンクライブラリとして指定する必要はあり
ません。
なお、外部参照ライブラリファイルが、/usr/lib 以外のディレクトリに存在する場合
は、ファイルの存在場所(ディレクトリ)を環境変数 LD_LIBRARY_PATH に指定しておく
か、-Ldir オプションで指定する必要があります。
(dir: 外部参照ライブラリファイルディレクトリ)
-Olevel
最適化レベルを指定します。レベルの 0 を指定すると、最適化は抑止されます。
省略すると最適化を指定したものとみなします。(レベルは 3 となります。)
また、-K オプション指定により不変式の先行評価と演算評価方法の変更、-x オプショ
ン指定により利用者定義の外部手続および内部手続のインライン展開を指定することが
できます。
-i_dynamic
-compiler=intel を指定した場合に出力されるワーニングメッセージを出力させないよ
うにする場合に指定します。※出力されるワーニングは動作に支障の無い物です。(詳
しくは intel コンパイラのマニュアル並びに SCore のマニュアルを参照ください)
source_file
翻訳/結合処理をするソースコードファイル名(.f)を指定します。
※SCore に関わるオプションについては、scorer コマンド( scorer mpif77 )を使って参照してください。
例)ソースコード:pi3p.f をアウトプットファイル pi3p とし、intel コンパイラを利用して翻訳/結
合する。
mpif77 –compiler=intel -o pi3p pi3p.f
5
3-1-4
FORTRAN90
mpif90 コマンドの入力形式は、以下の通りです。
mpif90
[-compiler=compiler_name -o output_file -I include_dir -lname -Olevel –i_dynamic]
source_file
[ ]:必要のない場合、省略可なオプション
各設定値の内容について以下に記します。
設定値
-compiler=
内容
任意のコンパイラを利用する場合に指定します。指定できるコンパイラは gnu, intel で
compiler_name
す。省略した場合は gnu コンパイラが指定されます。
-o output_file
出力(作成される実行可能プログラム)ファイル名を指定します。
省略すると、a.out というファイル名で作成されます。
-I include_dir
INCLUDE 行に指定されているファイル名またはモジュール翻訳情報に対するディレクトリ
名を指定します。
-lname
結合処理時に参照させる外部のライブラリがあれば指定します。
なお、並列処理に必要な MPI ライブラリや SCore ライブラリについては、mpif90 コマン
ドにて標準でリンクするため、利用者からリンクライブラリとして指定する必要はありま
せん。
なお、外部参照ライブラリファイルが、/usr/lib 以外のディレクトリに存在する場合
は、ファイルの存在場所(ディレクトリ)を環境変数 LD_LIBRARY_PATH に指定しておく
か、-Ldir オプションで指定する必要があります。
(dir: 外部参照ライブラリファイルディレクトリ)
-Olevel
最適化レベルを指定します。レベルの 0 を指定すると、最適化は抑止されます。
省略すると最適化を指定したものとみなします。(レベルは 3 となります。)
また、-K オプション指定により不変式の先行評価と演算評価方法の変更、-x オプション
指定により利用者定義の外部手続および内部手続のインライン展開を指定することができ
ます。
-i_dynamic
-compiler=intel を指定した場合に出力されるワーニングメッセージを出力させないよう
にする場合に指定します。※出力されるワーニングは動作に支障の無い物です。(詳しく
は intel コンパイラのマニュアル並びに SCore のマニュアルを参照ください)
source_file
翻訳/結合処理をするソースコードファイル名(.f90)を指定します。
※SCore に関わるオプションについては、scorer コマンド( scorer mpif90 )を使って参照してください。
例)ソースコード:pi3f90.f90 をアウトプットファイル:pi3f90 とし、intel コンパイラを利用し
て翻訳/結合する。
mpif90 –compiler=intel -o pi3f90 pi3f90.f90
6
3-1-5
C
mpicc コマンドの入力形式は、以下の通りです。
mpicc [-compiler compiler_name -o output_file -I include_dir -lname
[ ]:必要のない場合、省略可
-Olevel] source_file
各設定値の内容について以下に記します。
設定値
-compiler
内容
任意のコンパイラを利用する場合に指定します。指定できるコンパイラは gnu です。
compiler_name
省略した場合は gnu コンパイラが指定されます。
-o output_file
出力(作成される実行可能プログラム)ファイル名を指定します。
省略すると、a.out というファイル名で作成されます。
-I include_dir
INCLUDE 行に指定されているファイル名またはモジュール翻訳情報に対するディレク
トリ名を指定します。
-lname
結合処理時に参照させる外部のライブラリがあれば指定します。
なお、並列処理に必要な MPI ライブラリや SCore ライブラリについては、mpicc コマ
ンドにて標準でリンクするため、利用者からリンクライブラリとして指定する必要は
ありません。
なお、外部参照ライブラリファイルが、/usr/lib 以外のディレクトリに存在する場
合は、ファイルの存在場所(ディレクトリ)を環境変数 LD_LIBRARY_PATH に指定して
おくか、-Ldir オプションで指定する必要があります。
(dir: 外部参照ライブラリファイルディレクトリ)
-Olevel
最適化レベルを指定します。レベルの 0 を指定すると、最適化は抑止されます。
省略すると最適化を指定したものとみなします。(レベルは 3 となります。)
また、-K オプション指定により不変式の先行評価と演算評価方法の変更、-x オプシ
ョン指定により利用者定義の外部手続および内部手続のインライン展開を指定するこ
とができます。
source_file
翻訳/結合処理をするソースコードファイル名(.c)を指定します。
※SCore に関わるオプションについては、scorer コマンド( scorer mpicc )を使って参照してください。
例)ソースコード:cpi.c をアウトプットファイル:cpi とし、intel コンパイラを利用して翻訳/
結合する。
mpicc –compiler=intel -o cpi cpi.c
7
3-1-6
C++
mpic++コマンドの入力形式は、以下の通りです。
mpic++
[-compiler compiler_name -o output_file -I include_dir -lname -Olevel] source_file
[ ]:必要のない場合、省略可
各設定値の内容について以下に記します。
設定値
-compiler
内容
任意のコンパイラを利用する場合に指定します。指定できるコンパイラは gnu です。
compiler_name
省略した場合は gnu コンパイラが指定されます。
-o output_file
出力(作成される実行可能プログラム)ファイル名を指定します。
省略すると、a.out というファイル名で作成されます。
-I include_dir
INCLUDE 行に指定されているファイル名またはモジュール翻訳情報に対するディレク
トリ名を指定します。
-lname
結合処理時に参照させる外部のライブラリがあれば指定します。
なお、並列処理に必要な MPI ライブラリや SCore ライブラリについては、mpiCC コマ
ンドにて標準でリンクするため、利用者からリンクライブラリとして指定する必要は
ありません。
なお、外部参照ライブラリファイルが、/usr/lib 以外のディレクトリに存在する場合
は、ファイルの存在場所(ディレクトリ)を環境変数 LD_LIBRARY_PATH に指定してお
くか、-Ldir オプションで指定する必要があります。
(dir: 外部参照ライブラリファイルディレクトリ)
-Olevel
最適化レベルを指定します。レベルの 0 を指定すると、最適化は抑止されます。
省略すると最適化を指定したものとみなします。(レベルは 3 となります。)
また、-K オプション指定により不変式の先行評価と演算評価方法の変更、-x オプショ
ン指定により利用者定義の外部手続および内部手続のインライン展開を指定すること
ができます。
source_file
翻訳/結合処理をするソースコードファイル名(.c or .cc or .C)を指定します。
※SCore に関わるオプションについては、scorer コマンド( scorer mpicxx )を使って参照してください。
例)ソースコード:hello.cpp をアウトプットファイル:hello とし、intel コンパイラを利用して
翻訳/結合する。
mpic++ -compiler=intel -o hello hello.cpp
8
ジョブの実行方法
Torque システムにジョブを投入する方法について説明します。また、ジョブのスケジューリングにつ
いて簡単に説明します。
ジョブの投入
(qsub コマンド)
以下のコマンドにてジョブを投入します。
コマンド: qsub
ジョブスクリプト
使用例)
% qsub jobscript.sh
132.cls1
%
4-1-1
ジョブ ID が表示されます。
ジョブの実行について
Torque システムは、ジョブが投入されると計算サーバーの空き状態などを鑑みて効率よくジョブを実
行するスケジューリングを行います。
以下に情報基盤センターの環境設定におけるジョブのスケジューリングについて簡単に説明します。
(詳しくは、 Torque と連携する maui システムの backfillpoliy の設定において FIRSTFIT を指定した場
合の動作となります。)
(1) ジョブスケジューラーは、先に実行可能なジョブを優先的に実行します。
(2) キューはお互いに独立しています。
(1)について、下図にジョブの投入と実行の順序について示します。
キュー
キュー
ジョブC
投
入
順
ジョブC
キュー
ジョブC
ジョブB
ジョブB
ジョブB
ジョブA
ジョブA
ジョブA
全て空き状態
ジョブA
ジョブA
ジョブAは投入順通りに実行されるが、
計算サーバの空き状態からジョブCがジョブBより先に実行されます。
9
ジョブC
(2)について、簡単な例で説明します。
・他のキューに空きがあっても投入したキューで計算サーバーが確保できるまで待ちます。
score_queue
test_queue
ジョブγ
投
入
順
ジョブβ
ジョブα
ジョブα
空き状態
・ジョブが異常終了しても後続のジョブや他のキューには影響を与えません。
投
入
順
score_queue
test_queue
ジョブθ
ジョブY
ジョブγ
ジョブβ
ジョブX
次の実行
ジョブβ
ジョブγ
次の実行
ジョブX
異常終了
※ジョブが異常終了であってもキューから無くなります。出力結果ファイルにてエラー内容を確認します。
10
投入したジョブの管理
Torque に投入されたジョブは全てキューに格納されます。ここでは、キューに存在しているジョブの
管理について記述します。
ジョブの状態の参照
投入されたジョブの一覧を表示します。ジョブがキューに存在しない場合は何も表示されません。
コマンド: qstat
使用例)
% qstat
Job id
------------------------2.cls1
:
10.cls1
%
<カラムの説明>
Job id
:
Name
:
User
:
Time Use
:
S
:
Queue
:
Name
User
Time Use S Queue
---------------- --------------- -------- - ----sampleuserX
0 R score_queue
sample-
userX
0 Q score_queue
ジョブの ID(先頭の数値が他のコマンドの入力となります)
ジョブの名前
ジョブを投入したユーザーID
ジョブの実行において経過した時間
ジョブの状態(Q=待ち,R=実行中など)
ジョブが入れられているキュー名
ジョブの状態一覧)
Q - job is
R - job is
C - Job is
E - Job is
H - Job is
T - job is
W - job is
queued, eligible to run or routed.
running.
completed after having run.
exiting after having run.
held.
being moved to new location.
waiting for its execution time
11
ジョブの詳細表示
ジョブ ID をキーにして、ジョブの詳細情報を表示します。
コマンド:qstat
-f
ジョブ ID
使用例) 上記、2.cls1 のジョブの詳細を表示する場合
% qstat -f 2
Job Id: 2.cls1
Job_Name = sampleJob_Owner = fjcls001@cls1
job_state = R
格納されているキュー名
queue = score_queue
server = cls1
Checkpoint = u
ctime = Mon Oct 4 14:10:01 2010
Error_Path = cls1:/work/sample-.e136
割当てられて計算サーバー
exec_host = l2a004/0+l2a003/0
Hold_Types = n
Join_Path = oe
Keep_Files = n
Mail_Points = a
mtime = Mon Oct 4 14:10:03 2010
Output_Path = cls1:/work/sample-.o136
Priority = 0
ジョブを投入した時刻
qtime = Mon Oct 4 14:10:01 2010
Rerunable = True
Resource_List.nodect = 2
Resource_List.nodes = 2
session_id = 16697
Variable_List = PBS_O_HOME=/home/fjcls001,PBS_O_LANG=ja_JP.UTF-8,
PBS_O_LOGNAME=fjcls001,
PBS_O_PATH=/usr/bin:/opt/score/7.Beta.5/bin:/opt/score/7.Beta.5/sbin:
/opt/score/7.Beta.5/test:/opt/score/7.Beta.5/mpi/bin:/usr/bin:/opt/sco
re/7.Beta.5/bin:/opt/score/7.Beta.5/sbin:/opt/score/7.Beta.5/test:/opt
/score/7.Beta.5/mpi/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/loca
l/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/loc
al/torque/bin:/opt/local/maui/bin:./:/opt/local/torque/bin,
PBS_O_MAIL=/var/spool/mail/root,PBS_O_SHELL=/bin/bash,
PBS_SERVER=cls1,
PBS_O_HOST=cls1,PBS_O_WORKDIR=/work,
PBS_O_QUEUE=score_queue
etime = Mon Oct 4 14:10:01 2010
submit_args = sample1.sh
ジョブの実行開始時刻
start_time = Mon Oct 4 14:10:03 2010
start_count = 1
%
ジョブの削除
指定したジョブに対してターミネイトシグナルを送信することで終了させます。
本コマンドで削除・終了できないジョブが存在する場合は、管理者に Job ID と共に連絡ねがいます。
コマンド:qdel
ジョブ ID
使用例) 上記、2.cls1 のジョブを削除する場合
% qdel 2
%
正常に削除できた場合は何も表示されません。
12