首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等待MPI-IO在MPI_File_open上同步的旋转进程

等待MPI-IO在MPI_File_open上同步的旋转进程
EN

Stack Overflow用户
提问于 2019-11-21 19:29:34
回答 1查看 68关注 0票数 0

我有一些设置,在这些设置中,所有进程都有一个连续的工作块,我希望在最后将所有输出保存为一个文件,如下所示:

代码语言:javascript
复制
int start_ind = split_work(mpi_rank, mpi_size), end_ind = split_work(mpi_rank+1, mpi_size);
vector<double> results;
for(int i=start_ind; i<end_ind; i++){
    results[i] = do_work(i);
}

MPI_File handler;
MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE|MPI_MODE_WRONLY, MPI_INFO_NULL, &handler);
MPI_Status status;
MPI_File_write_at(handler, start_ind*sizeof(double), results.data()+start_ind,
                  end_ind - start_ind, MPI_DOUBLE, &status);
MPI_File_close(&handler);

然而,有时工作是不平衡的,一半的过程可以在另一半之前完成工作时间。据我所知,这些进程继续使用100%的CPU旋转数小时,直到所有进程到达MPI_File_open为止。这显然是不可取的。如果我希望输出作为一个文件结束,那么这种情况的最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-03 18:40:30

我发现an answer in this question解决了我的问题。与OpenMPI一起运行

代码语言:javascript
复制
mpirun -np N --mca mpi_yield_when_idle 1 ./a.out

生成等待阻塞操作的任何进程。这是以跨进程通信延迟增加为代价的,但这对我的用例来说不是一个问题,它在执行计算时不发送任何消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58982454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档