SCRUN(1)
USER COMMANDS
SCRUN(1)
名称
scrun - クラスタ上でユーザ並列プログラムを実行するための SCore フロン トエンドプロセス

書式
scrun [-SCoreOptions] file [program_options]

解説
scrun はクラスタの各種リソースを管理する scored(8) のフロントエンドプ ログラム(FEP)です。クラスタ上で実行されるユーザプログラムは scrun プログラムを介して起動しなければなりません。

まず、scrunfile で指定されたユーザプロ グラムを scrun の起動されたホストで呼び出します。これは必要な リソース情報を得るためにこのように行われます。その後、scrunscored へのログインを試みます。ログイン後は、 scrun はクラスタ上で動いているユーザプログラムのジョブ状態を コントロールするためのフロントエンドプロセスになります。ユーザプログラ ムが終了すると、scrun も終了します。

scrun への有効な引数は SCore のオプションとなります。オプショ ンは SCore-D への各種リソース指定や、ユーザプログラムの使用する言語ラ ンタイムシステムのオプションです。このマニュアルページでは、SCore-D の オプションのみ解説しています。言語システムのオプションについてはそれら システムのインストールされている場所を参照してください。

scrun の SCore オプションが指定されていない場合には最初の引数、 SCore オプションが指定されている場合には三番目の引数が、クラスタで実行 するプログラムのファイル名となります。指定された実行ファイルは scored によって、割り当てられた全てのクラスタノード上にコピー され実行されます。ファイル名の後ろの引数は全ノードでの実行ファイルの起 動時に渡されます。

実行ファイルは、scrun がファイルを読み込んでクラスタノードに コピーすることができるよう読み込みパーミッションが設定されている必要が あります。また、scrun がリソース情報を得るためにファイルを実 行することができるよう、scrun の起動されたホスト上で実行可能 になっている必要もあります。

scrun プログラムは、scrun の起動されたホストとは異な る OS や CPU を持つクラスタホスト上で並列ジョブを実行させることもでき ます。この場合、scrun がローカルで呼び出す実行ファイルと、ク ラスタ上で起動する実行ファイルとの、少なくとも二つの実行ファイルが存在 しなければなりません。この状況を可能にするため、実行ファイルは SCore の smake(1) コマンドでコンパイル する必要があります(makegmake は用いないでくださ い)。この場合、実行ファイルは smake コマンドによって 自動的に生成された .wrapper スクリプトへのシンボリックリンクと なります。同一のソースコードから consistent な各マシン 用の実行ファイルがコンパイルされるようにコードを記述するのはユーザの責 任となります。

SCORE オプションの一般的な書式

最初の文字はマイナス(-)であり、後にキーワードと値のペアが続き ます。各ペアとペアはコンマ(,)で区切ります。キーワードはあらか じめ定義された SCore リテラルであり、イコール(=)で区切って値 を指定します。例えば次のようになります:

scrun -nodes=2,cpulimit=4 a.out
この例では、二つの SCore オプションが指定されています。一つは "nodes" オプションであり、もう一つは "cpulimit" オプ ションです。nodes オプションは "2" の値を持ち、 cpulimit は "4" の値を持ちます。

SCore オプション中で同じキーワードが複数現れた場合、一番左のものが有効 となります。環境変数 SCORE_OPTIONS の値がデフォルトのオプショ ン設定として使用されます。

シングルユーザモードおよびマルチユーザモード

SCore-D オペレーティングシステムは複数のジョブを時分割方式で実行するよ う設計されています。しかし、SCore にはユーザがクラスタを排他的に利用可 能なシングルユーザモードも存在します。このモードはユーザがプログラムの 評価を行いたいときに有効です。scrun が SCOUT 環境(scout(1) 参照)で呼び出され、 scored オプションが指定されていない場合、scrun がま ず scored を SCOUT 環境内でクラスタ上で起動し、その後、起動さ れた scored 上でユーザプログラムが実行されます。ユーザプログ ラムが終了すると、scored も終了します。

もし group オプションが指定された場合,scrunscout 環境をまず最初に生成し,その環境下 でシングルユーザモードとしてジョブを実行します.file オプショ ンが指定された場合は、そのオプションの値であるファイル内に指定されたホ スト列をホストグループとして、ユーザプログラムをシングルユーザモードで 実行します。group あるいは file を指定した場合、シン グルユーザモードの実行ですが、チェックポイントの指定が可能になります。

scored が既にクラスタ上で動いている場合、ユーザは scored オプションで、ユーザのログインを受けつける SCore-D サー バホストを指定しなければなりません。SCore-D サーバの起動しているホスト 名を値として指定します。

リソース指定

SCore-D はノードやネットワーク、ディスクなどの様々なクラスタリソースを 管理します。この節ではこれらのリソース指定オプションについて説明します。

nodes=[hosts][xprocs][.[bintype][.cpugen[.speed]]]
hosts はユーザプログラムの実行に必要なクラスタ中のホ ストまたはノードの数です。procs は SMP クラスタで起 動されるプロセスの数です。procs が指定されず、割り当 てられたホストが SMP クラスタ内のものである場合、割り当てられるホスト の数は hosts を SMP 中のプロセッサ数で割った数になり ます。procs が指定されている場合は、可能であれば各 SMP ホスト内で指定された数のプロセスが起動されます。要求されたノード数 がパーティション内の全ノード数より少ない場合、SCore-D はパーティション 内のノードをシステム全体の負荷がバランスするように割り当てます。 bintype オプションはヘテロなクラスタ上で実行 するバイナリのタイプを指定します。バイナリタイプ名は smake コマンドと .wrapper スクリプトから生成されます。バイナリタイプ名は 用語集を参照してください。
ヘテロな(異なる CPU で構成される)クラスタ上では、ユーザは cpugen オプションで CPU のタイプを指定することができ ます。cpugen に指定可能な値は、全てのクラスタ情報を 含むデータベース scorehosts.db(5) で記 述されているものになります。speed オプションに指定で きる値も scorehosts.db 内で記述されているものになります。 speed 値が指定された場合、指定された値の speed をも つホストを指定することになります。

network=network_name[+network_name]...
ユーザはクラスタ上でユーザプログラムの実行に用いられるネットワークを network オプションで指定して割り当てることができます。有効な network_typescorehosts.db(5) で記 述されています。ユーザは複数のネットワークをユーザプログラムの並列実行 用に指定できます。

priority=number
スケジューリングの優先度は priority オプションで指定できます。 数字が小さい程、高いスケジューリング優先度を持ち、より多くのスケジュー リング機会が与えられます。

monitor[=monitor_type]
リアルタイムユーザプログラム実行モニタをアタッチします。 monitor_type で有効なタイプは loadcommmemorydiskusr0usr1all および ALL です。 load は CPU の活動状態、 comm は通信状態、 memory はメモリ使用量、 disk はディスク使用量、 usr0usr1 はユーザプログラムが設定した負荷の値( (sc_set_monitor() 参照)、 のモニタウィンドウをアタッチします。メモリ使用量およびディスク使用量は、 それぞれの使用量に制限が設けられていた場合はその制限値に、そうでない場 合は利用可能な最大量にスケールされて表示されます。 ユーザが all を指定した場合、usr0usr1 を除く4つのモニタがアタッチされます。 ALL を指定し た場合、全ての8つのモニタがアタッチされます。オプションの値を指定しな かった場合、loadcomm の2つのモニタがアタッチさ れます。 ユーザは X window サーバを動作させていて、環境変数 DISPLAY を 正しく設定する必要があります。

debug[=number]
MPC++ のランタイムや MPICH-SCore のランタイムは、SIGSEGV のよ うな例外シグナルを検出し、debug オプションが指定された場合に GDB(GNU デバッガ)をアタッチされるようプログラムされていま す。number で同時にアタッチできるデバッガの数を制限 します。デフォルトの値は 10 です。環境変数 DISPLAY の値が設定 されていた場合、SCore-D は xterm を環境変数DISPLAYで 指定された X Window サーバに対し起動し、その中で GDB を動かします。環 境変数DISPLAYが設定されていない場合で、カレントディレクトリに score.gdb という名前のファイルが存在し、読み込み可能な場合に は、GDB をアタッチしそこで scored.gdb に書いてある GDB のコマ ンドを実行します。もし環境変数DISPLAYscored,gdbと いうファイルも存在しない場合は、GDB をアタッチし、そこで backtrace コマ ンドを実行します。

statistics[=stat_type]
ユーザプログラムが終了すると、scored はリソースの使用情報を scrun プロセスの標準エラー出力に出力します。 stat_type が指定されていない場合デフォルトでは情報の 概略のみ出力されます。stat_type に指定できる値は、 all および detail です。これらのどちらかが指定された 場合、ノード毎の情報が出力されます。

scored=scored-server [マルチユーザモードのみ]
複数ユーザモードで実行中の SCore-D にログインするため、SCore-D サーバ のホスト名を指定します。このオプションが指定されなかった場合、シングルユーザモードで起動されます。

group=hostgroup [シングルユーザモードのみ]
最初に hostgroup で指定されたホストグループの scout 環境を生成し、そこでシングルユーザモードで実行されます。groupオプションをを指定した場合、シングルユーザモードでもチェックポイントが可能です。

file=filename [シングルユーザモードのみ]
最初に filename で指定されたファイルに記述されたホスト名のリストに従い scout 環境を生成し、そこでシングルユーザモードで実行されます。fileを指定した場合、シングルユーザモードでもチェックポイントが可能です。

restart
クラスタ内のホストは時々クラッシュし、実行中のジョブが予期せず終了され る場合があります。restart オプションが指定された場合、 scored-restart オプション付きで再開されたときに ユーザプログラムの実行が再開されます。この restart オプションは scrun プロセスが生きている間においての み有効であることに注意してください。ユーザが scrun プロセスを kill すると、実行の再開は行われません。

checkpoint[=interval]
このオプションは restart オプションに似ていますが、ユーザプロ グラムの実行状況が指定された時間間隔(分単位)でローカルディスクに保存さ れます。scored が再開されると、プログラムの実行は最後のチェッ クポイントが行われた時点から再開されます。 シングルユーザモードでチェックポイントを行うためには、 SCOUT 環境外で group あるいは file オプションをつけ て起動する必要があります。

cpulimit=limit
ユーザプログラムの動作する時間制限を指定します(単位秒)。

memorylimit=limit
ユーザプログラムが使用するメモリ量を指定します(単位 MB)。このオプショ ンはマルチユーザの場合にのみ有効です。

disklimit=limit
ユーザプログラムが使用するディスク量を指定します(単位 MB)。このオプショ ンはマルチユーザの場合にのみ有効です。

wait
wait オプションが指定されていて、SCore-D に対するログインが資 源不足であった場合、ログイン要求が必要な資源が確保できるまで待つ。この オプションは SCore-D がマルチユーザモードで動いている時にのみ有効です。

message[=mode]
SCore システムが実行中に生成するメッセージをコントロールします。 mode で有効なモードは concise および quiet です。デフォルトでは全てのメッセージが出力されます。 concise は普通のメッセージを抑制し警告およびエラーメッセージ のみを出力します。quiet はエラーメッセージ以外の全てのメッセー ジを抑制します。

resource
resource オプションが指定された場合、scrun は SCore オプションおよびユーザプログラムの要求するリソースを調べ、SCore オプショ ン、リソース要求、ユーザプログラムのパス名を表示して終了します。ユーザ プログラムはクラスタ上で実行されません。

passhup
Version 5.4 以前では, scrun プロセスが SIGHUP シグナルを受け 取るとそのシグナルをクラスタのホスト上で走行中のプロセスにブロードキャ ストされてました。Version 5.6 からは、scrun プロセスが SIGHUP シグナルを受け取ると標準出力および標準エラー出力は、 scrun.output という名前のファイルに出力されるようになり ます。こうすることで scrun をバックグラウンドで起動し、シェルを抜けて も scrun プロセスは正常に処理を続行できます。このオプションは SIGHUP シグナルのこうした取り扱いを version 5.4 以前と同じに するためのものです。

ts=timeslice [シングルユーザモードのみ]
timeslice で指定された時間間隔(単位はミリ秒)でユーザプロセスを実行はデッドロック検出のために割り込まれます。

ジョブコントロールとシグナル

クラスタ上で実行されるユーザプログラムのジョブ状態は scrun の ジョブ状態と結び付けられています。ユーザはクラスタ上で動いている並列ジョ ブを、通常の UNIX コマンドと同じように "^Z"、"fg" および "^C" とタイプ することで一時停止、再開および終了させることができます。さらに、 scrun の出力が "^S" によって止められた場合、scrun の 出力が "^Q" で許可されるまでクラスタ上での実行が一時停止します。"^\" をタイプすると、core ファイルを生成する代わりにチェッ クポインティングを行わせ、SCore-D が予期せず終了(システムダウン)した場 合に再開させられるよう備えることができます。

scrun に配送される UNIX シグナルのいくつかはクラスタ上で走行 している全てのプロセスに転送されます。scrun が転送するシグナルは SIGINT, SIGABRT, SIGTERM, SIGURG, SIGWINCH, SIGUSR1, そして SIGUSR2 です。

入出力のリダイレクション

Unix シェルと同じように、並列プロセスを構成する各プロセスの標準入力お よび標準出力をファイルに指定することができます.scrun の引数 で指定されたユーザ並列プログラムとその引数の直後に ":=" シン ボルとそれに引き続くファイル名が指定された場合,その並列プロセスの標準 入力はそのファイルになります.シンボルが "=:" であった場合は 標準出力がファイルになり,シンボルが "=::" であった場合は指定 されたファイルの内容にアペンドされます.

リダイレクションで指定されるファイル名は計算ホスト上のファイルであるこ とに注意してください.ファイルの指定が基底名("/" を含まない)であった とき,ファイルは SCore-D が管理する作業ディレクトリに作成され,並列ジョ ブの終了と同時に作成されたファイルは全て消去されます.逆に,絶対パス名 であったときは,指定されたパスにファイルが作成されます."/" を含む相対 ファイル名は指定することができません.

SMP クラスタでかつ出力のリダイレクション指定が絶対パスであった場合,そ れぞれの計算ホストで実行する最初のプロセスしか実際の書き込みが行われま せん.同じ計算ホストの他のプロセスは /dev/null への書き込みと なります.

並列ジョブ

Unix シェルと同じように、scrun は単一のコマンドだけでなくパイ プラインで繋がれたコマンドや連続するコマンドもサポートしています。パイ プラインで接続されたコマンドは記号 "==" で区切られ、連続する コマンドは記号 "::" で区切られます。並列ジョブ中の各並列プロ セスはクラスタ内の同一のパーティション(ホスト集合)に割り当てられます。 パイプラインで接続された各並列プロセス中の、同じノード番号を持つプロセ ス同士が、Unix シェルのパイプで繋がれたコマンドと同じように Unix のパ イプで繋がれ、同時にスケジューリングされます。逐次記号("::") で区切られた並列プロセスは、順番に実行されます。

普通の Unix コマンドや C/C++ プログラムのような逐次プログラムを、system(6) を介することで、Unix の system(3) 関数と同じような方法でクラスタ上で実行することが できます。この system コマンドはクラスタのノードを保持してお くために使うことができます。

scatter(6) コマンド、ユー ザ並列プログラムおよび gather(6) を順につなげることで、 ユーザはユーザのワークステーションとクラスタホストとの間で必要なデータ ファイルをやりとりすることができます。

環境変数
DISPLAY
X Window サーバを指定します。

SCORE_OPTIONS
デフォルトの scrun オプションをこの環境変数に設定することがで きます。この値は、オプションの名前とその値をイコール(=)記号で結びつけ たペアのリストの形で指定します。各ペアはコンマ(,)で区切ります。空白記 号を含めてはいけません。環境変数の値の先頭にマイナス(-)記号があっては いけません。

関連項目
scorehosts.db(5), smake(1), scout(1), gather(6), scatter(6), system(6), scored(8), mpc++(1), mpirun