• 締切済み

MPIによる並列処理

MPICH2を使ってCプログラムの並列処理を行おうとしております。 1台のPCを使用してPC内部の4つのコアで並列処理をさせようとしております。 http://pccluster.web.fc2.com/MPI.html のページを参考にMPICH2のインストールを行い、 mpdboot ~でMPIの起動、プログラムの並列実行は行えたのですが、 ~/mpd.hostsに PCのIP:4 を書き込み、mpdboot -n 1 -f mpd.hostsで起動し、 mpiexec -n 1 xxx.cpp を実行した場合、 n=1より2、3、4の場合のほうが速くはなるのですが、2の場合が4より速くなってしまいます。 これは何かがボトルネックになっていると考えられるのでしょうか? また、mpd.hostsのファイル内で「:4」として1台のPCですが4つのコアがあると指定しているにも関わらず、実行するときに mpiexec -n 5以上の数字 xxx.cpp という指定したコア数以上での実行ができてしまいます。これは何かインストール中の設定で間違いがあるのでしょうか。(mpiexec -n 10 hostnameとした場合なぜかちゃんと10個の応答が同じPC名でかえってきます) 理解がいまいちなので、質問の文章が分かりにくいところもありますが、教えていただけないでしょうか。 よろしくお願いします。

みんなの回答

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

openMPIしか使ったことが無いのですが、 >n=1より2、3、4の場合のほうが速くはなるのですが、2の場合が4より速くなってしまいます。 速さの順では n=1<4<2 ということでしょうか? n=1の場合を速度1として、残りの相対速度はどの程度になりますか? MPIの場合は分散メモリ型ですので、計算に必要なメモリ内容を転送して(同一CPUの場合はコピー)しますので、その分オーバヘッドとなり遅くなる可能性があります。 速度を上げたいのなら、同一PC内はopenMPで共有メモリ型にして、違うPCを跨ぐ場合にはMPI(分散メモリ型)という風に使い分けされてはいかがでしょうか。 n=5以上の場合の理由は分かりません。

関連するQ&A