2016-02-16 60 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文件。