4 つのプロセス (8 スレッドのクアッドコア Intel Core i7 CPU) を起動するだけの問題の最小限の例があり、何らかの理由MPI_Init
で非常に長い時間がかかるようです。
これが私のコードです:
1 program smear_sfs
2
3 integer, parameter :: ikind = 4
4 integer, parameter :: rkind = 8
5
6 integer(kind = ikind) :: isize, iproc, ierr
7 integer(kind = ikind) :: i, j
8
9 include "mpif.h"
10 integer(kind = ikind) :: istat(MPI_STATUS_SIZE)
11
12 print*, 'Section 1'
13
14 ! initialize mpi
15 write(*, '(a)', advance='no'), 'Calling MPI_Init ...'
16 call MPI_Init(ierr)
17 write(*, '(a)') 'done'
18 print*, 'ierr = ', ierr
19 call MPI_Barrier(MPI_COMM_WORLD, ierr)
20 call MPI_Comm_Rank(MPI_COMM_WORLD, iproc, ierr)
21 call MPI_Comm_Size(MPI_COMM_WORLD, isize, ierr)
22 do i = 0,isize
23 call MPI_Barrier(MPI_COMM_WORLD, ierr)
24 if(iproc.eq.i) write(*, '(a, i3, a)') 'rank(', iproc, ') reporting'
25 call MPI_Barrier(MPI_COMM_WORLD, ierr)
26 enddo
27
28 ! shutdown MPI
29 call MPI_Barrier(MPI_COMM_WORLD, ierr)
30 call MPI_Finalize(ierr)
31
32 end program smear_sfs
出力の(時間指定された)バージョンは次のとおりです。
Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ... Section 1
Calling MPI_Init ...done
ierr = 0
rank( 0) reporting
done
ierr = 0
rank( 1) reporting
done
ierr = 0
rank( 2) reporting
done
ierr = 0
rank( 3) reporting
real 0m45.350s
user 1m25.794s
sys 1m31.731s
プログラムはすぐに出力Section 1
し、次のものを出力しますが、その後、印刷と残りの出力のCalling MPI_Init ...
前に長時間ハングします。done
なんらかの理由で、これは長い間ハングアップしており、その理由がわかりMPI_Init
ません。
まったく問題がある場合、これを初めて実行したときに、ファイアウォールから、コンピューターに何かが起こっていると主張する奇妙な警告が表示されましたが (orted.exe
私はそうだったと思います)、そのエラーはもう発生していません。
これを cygwin64 を介して Windows 8 で実行し、MPIf90 でコンパイルしています。
ありがとう。