2008/1/23

MPICH2 で SOCKET BUFFER SIZE を変える  プログラミング

例えばたくさんのマシンを使用していて、たくさんのデータ交換をしている場合で、MPICH2 で原因不明のエラー(↓のようなエラー、しかもエラーメッセージが毎回変わる)が出ているとしたら…

[cli_1]: aborting job:
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(294)............: Initialization failed
MPID_Init(93)....................: channel initialization failed
MPIDI_CH3_Init(35)...............:
MPIDI_CH3I_Progress_init(309)....:
MPIDU_Sock_listen(379)...........:
MPIDU_Socki_free_eventq_mem(1005): unable to set the send socket buffer size (size=262144,errno=55:(strerror() not found))
[cli_2]: aborting job:
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(294)............: Initialization failed

.....

socket の buffer size が足りていないことが考えられます。

この場合は環境変数で以下のように MPICH2 で使用する socket buffer size を変えることができます。注意として、同時に OS の最大 socket buffer size も変える必要性が出てくる場合もあることです。FreeBSD のデフォルトの最大 socket buffer size は 256kB なのですが、MPICH2 でそれ以上の socket buffer size を使用する場合は、FreeBSD の方の設定も変えなくてはなりません。

・MPICH2 の socket buffer size を変える。
$ setenv MPICH_SOCKET_BUFFER_SIZE 524288
(sh 系は export MPICH_SOCKET_BUFFER_SIZE=524288 など)

・FreeBSD の最大 socket buffer size を 1MB に変える。(デフォルトは 256kB)
# sysctl -w kern.ipc.maxsockbuf=1048576

あるいは /etc/sysctl.conf に以下を書く
kern.ipc.maxsockbuf=1048576
0

2008/1/5

MPICH2 で mpdboot  プログラミング

メモ。

MPICH2 で mpd を rsh を使って全てのマシーンで起動する。

% mpdboot --rsh=rsh -n 4 -f ~/.mpd.hosts

-n 4 はマシン数。ここでは4台。
~/.mpd.hosts はマシン名が書かれたファイル。

machine1
machine2
machine3
machine4

の様にマシン名が書かれている。
0



teacup.ブログ “AutoPage”
AutoPage最新お知らせ