MPI プログラムを実行するには、コンパイルしたものと同じ MPI で実行する必要があります。
MPI の切り替えは -mpi オプションもしくは SCORE_MPI 環境変数によって行います。 現在のバージョンで指定できるのは、mpich-1.2.5 と yampi です。 引数も環境変数も指定されていないときは、 mpich-1.2.5 が使用されます。
mpicc, mpif77等 SCore 上の MPIコンパイラで 生成されたバイナリは SCore オペレーティングシステムのもとで mpirun コマンドで起動します。従って、プログラムの実行にさきだち、 SCore オペレーティングシステムの シングルユーザ環境、 または、 複数ユーザ環境の どちらかが、使用できる状態になっている必要があります。
scout
プログラムを起動する必要があります。
scout
はリモートシェル環境を提供します。
そして、scout
の上で
mpirun をつかいMPIアプリケーションを実行します。
例えば、プログラムを 4 ノードで実行する場合は以下のようにします:
$ SCBDSERV=server.pccluster.org
$ export SCBDSERV
$ msgb -group pcc&
$ scout -g pcc
[comp0-3]:
SCOUT(6.0.0): Ready.
$
. . .
. . .
$ mpirun -np 4 ./mpi_program args ...
. . .
. . .
$ exit
SCOUT: session done
$
scrun に渡すオプションを指定する場合は環境変数 SCORE_OPTIONS
を指定します。
$ SCORE_OPTIONS=group=pcc
$ export SCORE_OPTIONS
$ mpirun -np 4 ./mpi_program args ...
$ SCBDSERV=server.pccluster.org
$ export SCBDSERV
$ msgb -group pcc&
$ scout -g pcc
[comp0-3]:
SCOUT(6.0.0): Ready.
$
. . .
. . .
$ mpirun -np 8 alltoall 3000 10000
SCORE: Connected (jid=1)
<0:0> SCORE: 8 nodes (4x2) ready.
8 3000 1052.230600
$
. . .
. . .
$ exit
SCOUT: session done
$
複数ユーザ環境では 環境変数 SCORE_OPTIONS で SCore-D を制御している ホストを指定する必要があります:
$ SCORE_OPTIONS=scored=comp3.pccluster.org
export SCORE_OPTIONS
$ mpirun -np 8 ./mpi_program args...
MPICH-SCore では mpirun に -score オプションに よって、scrun のオプションを指定できます。
$ mpirun -np 8 -score scored=comp3 ./mpi_program args...
MPICH-SCore では、-np オプションに nxm と指定するにより、n 台のホストで m プロセスずつ動かすと指定することができます。
$ mpirun -np 4x1 ./mpi_program args...
MPICH-SCore のプログラムは、scrun で実行することができます。
Short protocol と Eager protocol の切り替え点は、PM デバイスの MTU の最小値です。
Eager protocolと Rendezcous protocolの切り替え点は、MPIアプリケーション実行時に
指定することができます。mpi_eager
オプションを用います。切り替え点のデフォルト
は16kbytesです。
切り替え点を 300kbytes に変更する場合、次のように指定します:
$ mpirun -np 4x2 -score mpi_eager=300000 ./mpi_program args...
次のように指定することもできます:
$ scrun -nodes=4x2,mpi_eager=300000 ./mpi_program args...
PMリモートメモリアクセス機能は、現在のところPM/Myrinetおよび、
PM/Shmem(共有メモリを用いた、SMPノード内での通信のためのPM)でのみ
サポートされています。
MPICH-SCore version 1.0 では、rendezvous protocol を使用したMPIメッセージ転送に
PMリモートメモリアクセス機能を用いることができます。
デフォルトではPMリモートメモリアクセス機能は使わないように設定されています。
PMリモートメモリアクセス機能を有効にするには、mpi_zerocopy
オプションを用います:
$ mpirun -np 4x2 -score mpi_zerocopy=on mpi_program args...次のように指定することもできます:
$ scrun -nodes=4x2,mpi_zerocopy=on ./mpi_program args...
リモートメモリアクセス機能を用いたメッセージ通信は、ハードウェアによっては、 CPUによるメモリ間コピーを行わずに、実装することができます。 このメッセージ通信のことをゼロコピー通信とよびます。 PM/Myrinet のリモートメモリアクセス機能を用いたMPIメッセージ通信はゼロコピー通信です。 ゼロコピー通信はメインメモリへの負荷を軽減するため、point-to-point通信における最大バンド幅を 向上させます。ゼロコピー通信は、それがアプリケーションの性能向上に有効であるかどうかは、 そのアプリケーションに依存します。ゼロコピー通信には、その開始のための 同期オーバヘッドがあるからです。
SMPクラスタにおける、SMPノード内でのリモートメモリアクセスには、PM/Shmemの リモートメモリアクセス機能が用いられます。この機能は PM/Shmemデバイスドライバによるプロセス間メモリコピーによって実現されています。 SMPノード内でのプロセス間通信を1回のメモリコピーによって実現するので、 ワンコピー通信と呼べます。
YAMPI-SCore では mpirun に -scrun オプションに よって、scrun のオプションを指定できます。
$ mpirun -np 8 -scrun scored=comp3 ./mpi_program args...
YAMPI-SCore では、-np オプションに nxm と指定するにより、n 台のホストで m プロセスずつ動かすと指定することができます。
$ mpirun -np 4x1 ./mpi_program args...
YAMPI-SCore のプログラムは、環境変数 _YAMPI_ARCH を PM に 設定することにより。scrun で実行することができます。
$ _YAMPI_ARCH=PM
$ export _YAMPI_ARCH
$ scrun -nodes=4x1,group=pcc ./mpi_program args...
$ _YAMPI_RSIZE=1024
$ export _YAMPI_RSIZE
$ mpirun -np 4x2 ./mpi_program args...
mpic++(1), mpicc(1), mpif77(1), mpirun(1) scrun(1)