Класс<environment>используется для инициализации, завершения и запроса среды MPI. Обычно он используется в функции<main()>программы, которая создает единый экземпляр<environment>, инициализированный с помощью аргументов, переданных программе:
Пример<environment>инициализирует MPI (путем вызова<MPI_Init>) в его конструкторе и завершает MPI (путем вызова<MPI_Finalize>для нормального прекращения или<MPI_Abort>для непойманного исключения) в его деструкторе.
Использование<environment>не является обязательным. Пользователи могут использовать<MPI_Init>и<MPI_Finalize>вручную. В этом случае<environment>объект не нужен. Однако, если человек создан, он ничего не сделает ни на строительстве, ни на разрушении.
environment
public
construct/copy/destruct
<
explicitenvironment(boolabort_on_exception=true);
>
Инициирование среды MPI.
Если среда MPI еще не была инициализирована, инициализирует MPI с призывом к<MPI_Init>. Поскольку этот конструктор не принимает аргументы командной строки<argc>и<argv>, он доступен только тогда, когда лежащая в основе реализация MPI поддерживает вызов<MPI_Init>с<NULL>аргументами, указанными макросом<BOOST_MPI_HAS_NOARG_INITIALIZATION>.
Параметры:
<abort_on_exception>
Когда это правда, этот объект прервет программу, если она будет уничтожена из-за непойманного исключения.
Если среда MPI еще не была инициализирована, инициализирует MPI с вызовом<MPI_Init_thread>. Поскольку этот конструктор не принимает аргументы командной строки<argc>и<argv>, он доступен только тогда, когда лежащая в основе реализация MPI поддерживает вызов<MPI_Init>с<NULL>аргументами, указанными макросом<BOOST_MPI_HAS_NOARG_INITIALIZATION>.
Параметры:
<abort_on_exception>
[90 Когда это правда, этот объект прервет программу, если она будет уничтожена из-за непойманного исключения.
Если среда MPI еще не была инициализирована, инициализирует MPI с вызовом<MPI_Init_thread>
Параметры:
<abort_on_exception>
Когда это правда, этот объект прервет программу, если она будет уничтожена из-за непойманного исключения.
<argc>
Количество аргументов, приведенных в<argv>, как передано в функцию программы<main>.
<argv>
Массив строк аргументов передавался программе через<main>.
<mt_level>
требуемый уровень поддержки резьбы
<
~environment();
>
Закрывает среду MPI.
Если этот объект<environment>был использован для инициализации среды MPI, и среда MPI еще не была закрыта (завершена), этот деструктор отключит среду MPI. При нормальных обстоятельствах это включает только призыв<MPI_Finalize>. Однако, если разрушение является результатом непойманного исключения и параметр<abort_on_exception>конструктора имел значение<true>, этот деструктор вызовет<MPI_Abort>с<MPI_COMM_WORLD>, чтобы прервать всю программу MPI с кодом результата -1.
environment public static functions
<
staticvoidabort(interrcode);
>
Прекратить все процессы MPI.
Отменяет все процессы MPI и возвращается в окружающую среду. Точное поведение будет определяться базовой реализацией MPI. Это эквивалентно вызову<MPI_Abort>с<MPI_COMM_WORLD>
Параметры:
<errcode>
Код ошибки возвращается в окружающую среду.
Возвращение:
Не вернется
.
<
staticboolinitialized();
>
Определить, была ли среда MPI уже инициализирована.
Эта процедура эквивалентна вызову<MPI_Initialized>.
Возврат:
<true>, если среда MPI была инициализирована.
<
staticboolfinalized();
>
Определить, была ли среда MPI уже завершена.
Обыденность эквивалентна вызову<MPI_Finalized>
Возврат:
<true>, если среда MPI была завершена.
<
staticintmax_tag();
>
Получает максимальное значение тега.
Возвращает максимальное значение, которое может быть использовано для<tag>параметра операций отправки/принятия. Это значение будет несколько меньше, чем значение<MPI_TAG_UB>, потому что увеличение. Внедрение MPI оставляет некоторые теги для коллективных операций.
Возврат:
максимальное значение метки.
<
staticintcollectives_tag();
>
Значение тега, используемого для коллективных операций.
Возвращает зарезервированное значение тега, используемое Boost. MPI для коллективных операций. Хотя пользователям не разрешается использовать этот тег для отправки или получения сообщений, он может быть полезен при мониторинге моделей связи.
Возвращает:
значение метки, используемое для коллективных операций.
<
staticoptional<int>host_rank();
>
Получает ранг хост-процесса, если он существует.
Если есть хост-процесс, эта рутина возвращает ранг этого процесса. В противном случае он возвращает пустое<optional<int>>. MPI не определяет значение процесса «хозяин»: обратитесь к документации для реализации MPI. Эта процедура рассматривает<MPI_HOST>атрибут<MPI_COMM_WORLD>.
Возвращение:
Разряд хост-процесса, если таковой существует.
<
staticoptional<int>io_rank();
>
Получает ранг процесса, который может выполнять ввод/вывод.
Эта процедура возвращает ранг процесса, который может выполнять ввод/вывод через стандартные средства ввода/вывода C и C++. Если каждый процесс может выполнять ввод/вывод с использованием стандартных средств, эта процедура возвращается<any_source>; если ни один процесс не может выполнять ввод/вывод, эта процедура не возвращает никакого значения (пустое<optional>). Эта процедура рассматривает<MPI_IO>атрибут<MPI_COMM_WORLD>.
Возвращает:
ранг процесса, который может выполнять I/O,<any_source>, если каждый процесс может выполнять I/O, или значение, если ни один процесс не может выполнять I/O.
<
staticstd::stringprocessor_name();
>
Восстановите имя этого процессора.
Эта процедура возвращает имя процессора. Фактическая форма имени не определена, но может быть задокументирована основной реализацией MPI. Эта процедура реализована как вызов к<MPI_Get_processor_name>.
Возвращает:
имя этого процессора.
<
staticthreading::levelthread_level();
>
Запросите текущий уровень поддержки потоков.
<
staticboolis_main_thread();
>
Мы в главной нити?
Статья Class environment раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.