2017-09-25 130 views
0

运行的openmpi命令 “mpicxx hello_cxx.cc -o你好”,而的openmpi:错误:“MPI”尚未声明

hello_cxx.cc: In function ‘int main(int, char**)’: 
hello_cxx.cc:25:5: error: ‘MPI’ has not been declared 
    MPI::Init(); 
    ^~~ hello_cxx.cc:26:12: error: ‘MPI’ has not been declared 
    rank = MPI::COMM_WORLD.Get_rank(); 
      ^~~ hello_cxx.cc:27:12: error: ‘MPI’ has not been declared 
    size = MPI::COMM_WORLD.Get_size(); 
      ^~~ hello_cxx.cc:31:5: error: ‘MPI’ has not been declared 
    MPI::Finalize(); 
    ^~~ 
+0

为了帮助这将真正帮助看看,你把在这里的代码,而不是只有两行。 –

+0

此外,它也会帮助您知道哪些操作系统,您使用的OpenMPI版本。 –

+0

我已经尝试了3个不同的版本,都是Ubuntu Kylin 17.04中的版本2或更高版本。 –

回答

0

您的应用程序正在使用MPI C++绑定总是得到下面的错误。 请记住,C++绑定已从MPI标准中删除。

从Open MPI的角度来看,C++绑定仍然在这里,但它们不再是默认构建的,因为Open MPI 2.0.0

因此,如果您使用的是Open MPI 2.0.0或更高版本,则首先需要确保已构建C++绑定。 如果不是,则需要重新构建Open MPI,并使用--enable-mpi-cxx选项进行配置。

从长远来看,你应该真的离开MPI C++绑定。 您可以使用普通的C绑定,或者探索备用的C++绑定,例如流行的Boost:MPI库。

0

我也遇到了这个问题,但我没有root权限。 正如前面所提到的,Open MPI 2.0.0已经改变了构建模式。所以你只需要改变语法。

我遇到了错误:

错误: 'MPI' 尚未声明

mpifile = MPI::FILE_NULL; 

从OpenMP的2.0 API:

http://mpi-forum.org/docs/mpi-2.0/mpi-20-html/node217.htm#Node217

我找到了新的错误句柄是MPI_FILE_NULL.I直接在我的代码中更改它,然后它工作。

下一个环节是关于废弃了,因为MPI-2.2:

http://mpi-forum.org/docs/mpi-2.2/mpi22-report/node328.htm#Node328