SCRUN(1) | SCRUN(1) |
まず、scrun は file で指定されたユーザプロ グラムを scrun の起動されたホストで呼び出します。これは必要な リソース情報を得るためにこのように行われます。その後、scrun は scored へのログインを試みます。ログイン後は、 scrun はクラスタ上で動いているユーザプログラムのジョブ状態を コントロールするためのフロントエンドプロセスになります。ユーザプログラ ムが終了すると、scrun も終了します。
scrun への有効な引数は SCore のオプションとなります。オプショ ンは SCore-D への各種リソース指定や、ユーザプログラムの使用する言語ラ ンタイムシステムのオプションです。このマニュアルページでは、SCore-D の オプションのみ解説しています。言語システムのオプションについてはそれら システムのインストールされている場所を参照してください。
scrun の SCore オプションが指定されていない場合には最初の引数、 SCore オプションが指定されている場合には三番目の引数が、クラスタで実行 するプログラムのファイル名となります。指定された実行ファイルは scored によって、割り当てられた全てのクラスタノード上にコピー され実行されます。ファイル名の後ろの引数は全ノードでの実行ファイルの起 動時に渡されます。
実行ファイルは、scrun がファイルを読み込んでクラスタノードに コピーすることができるよう読み込みパーミッションが設定されている必要が あります。また、scrun がリソース情報を得るためにファイルを実 行することができるよう、scrun の起動されたホスト上で実行可能 になっている必要もあります。
scrun プログラムは、scrun の起動されたホストとは異な る OS や CPU を持つクラスタホスト上で並列ジョブを実行させることもでき ます。この場合、scrun がローカルで呼び出す実行ファイルと、ク ラスタ上で起動する実行ファイルとの、少なくとも二つの実行ファイルが存在 しなければなりません。この状況を可能にするため、実行ファイルは SCore の smake(1) もしくは Hmake(1) コマンドでコンパイル する必要があります(make や gmake は用いないでくださ い)。この場合、実行ファイルは smake もしくは Hmake コ マンドによって自動的に生成された .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 オプションが指定された場合,scrun は scout 環境をまず最初に生成し,その環境下 でシングルユーザモードとしてジョブを実行します.
scored が既にクラスタ上で動いている場合、ユーザは scored オプションで、ユーザのログインを受けつける SCore-D サー バホストを指定しなければなりません。SCore-D サーバの起動しているホスト 名を値として指定します。
リソース指定
SCore-D はノードやネットワーク、ディスクなどの様々なクラスタリソースを 管理します。この節ではこれらのリソース指定オプションについて説明します。
ヘテロな(異なる CPU で構成される)クラスタ上では、ユーザは cpugen オプションで CPU のタイプを指定することができ ます。cpugen に指定可能な値は、全てのクラスタ情報を 含むデータベース scorehosts.db(5) で記 述されているものになります。speed オプションに指定で きる値も scorehosts.db 内で記述されているものになります。 speed 値が指定された場合、指定された値の speed をも つホストを指定することになります。
プロセッサ種別 OS バイナリタイプ i386 TurboLinux i386-turbo-linux i386 SuSE Linux i386-suse-linux alpha SuSE Linux alpha-suse-linux i386 Redhat Linux i386-redhat-linux i386-redhat8-linux2_4 i386 Redhat Linux 7.x i386-redhat7-linux2_4 i386 Redhat Linux 8.x i386-redhat8-linux2_4 ia64 Redhat Linux 7.x ia64-redhat7-linux2_4 alpha Redhat Linux alpha-redhat-linux i386 NetBSD i386-unknown-netbsd Sparc SunOS4 sparc-sun-sunos4 Sparc SunOS5 sparc-sun-sunos5
sc_set_monitor()
参照)、
のモニタウィンドウをアタッチします。メモリ使用量およびディスク使用量は、
それぞれの使用量に制限が設けられていた場合はその制限値に、そうでない場
合は利用可能な最大量にスケールされて表示されます。
ユーザが all を指定した場合、usr0 と usr1
を除く4つのモニタがアタッチされます。 ALL を指定し
た場合、全ての8つのモニタがアタッチされます。オプションの値を指定しな
かった場合、load と comm の2つのモニタがアタッチさ
れます。
ユーザは X window サーバを動作させていて、環境変数 DISPLAY を
正しく設定する必要があります。
クラスタ上で実行されるユーザプログラムのジョブ状態は scrun の ジョブ状態と結び付けられています。ユーザはクラスタ上で動いている並列ジョ ブを、通常の UNIX コマンドと同じように "^Z"、"fg" および "^C" とタイプ することで一時停止、再開および終了させることができます。さらに、 scrun の出力が "^S" によって止められた場合、scrun の 出力が "^Q" で許可されるまでクラスタ上での実行が一時停止します。"^\" をタイプすると、core ファイルを生成する代わりにチェッ クポインティングを行わせ、SCore-D が予期せず終了(システムダウン)した場 合に再開させられるよう備えることができます。
scrun に配送される UNIX シグナルのいくつかはクラスタ上で走行 している全てのプロセスに転送されます。scrun が転送がシグナルは SIGHUP, 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) を順につなげることで、 ユーザはユーザのワークステーションとクラスタホストとの間で必要なデータ ファイルをやりとりすることができます。