私は MPI と Fortran 77 初心者です。FKRPRO.f
OpenMPIを使用して並列化したいFortran 77 コードがあります。コードには、実行時に別のファイルから供給される多くのパラメーターが必要です。コンパイルと実行はこのようなものです
gfortran -o FKRPRO FKRPRO.f
./FKRPRO < Modelfile.txt
コード(私のコードではない)の同等の行は
PARAMETER(LIN=5)
INTEGER ERROR
LOGICAL PRNTA
PRNTA=.FALSE.
READ(LIN,'(L3)') PRNTA
READ(LIN,21) M1,M2
21 FORMAT(11I5)
等々。誰かREAD(LIN,'(L3)') PRNTA
意味を教えてください。入力ファイル Modelfile.txt の入力は次のようなものです
.F.
0 64
and so on..
必要な MPI ステートメントをコードに入れました。
INCLUDE 'MPIF.H'
...
CALL MPI_INIT(ERROR)
CALL MPI_COMM_SIZE(MPI_COMM_WORLD,NPROCS,ERROR)
CALL MPI_COMM_RANK(MPI_COMM_WORLD,PRANK,ERROR)
...
CALL MPI_TYPE_FREE(NEWMATRIX,ERROR)
CALL MPI_FINALIZE(ERROR)
すべてのプロセスが入力ファイルを読み取ることができません。このようなコードをコンパイルして実行しました
mpif77 -o bc3 FKRPROG5.f
mpirun -np 4 bc3 < Modelfile.txt
これは機能していません。次のエラーが表示されます。最初のプロセスまたはランク 0 のみがファイルを読み取ることができます。
At line 50 of file FKRPROG5.f (unit = 5, file = 'stdin')
Fortran runtime error: End of file
At line 50 of file FKRPROG5.f (unit = 5, file = 'stdin')
Fortran runtime error: End of file
At line 50 of file FKRPROG5.f (unit = 5, file = 'stdin')
Fortran runtime error: End of file
mpirun has exited due to process rank 3 with PID 866 on
node Avinash-rMBP.local exiting improperly. There are two reasons this could occur:
1. this process did not call "init" before exiting, but others in
the job did. This can cause a job to hang indefinitely while it waits
for all processes to call "init". By rule, if one process calls "init",
then ALL processes must call "init" prior to termination.
2. this process called "init", but exited without calling "finalize".
By rule, all processes that call "init" MUST call "finalize" prior to
exiting or it will be considered an "abnormal termination"
This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
50行目READ(LIN,'(L3)') PRNTA
.誰かが私が間違っているところを親切に指摘してください:(では、この入力ファイル< Modelfile.txt からすべてのプロセスを読み取るにはどうすればよいですか??ありがとう。