やっとバグが見つかった

自分が使っているプログラムを移植したら、ちゃんと動かなくなりました。マニュアルとかみると、動くはずなのに…。こうしたデバッグは、手を焼くものです。おまけに、最初は標準出力が表示されなかったり、デバッグのために追加した行に実行時にエラーになるバグがあったりで、厄介なパターンでした。それでも、エラーがありそうな部分の変数を丁寧に見て行くと、原因を見つけることができました。まるまる、3日かかりました。結局、MPIという並列にプログラムを動かす規格のバージョンが古かったのです。それで、一ヶ所だけ最新のバージョンで追加された機能を使っていて、そこでエラーになったいました。古い規格に合わせて書き直すと、あっけなくちゃんと走りました。
なお、プログラムを並列化しても、プログラム間のデータのやり取りが多いと、CPUの数を増やしても計算速度が上がらなくなることが知られています。それで、実際にやってみると、そうなっています。今のところ、8台を使うと一番速くなります。18台あるのに。1000BASE−Tでは、こんなものですね。Infinibandが滅びないわけがわかりました。でも、どのくらい速いのだろう?