понедельник, 28 июля 2014 г.

О том как подружится с Boost.MPI под Windows

Недавно потребовалось накидать windows програмку под MPI, и мне конечно же захотелось воспользоватся boost'ом, точнее его обёрткой boost.mpi. Однако путь этот оказался сложным и тернистым и именно поэтому я оставлю здесь эту заметку, надеюсь кому-нибуть она сэкономит и время и нервы.



В качестве реализации MPI мы будем использовать Windows MPI (т.к. с попытками подружить Boost с OpenMPI и MPICH2 был очень плачевный опыт).

1. Качаем и устанавливаем Windows MPI

2. Качаем Boost (я использовал 1.55), распаковывамем и подготавливаем его к сборке. Для этого открываем файл \tools\build\v2\user-config.jam и в самый конец вписываем строку:

using mpi ;

Теперь открываем tools\build\v2\tools\mpi.jam и фиксим путь к Windows MPI, для этого находим

local cluster_pack_path_native = "C:\\Program Files\\Microsoft Compute Cluster Pack" ;

и меняем на путь к вашей библиотеке

local cluster_pack_path_native = "C:\\Program Files\\Microsoft MPI" ;

Это необходимо делать, так как при сборке автопоиск MPI в бусте использует путь к старым версиям ms mpi

3. Компилируем Boost.mpi или весь Boost, как вам удобнее. Вот например конфиг для компиляции только статических библиотек boost.mpi (и  их зависимостей) под Visual Studio:

call .\bootstrap.bat

.\b2.exe --with-mpi^
stage --stagedir=stage32 ^
toolset=msvc ^
variant=debug ^
link=static ^
threading=multi ^
runtime-link=static

.\b2.exe --with-mpi^
stage --stagedir=stage32 ^
toolset=msvc ^
variant=release ^
link=static ^
threading=multi ^
runtime-link=static

.\b2.exe --with-mpi^
stage --stagedir=stage64 ^
toolset=msvc ^
variant=debug ^
link=static ^
threading=multi ^
runtime-link=static ^
address-model=64

.\b2.exe --with-mpi^
stage --stagedir=stage64 ^
toolset=msvc-10.0 ^
variant=release ^
link=static ^
threading=multi ^
runtime-link=static ^
address-model=64


4. Профит

P.S. не забываем подключать в проект библиотеку msmpi.lib и пути к заголовочным файлам mpi

Комментариев нет:

Отправить комментарий