Function reduce
boost::mpi::reduce — Combine the values stored by each process into a single value at the root. 
 Synopsis
template<typename T, typename Op> 
  void reduce(const communicator & comm, const T & in_value, T & out_value, 
              Op op, int root);
template<typename T, typename Op> 
  void reduce(const communicator & comm, const T & in_value, Op op, int root);
template<typename T, typename Op> 
  void reduce(const communicator & comm, const T * in_values, int n, 
              T * out_values, Op op, int root);
template<typename T, typename Op> 
  void reduce(const communicator & comm, const T * in_values, int n, Op op, 
              int root);Description
<reduce>- это коллективный алгоритм, который объединяет значения, сохраненные каждым процессом, в одно значение в<root>. Значения могут быть объединены произвольно, заданными через объект функции. Тип<T>значений может быть любым типом, который является сериализуемым или имеет связанный тип данных MPI. Можно рассматривать эту операцию как<gather>к<root>, за которой следует<std::accumulate()>над собранными значениями и с использованием операции<op>.
Когда тип<T>имеет связанный тип данных MPI, эта процедура вызывает<MPI_Reduce>для выполнения сокращения. По возможности будут использоваться встроенные операции MPI; в противном случае<reduce()>будет создавать пользовательский MPI_. Для звонка в MPI_Reduce.
| Параметры: |  | 
| comm
 | Коммуникатор, над которым произойдет сокращение. | 
| <in_value> | Локальное значение должно сочетаться с локальными значениями каждого другого процесса. Для уменьшения массивов<in_values>содержит указатель на локальные значения. В этом случае<n>— число значений, которое будет уменьшено. Сокращение происходит независимо для каждого из<n>значений, на которые ссылается<in_values>, например, вызов уменьшения на массив<n>значений подобен вызову<reduce><n>отдельных раз, по одному для каждого местоположения в<in_values>и<out_values>. | 
| <op> | Бинарная операция, которая объединяет два значения типа<T>в третье значение типа<T>. Для типов<T>, связанных с типами данных MPI,<op>будет либо переведено в<MPI_Op>(через<MPI_Op_create>), либо, по возможности, отображено непосредственно на встроенную операцию MPI.<в заголовке<is_mpi_op>operations.hpp>для более подробной информации об этом отображении. Для любой невстроенной операции коммутативность будет определяться чертой<is_commmutative>(также в<operations.hpp>): пользователям рекомендуется отмечать коммутативные операции как таковые, поскольку это дает реализации дополнительную широту для оптимизации операции сокращения. | 
| <out_value> | Получит результат операции по сокращению, но только для процесса<root>. Некорневые процессы могут опускать параметр; если они выберут параметр, он будет неизменным. Для уменьшения массивов<out_values>содержит указатель на хранилище для выходных значений. | 
| <root> | Идентификационный номер процесса, который получит окончательное комбинированное значение. Это значение должно быть одинаковым для всех процессов. |