SCore-D リソースの指定


SCore-D はホスト、ネットワーク、ディスクなどの各種クラスタリソースを管理します。ユーザはプログラムを 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


PCCC logo PCクラスタコンソーシアム

CREDIT
This document is a part of the SCore cluster system software developed at PC Cluster Consortium, Japan. Copyright (C) 2003 PC Cluster Consortium.