scrun
コマンドで起動する際に、使いたいリソースを SCore-D に指定することができます。リソース指定に利用可能なオプションの詳細については scrun
(1) man ページを参照してください。
オプションでリソースを指定するには、クラスタコンフィギュレーションの知識が必要となります。これは SCore クラスタデータベースファイル /opt/score/etc/scorehosts.db
を見ることで得られます。以下に例を示します:
# PM/Myrinet myrinet type=myrinet \ -firmware:file=/opt/score/share/lanai/lanai.mcp \ -config:file=/opt/score/etc/pm-myrinet.conf # PM/Ethernet ethernet type=ethernet \ -config:file=/opt/score/etc/pm-ethernet.conf # PM/Agent/UDP udp type=agent -agent=pmaudp \ -config:file=/opt/score/etc/pm-udp.conf # PM/SHMEM shmem0 type=shmem -node=0 shmem1 type=shmem -node=1 # Macro to define a host #define PCC msgbserv=(server.pccluster.org:8764) \ cpugen=pentium-iii speed=500 smp=2 \ network=myrinet,ethernet,udp,shmem0,shmem1 \ group=pcc # comp0.pccluster.org PCC comp1.pccluster.org PCC comp2.pccluster.org PCC comp3.pccluster.org PCC以下は
scout
(1) セッション内で実行される scrun
(1) コマンドでオプションを指定する例です:
$ scout -g pcc SCOUT: Spawn done. SCOUT: session started $
pcc
グループは上の PCC
ホストマクロ内で group=pcc
のように指定されています。
はじめに の節で ./hello
コマンドを四つのノード上で起動する例があげられています。そのコマンドをもう一度見てみましょう:
$ scrun -nodes=4 ./hello SCORE: connected (jid=100) <0:0> SCORE: 4 hosts ready. Hello World! (from node 2) Hello World! (from node 0) Hello World! (from node 3) Hello World! (from node 1)オプション
-nodes=4
でコマンドが四ノード上で実行されるべきであることを指定します。scrun
がまずユーザレベル並列オペレーティングシステム scored
(8) を、上の scout
コマンドの pcc
グループで指定されるクラスタホスト上で呼び出します。その後、ユーザプログラムが scored
オペレーティングシステムによって呼び出されます。要求されたノード数がパーティション内のノード数より少ない場合は、scored
がパーティションの後ろのほうのノードから順にノードを割り当て、ロードバランスが良くなるようにします。例えば、scout
の起動時に指定されたグループが 16 ノード(ノード 0 から 15 番まで)であるときに、上の scrun
コマンドが実行されると、このコマンドにはノード 12、13、14 および 15 が割り当てられます。ユーザプログラムからは論理番号 0、1、2 および 3 として見えます。ユーザが実際に割り当てられるノードを指定する方法はありません。
上の例では、四ノードが指定されています。もしクラスタ内の各ノードが複数のプロセッサを持つ SMP クラスタである場合 (データベース中の PCC
の定義では smp=2
が定義されています)、四つのホスト全てでプログラムが起動されるわけではありません。割り当てられるホストの数は、指定されたノード数を SMP 中のプロセッサの数で割った数になります。上の例では、(二つのプロセッサを持った) 二つのホストが使用されます。これはコマンド 'scrun -nodes=2x2 ./hello
' と同じになります。四つのホスト全てを使用するには、以下のオプションを指定しなければなりません:
$ scrun -nodes=4x1 ./hello
x
オプションは 4
つのホスト上で、それぞれ 1
プロセスずつ生成するよう指定しています。
$ scrun -nodes=4x2 ./hello
hello
プログラムは 4
つのホスト上でそれぞれ 2
つのプロセッサを用い、従って 8 ノードがプログラムの実行に使用されます。
以下は scrun
(1) コマンドを用いて並列プログラムを実行する他の例です。
$ scrun -nodes=4,statistics ./a.out
a.out
を四ノード上で実行し、プログラムが終了すると使用したリソースの情報が scrun
プロセスの標準エラー出力に出力されます。
$ scrun -nodes=4,monitor ./a.out
a.out
を四ノード上で実行し、X Window 版リアルタイムモニタをアタッチします。ユーザは X window サーバを走らせており、環境変数 DISPLAY
を正しく設定する必要があります。
$ scrun -nodes=2,network=myrinet ./a.outクラスタに複数のネットワークがある場合、ユーザはメッセージやデータの転送に用いるネットワークを
network=network_name
オプションで指定することができます。上の例では、a.out
を二ノード上で起動し、上のクラスタデータベースで定義されているネットワーク myrinet
を用いるよう指定しています。
$ scrun -nodes=3 ./a.out
a.out
をクラスタ内のホストの数に合わせて、三ノードまたは四ノードで実行します。ノード数は次の二の累乗に切り上げられます。クラスタ内に 7 つのコンピュートホストがある場合には、ぴったり 3 つのホストが割り当てられます。
$ scrun -nodes=2,cpulimit=100 ./a.out
a.out
を二ノード上で、タイムリミット 100 秒で起動します。
$ scrun -nodes=4.linux ./a.out
a.out
をヘテロクラスタ内の、バイナリタイプ linux
が動作している四ノード上で実行します。
$ scrun -nodes=4.alphalinux ./a.out
a.out
をヘテロクラスタ内の、バイナリタイプ alphalinux
が動作している四ノード上で実行します。
$ scrun -nodes=4.alphalinux.alpha-21264 ./a.out
a.out
をヘテロクラスタ内の、バイナリタイプ
alphalinux
が動作していて CPU タイプが
alpha-21264
である四ノード上で実行します。
alpha-21264
は、クラスタデータベース内で属性
cpugen=gentype
を用いて定義された CPU タイプでな
ければなりません。
$ scrun -nodes=2..pentium-iii.400 ./a.out
a.out
をヘテロクラスタ内の、 CPU タイプが
pentium-iii
でありスピードが 400
である二ノー
ド上で実行します。400
は CPU のスピードを表す番号です(通
常はプロセッサのクロックスピードを MHz で表します)。クラスタデータベー
ス内で属性 speed=number
を用いて定義されている番
号でなければなりません。
SCOUT セッションはプロンプトで exit
を実
行すると終了します:
$ exit SCOUT: session done
![]() |
PCクラスタコンソーシアム |