2017-11-21 10 views
1

Ubuntu(14.04)マシンにOpenMPIをインストールしようとしていますが、mpirunでコードを実行できるので、私は成功したと思っていましたが、それは本当に並行して実行されていないということです。MPLがFORTRANコードで並列に実行されていない

私は、次のオプションを持つopenmpiをインストール:

./configure CXX=g++ CC=gcc F77=gfortran \ 
          F90=gfortran \ 
          FC=gfortran \ 
     --enable-mpi-f77 \ 
     --enable-mpi-f90 \ 
     --prefix=/opt/openmpi-1.6.5 
make all 
sudo make install 

私は(自分で書かれていない)のコードを実行していると私はtopでチェックし、それがあったので、並列に動作するように見え、言ったようにいくつかのノードで動作します。

しかし、今、私は簡単なFORTRANコード書かれています:

PROGRAM hello_MPI 
    INCLUDE "mpif.h" 
    INTEGER :: err, size, rank 
    CALL MPI_INIT(err) 
    IF (err /= MPI_SUCCESS) STOP 'Init failed' 
    CALL MPI_COMM_RANK(MPI_COMM_WORLD, rank, err) 
    CALL MPI_COMM_SIZE(MPI_COMM_WORLD, size, err) 
    PRINT*, "Hello world from process ", rank, " of ", size, " processes" 
    CALL MPI_FINALIZE(err) 
END PROGRAM 

をしかし、私は

mpirun -n 4 ./hello_MPI 

でそれを実行したとき、私はそれだけで同じことを実行していることを示す、同じ出力を4回取得1つのプロセスを4つの異なるプロセッサーで処理する

Hello world from process   0 of   1 processes 
Hello world from process   0 of   1 processes 
Hello world from process   0 of   1 processes 
Hello world from process   0 of   1 processes 

この同じコードを別のマシンで実行しました。期待出力を得る:

Hello world from process   0 of   4 processes 
Hello world from process   1 of   4 processes 
Hello world from process   2 of   4 processes 
Hello world from process   3 of   4 processes 
+0

すでに報告されているv 1.6.xが廃止されたリリースであることを既に認識している可能性があります。 'man mpirun'(' --report-bindings'など)に書かれているように、もう少し最近のOpen MPIをチェックしてください(これを投稿する時点でv 3.0.0+)。問題をよりよく診断するために、実際のコード実行環境の詳細をソケット/コアマップなどで診断し、ここでは元のポストで確認してください。オク、フアン? – user3666197

+0

これは、通常、 'mpirun'と' libmpi.so'が一致しないときに起こります。たとえば、Open MPIの 'mpirun'を使用していて、あなたのアプリがMPICHまたはOpen MPIの別のバージョンとリンクしていたとします。 –

答えて

0

私はそれを解決することができました。正直言って、とてもばかげていました。何らかの理由で私は適切なOpenMPIインストールを使用していませんでした(私はそれがどのようなものを使用しているのか分かりません)。私は右のmpif90を使用して再コンパイルし、右のmpirunを使用して実行すると、今度は期待される結果が得られます。 混乱して申し訳ありませんが、私はこれにはかなり新しいです。そして助けてくれてありがとう!

関連する問題