lam/mpi 環境の build はなんとかこなして、各ホストにセットアップした。
ここからが難行の始まりで、 mpi 環境が boot するまでしばらくハマる。
各ホストの mpi daemon を kick するのに rsh/ssh を使うのは許すとして、そしてこいつらは似たようなものだから一つのモジュールで扱うのも妥当として、どうして default が rsh でそれを ssh に置き換える方法を探すのにこんなに苦労するんじゃッ。何も訊かず rsh/ssh を一つのモジュールでやるからには自前で判別して使える方を使うのかと期待したじゃないか。最後には、自前でリモートホストの login shell の判別をやった挙げ句に sh(bash)/csh(tcsh) 以外のことを考えてなくて勝手に ~/.profile を見に行ってコケる始末。 zsh だからそんなのな〜いっつーの。
そして、 mpi 化したプログラムを起動するのに夜中までかかってしまう体たらく。
build に使った俺の Mac (n0) と、そいつを持っていった別の Mac (n1)、そして private にぶら下がる FreeBSD (n2) とホストがあって、どれも mpirun で自ホスト指定で実行させると動くのに、複数ホストで動かそうとすると駄目。
これが、「どのホストから」「どのホストとどのホストを含めて」実行させようとしたかでエラーが出たり出なかったり、密かに process はあがってるんだが mpi_init 待ちでだんまりだったりどこで死んでるのかさっぱり判らん、っつーか調べようがない。このホストのプロセスがシグナルいくつで死んだと通知はされるものの、だ〜れが殺したなんとやらで、誰に殺されたのかが判らなくて手の打ちようがない、ウッキ〜〜〜。
ターゲットを OS が同じ2台の Mac に絞ってあれこれやってると、俺のマシンから kick すると起動されないがリモートのマシンから kick すると起動されるところまで行く。なんでだ?ナニが違う?なんどやっても向こうから kick すればちゃんと計算できるのに、ローカルホストからだと駄目
この謎がどうにも解けなくて、最後に自分のマシンにダミーユーザを作って、そいつで同じことやってユーザ環境の所為じゃないことを確かめてやっと前進。
1) lamboot を実行したホストでは lamd に起動されたプロセスは lamboot が実行されたディレクトリを見ているくさい
2) リモートホストでは lamd に起動されたプロセスはホームディレクトリ上で動いているくさい
3) どうもこのプログラム、各 slave もカレントディレクトリからファイルを読み込むらしいっ。萎え〜〜〜〜〜〜(o_ _)o
ふつー master でファイル入出力して slave は計算だけするようなデザインにしないか〜〜
要するに、リモートホストから実行された時は、リモートの側のカレントディレクトリに必要なファイルがあり、リモートに取ってのリモート、もともと lamboot を実行した俺の計算機の側では、必要なファイルがあるところで lamboot を実行していたという……。
で、ついでに master は origin ホストで動くようで最終結果はリモートから実行されてもローカルホストに落ちてるんだが……。
これ以上はプログラムの作者を小一時間問いつめないと駄目だな。
[referer: [an error occurred while processing this directive]]