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クラスタコンソーシアム |