2016-02-16 99 views
-1

我在編譯如下代碼Fortran的MPI狀態錯​​誤

代碼收到以下錯誤:

 IMPLICIT REAL*8(A-H,O-Z) 
     include 'common_files.inc' 
     CHARACTER*100 MNO, MESSAGE 
     integer rank, size, ierror, tag, status(MPI_STATUS_SIZE) 

     call MPI_INIT(ierror) 
     call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror) 
     call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)  
     starttime = MPI_WTIME() 
     /* ........rest of code................. 

編譯輸出:

main.f:23.46:

 integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)   
               1 
Error: Variable 'mpi_status_size' cannot appear in the expression at (1) 
main.f:23.62: 

     integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)   
                   1 
Error: The module or main program array 'status' at (1) must have constant shape 

'common_files.inc'文件包含頭文件'include'mpif.h''。不幸的是,我不允許發佈剩餘的代碼。

我編譯上述使用以下命令

mpif90 -g main.f 

可能是什麼錯誤的可能原因?

+0

不要用相同的內容開始新的問題!如果你需要一個類似主題的新問題,你應該解釋新問題的不同之處,以及你爲什麼不編輯舊問題。 http://stackoverflow.com/questions/35425067/fortran-mpi-init-error –

回答

1

你顯然有與include 'mpif.h'聲明一個問題:

見例如:

 IMPLICIT REAL*8(A-H,O-Z) 
c  include 'mpif.h' 
     integer rank, size, ierror, status(MPI_STATUS_SIZE) 

     call MPI_INIT(ierror) 
     call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror) 
     call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierror)  
     print *, size, " ", rank 
     call MPI_Finalize(ierr) 
     end 

給我:

$ mpif90 foo.f 
foo.f:4.46: 

     integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)   
               1 
Error: Variable 'mpi_status_size' cannot appear in the expression at (1) 
foo.f:4.62: 

     integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)   
                   1 
Error: The module or main program array 'status' at (1) must have constant shape 

而如果我取消了include 'mpif.h'線,它只是編譯和工作。

您應該仔細檢查您的common_files.inc文件。