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 数据类型的类型。可以将此操作视为向 root gather,然后对收集到的值使用 op 操作进行 std::accumulate()。
当类型 T 具有相关的 MPI 数据类型时,此例程将调用 MPI_Reduce 来执行归约。如果可能,将使用内置的 MPI 操作;否则,reduce() 将为对 MPI_Reduce 的调用创建一个自定义 MPI_Op。
参数 |
|