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