boost::mpi::reduce — 将每个进程存储的值合并为根进程上的单个值。
// In header: <boost/mpi/collectives.hpp> 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);
reduce
是一种集体算法,它将每个进程存储的值合并为 root
上的单个值。 这些值可以任意组合,通过函数对象指定。 值的类型 T
可以是任何可序列化的类型或具有关联 MPI 数据类型的类型。 可以将此操作视为 gather
到 root
,然后对收集的值执行 std::accumulate()
并使用操作 op
。
当类型 T
具有关联的 MPI 数据类型时,此例程会调用 MPI_Reduce
来执行归约。 如果可能,将使用内置的 MPI 操作; 否则,reduce()
将为调用 MPI_Reduce 创建一个自定义 MPI_Op。
参数 |
|