在同一个函数中调用 MPI_Barrier 两次可以吗?

标签 c mpi openmpi message-passing

在 C 语言中使用 OpenMPI;

说我有

main()
{
MPI_Init();

//// Important Program Region

MPI_Barrier(MPI_COMM_WORLD);

// do something here

MPI_Barrier(MPI_COMM_WORLD);

////
MPI_Finalize();
}

这是不好的做法吗?我可以像这样强制两次强制同步吗?这样做有什么缺点吗?

最佳答案

上面的程序应该按原样运行。通过 MPI_Barrier 强制同步是完全可以接受的,不仅仅是一次或两次,而是根据需要多次。话虽如此,MPI_Barrier 的主要缺点是,调用它的次数越多,程序的可扩展性就会显着降低。

注意:如果您按照标题中的建议(但不是问题本身)在“同一行”上调用它,那么第二个障碍实际上是一个无操作 - 您已经达到了同步点;第二个障碍到底是做什么的?

关于在同一个函数中调用 MPI_Barrier 两次可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43457350/

相关文章:

c++ - MPI 是否丢弃或延迟消息?

C Primer Plus 第 17 章 - 关于如何释放整个链表

loops - 关于MPI并行循环的问题

c - 在 C 中将 sqrt 定义为 int 类型?

c - 如何确保二维数组在内存中连续分配

python - 让主人在任务农场工作

mpi - 使用 mpirun 执行我的程序,性能下降很多

python - 在 Python-mpi4py 中使用 2D 列表时 MPI 分散方法中的 ValueError

C 线性搜索无法使用 strcmp 比较两个字符串,编译正常

c - c + linux的练习