2012-02-24 59 views
1

我在C:\ Program Files \ OpenMPI_v1.5.4-win32 \中安裝了openmpi,並且想編譯boost以生成圖形並行庫。但得到了以下錯誤:在msvc 2010中構建boost MPI的錯誤

The system cannot find the path specified. 
The system cannot find the path specified. 
The system cannot find the path specified. 
The system cannot find the path specified. 
MPI auto-detection failed: unknown wrapper compiler C:/Program Files/OpenMPI_v1. 
5.4-win32/bin/mpic++.exe 
Please report this error to the Boost mailing list: http://www.boost.org 
You will need to manually configure MPI support. 
MPI launcher: mpirun -np 

,當我在Visual Studio 2010中命令提示符下運行:

b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=32 stage --debug-configuration 

我加入boost_1_48_0 \工具MPI配置\建立\ V2 \用戶config.jam中如下圖所示:

using mpi : "C:/Program Files/OpenMPI_v1.5.4-win32/bin/mpic++.exe" ; 

我相信這類似的問題之前已經被要求,但沒有得到答案:

How to build boost::mpi library with Open MPI on Windows with Visual Studio 2010

回答

2

如果你不介意的話,你可以使用MS MPI V6,下載二從這裏https://www.microsoft.com/en-us/download/details.aspx?id=47259

然後,你需要做出一些調整至mpi.jam文件。對於舊版本的boost,mpi.jam位於文件夾tools/build/v2/tools /中,對於新版本的boost,位於tools/build/src/tools /中。

第248行左右,您需要進行以下調整。由於MS將API與HPC分開。

local win_ms_mpi_sdk = "C:\\Program Files (x86)\\Microsoft SDKs\\MPI" ; 
local win_ms_mpi = "C:\\Program Files\\Microsoft MPI" ; 

#local cluster_pack_path_native = "C:\\Program Files\\Microsoft Compute Cluster Pack" ; 
#local cluster_pack_path = [ path.make $(cluster_pack_path_native) ] ; 
if [ GLOB $(win_ms_mpi_sdk)\\Include : mpi.h ] 
{ 
    if $(.debug-configuration) 
    { 
    ECHO "Found Microsoft Compute Cluster Pack: $(cluster_pack_path_native)" ; 
    } 

    # Pick up either the 32-bit or 64-bit library, depending on which address 
    # model the user has selected. Default to 32-bit. 
    options = <include>$(win_ms_mpi_sdk)/Include 
      <address-model>64:<library-path>$(win_ms_mpi_sdk)/Lib/x64 
      <library-path>$(win_ms_mpi_sdk)/Lib/x86 
      <find-static-library>msmpi 
      <toolset>msvc:<define>_SECURE_SCL=0 
      ; 

    # Setup the "mpirun" equivalent (mpiexec) 
    .mpirun = "\"$(win_ms_mpi)\\Bin\\mpiexec.exe"\" ; 
    .mpirun_flags = -n ; 
} 
1

我遇到了同樣的問題,並用Microsoft MPI解決了它。我使用boost 1.61.0和Microsoft MPI v7.1(可在https://www.microsoft.com/en-us/download/details.aspx?id=52981處獲得)。下載並安裝SDK和MsMpi安裝程序。

我做了與William提議的位於tools/build/src/tools中的mpi.jam文件相同的更改。

我加入了

using mpi ; 

命令將用戶config.jam中,應設在用戶目錄。否則,請轉到tools/build/src並將位於那裏的user-config.jam文件移動到您的用戶目錄中。添加

using mpi : C:\\Program Files\\Microsoft MPI\\Bin\\mpiexec.exe ; 

導致多個錯誤。首先,空格沒有在文件的.jam允許和第二,如果我找到在沒有空格的路徑文件,就像

using mpi : C:\\MicrosoftMPI\\Bin\\mpiexec.exe ; 

導致錯誤報告,該mpi.jam文件已在使用通過另一個進程。向路徑添加標記標記也沒有幫助。但它與using mpi;聲明一起工作,沒有任何補充。

確保MPI SDK Include,Lib和MPI Bin目錄在您的路徑環境變量中列出。

下一步是構建boost.MPI。打開boost根目錄下的命令提示符,然後用你想要的參數和--with-mpi調用bjam。請小心指定variant = debug或variant = release標誌,否則將會出現nameclash錯誤。 (詳情請參閱這裏http://lists.boost.org/boost-build/2009/12/22854.php)。

這就是爲我解決它。