Setting up your MPI Implementation
Во-первых, вам нужно отсканировать файлinclude/boost/mpi/config.hpp
и проверить, нужно ли изменить некоторые настройки для реализации MPI или предпочтений.
В частности, макросBOOST_MPI_HOMOGENEOUS
, который вам нужно будет комментировать, если вы планируете работать на разнородном наборе машин. См.оптимизациюпримечания ниже.
Большинство реализаций MPI требуют конкретной компиляции и опций ссылок. Чтобы замаскировать параметры тезисов для пользователя, большинство реализаций MPI предоставляют обертки, которые бесшумно передают эти параметры компилятору.
В зависимости от вашей реализации MPI может потребоваться некоторая работа, чтобы сообщить Boost, какой конкретный вариант MPI использовать. Это делается через, используяmpi;
директивупроекта-конфигурацию.джем
файл.
Общая форма следующая (не забудьте оставить места вокруг:и до;):
using mpi
: [<MPI compiler wrapper>]
: [<compilation and link options>]
: [<mpi runner>] ;
Для тех, кто используетMPICH2,OpenMPIили некоторые из их производных, конфигурация может быть почти автоматической. На самом деле, если ваша командаmpicxx
находится на вашем пути, вам просто нужно использовать:
using mpi ;
Директива найдет обертку и определит варианты использования.
- Если обертка не на вашем пути
...или если у него нет обычного названия обертки, вам нужно будет сообщить системе сборки, где ее найти:
using mpi : /opt/mpi/bullxmpi/1.2.8.3/bin/mpicc ;
- Если ваша обертка действительно эксцентрична
или не существует вообще (это случается), необходимо предоставить компиляцию и варианты сборки в среду сборки с использованиемджем
директив. Например, для конкретной реализации Intel MPI можно использовать следующее:
using mpi : mpiicc :
<library-path>/softs/intel/impi/5.0.1.035/intel64/lib
<library-path>/softs/intel/impi/5.0.1.035/intel64/lib/release_mt
<include>/softs/intel/impi/5.0.1.035/intel64/include
<find-shared-library>mpifort
<find-shared-library>mpi_mt
<find-shared-library>mpigi
<find-shared-library>dl
<find-shared-library>rt ;
Для этого вам нужно угадать библиотеки и включить каталоги, связанные с вашей средой. Вы можете обратиться к вашей конкретной документации по среде MPI. Однако большую часть времени у вашей обертки есть опция, которая предоставляет эту информацию, она обычно начинается с-показывают
:
$ mpiicc -show
icc -I/softs/intel//impi/5.0.3.048/intel64/include -L/softs/intel//impi/5.0.3.048/intel64/lib/release_mt -L/softs/intel//impi/5.0.3.048/intel64/lib -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker /softs/intel//impi/5.0.3.048/intel64/lib/release_mt -Xlinker -rpath -Xlinker /softs/intel//impi/5.0.3.048/intel64/lib -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/5.0/intel64/lib/release_mt -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/5.0/intel64/lib -lmpifort -lmpi -lmpigi -ldl -lrt -lpthread
$
[$mpicc - Showme icc] -I/opt/mpi/bullxmpi/1.2.8.3/include -pthread -L/opt/mpi/bullxmpi/1.2.8.3/lib -lmpi -ll - lm - lnuma -Экспортно-динамический -lrt -lnsl -lutil -lm -ldl $mpicc -showme:compile -I/opt/mpi/bullxmpi/1.2.8.3/include -pthread $mpicc-showme:link-pthread -L/opt/mpi/bullxmpi/1.2.8.3/lib -lmpi -ll - lm - lnuma -Экспортно-динамический -lrt -lnsl -lutil -lm -ldl $ ]
Чтобы увидеть результаты автоматического обнаружения MPI, пройдите—отладку—конфигурацию
на командной строке bjam.
- Если вы хотите провести регрессионные тесты
Что является хорошей вещью.
Третий (необязательный) аргумент конфигурирует рост. MPI для проведения регрессионных тестов. Эти параметры определяют исполняемый файл, используемый для запуска заданий (по умолчанию это «mpirun»), за которым следуют любые необходимые аргументы для запуска тестов и указания программе ожидать, что последует количество процессоров (по умолчанию: «-np»). С параметрами по умолчанию, например, тестовая ремня будет выполняться, например,
mpirun -np 4 all_gather_test
Некоторые реализации обеспечивают альтернативную пусковую установку, которая может быть более удобной. Например, MPI Intel обеспечиваетmpiexec.гидры
:
$mpiexec.hydra -np 4 all_gather_test
Он не требует, чтобы какой-либо демон работал (в отличие от их командыmpirun
). Однако такую пусковую установку необходимо уточнить:
using mpi : mpiicc :
.....
: mpiexec.hydra -n ;
Для построения всего распределения Boost:
$cd <boost distribution>
$./b2 install
![[Tip]](/img/tip.png) |
Tip |
Или, если у вас есть многофункциональный компьютер (скажем 24):
$cd <boost distribution>
$./b2 -j24 install
|
Установка Boost. MPI может быть выполнен на этапе сборки путем указанияустановки
в командной строке и (факультативно) обеспечения местоположения установки, например,
$./b2 install
Эта команда установит библиотеки в местоположение системы по умолчанию. Чтобы изменить путь, по которому будут установлены библиотеки, добавьте опцию--префикс=PATH
.
Затем вы можете запустить регрессионные тесты с:
$cd <boost distribution/lib/mpi/test
$....../b2