all_reduce представляет собой коллективный алгоритм, который объединяет значения, сохраненные каждым процессом, в одно значение, доступное для всех процессов. Значения объединяются определенным пользователем способом, заданным через объект функции. Тип T значений может быть любым типом, который является сериализуемым или имеет связанный тип данных MPI. Можно рассматривать эту операцию как all_gather, за которой следует std::accumulate() по значениям сбора и с использованием операции op.
Когда тип T имеет связанный тип данных MPI, эта процедура вызывает MPI_Allreduce для выполнения сокращения. По возможности будут использоваться встроенные операции MPI; в противном случае all_reduce() создаст пользовательский MPI_ Для звонка в MPI_Allreduce.
Если обернуть в объект inplace_t, объедините использование как входного, так и $c out_value и локальное значение будет перезаписано (для обертки предусмотрена функция удобства inplace).
Параметры:
комм
Коммуникатор, над которым произойдет сокращение.
n
Указывается размер буферов типа массива.
op
Бинарная операция, которая объединяет два значения типа T и возвращает третье значение типа T. Для типов T, связанных с типами данных MPI, op будет либо переведен в MPI_Op (через MPI_Op_create), либо, по возможности, отображен непосредственно на встроенную операцию MPI. См. is_mpi_op в заголовке Operations.hpp для более подробной информации об этом отображении. Для любой невстроенной операции коммутативность будет определяться чертой is_commmutative (также в Operations.hpp): пользователям рекомендуется отмечать коммутативные операции как таковые, поскольку это дает реализации дополнительную широту для оптимизации операции сокращения.
out_value
Получит результат восстановительной операции. Если этот параметр опущен, исходящее значение будет возвращено.
значение
Локальное значение должно сочетаться с локальными значениями каждого другого процесса. Для уменьшения массивов in_values является указателем на локальные значения, подлежащие уменьшению, а n - число значений, подлежащих уменьшению. См. Reduce для получения дополнительной информации.
Возврат:
Если параметр out_value не указан, то результат операции восстановления возвращается.
Статья Function all_reduce раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.