2017-09-25 182 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