2012-02-24 2 views
1

Я установил openmpi в C: \ Program Files \ OpenMPI_v1.5.4-win32 \ и хочу скомпилировать boost для создания графически-параллельной библиотеки. Но получил следующее сообщение об ошибке:Ошибка в создании boost MPI в msvc 2010

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 

, когда я побежал в визуальной командной строке Studio 2010.:

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

я добавил конфиг MPI в boost_1_48_0 \ инструменты \ построить \ v2 \ User-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

Если вы не возражаете, вы можете использовать v6 MS MPI, downdload здесь 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 Setup.

Я ввел те же изменения, что предложил Уильям в файле mpi.jam, который находится в инструментах/build/src/tools.

Я добавил команду

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 уже используется другим процессом. Добавление меток qotation в путь также не помогает. Но он работал с оператором using mpi; без каких-либо дополнений.

Убедитесь, что MPI SDK Include, Lib и каталог MPI Bin указаны в переменной окружения пути.

Следующим шагом является создание boost.MPI. Откройте командную строку в корневом каталоге boost и вызовите bjam с вашими желаемыми параметрами и --with-mpi. Будьте осторожны, чтобы указать флаг = debug или variant = release, так как в противном случае вы получите ошибку nameclash. (См. Здесь подробности http://lists.boost.org/boost-build/2009/12/22854.php).

Это то, что решило это для меня.