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