增强mpi无阻塞+层次结构收集

时间:2019-06-10 17:33:25

标签: c++ mpi boost-mpi

我有一个使用Visual C ++和Boost MPI的多处理程序。每个过程都将其分解,最后,过程0收集所有结果并进行汇总。以下是代码摘录(poolsummary是使用Boost序列化的类)

  if(rank == 0){
            vector<poolsummary> ps_;
            vector<poolsummary> ps2_;
            gather(world, ps, ps_, 0);
            gather(world, ps2, ps2_, 0);
            for(int i = 1; i < size;i++){
                ps_[0].updateFromPool(ps_[i]);
                ps2_[0].updateFromPool(ps2_[i]);
            }
            ps_[0].Save_file(asp.SCENARIO_PATH);
            ps2_[0].Save_file2(asp.SCENARIO_PATH);
            vector<poolsummary>().swap(ps_);
            vector<poolsummary>().swap(ps2_);
        }else{
            gather(world, ps, 0);
            gather(world, ps2, 0);
        }

程序仍然需要收集另外两个类(让我们将它们称为hist和rep)。

通常,我使用64个处理器运行该程序,并且该收集部分的尾巴很长。我认为有两种方法可以改善效果 1.使用非阻塞聚集 2.将进程分为8组(例如,进程0-7作为组1,进程8-15作为组2 ...);然后首先在每个组中进行聚会,然后进行组

有人可以帮助我解决这些解决方案吗?如果没有,有什么可能的方法来提高性能?是这样,如何实现这两个?非常感谢您的宝贵时间。

0 个答案:

没有答案