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。
参数 |
|