gpt4 book ai didi

c++ - 测试 MPI_Barrier C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:05 25 4
gpt4 key购买 nike

我如何确定 MPI_Barrier 是否正确运行?测试方法是什么?
谢谢

最佳答案

我认为,要确保 MPI_Barrier 正常工作,您必须编写一个程序,保证工作和非工作障碍的行为不同。

我不认为@Neeraj 的回答一定会如此。如果屏障正常工作,进程将在任何写入第二个输出行之前全部写入它们的第一个输出行。然而,即使在没有屏障的情况下(或者如果你想这样想的话,屏障已经完全失效),这也有可能发生。我的断言并不取决于他建议的非常短的 sleep 时间(5 毫秒级别)。即使您假设进程等待(5s),在没有屏障的情况下,语句也有可能以屏障强加的顺序出现。我不太可能同意你,但并非不可能,尤其是当你必须考虑 o/s 如何缓冲对 stdout 的多次写入时——你实际上可能正在测试该过程而不是障碍。 你哭了即使是最不准确的计算机时钟也会导致进程 1 等待的时间比进程 2 少得多,以显示屏障的正确工作。 如果 o/s抢占处理器 1(进程 1 试图在其上运行)10 秒但没有。

依赖板载时钟进行同步实际上会降低程序的确定性。所有处理器都有自己的时钟,硬件不保证它们都以完全相同的速率或完全相同的滴答长度滴答。

该测试也没有充分探索屏障的所有失效模式。充其量它只是探索完全失败;如果实现实际上是一个泄漏屏障,那么偶尔一个进程在最后一个进程到达屏障之前就通过了怎么办?差一错误在程序中非常常见。或者可能屏障代码是 3 年前编写的,只有足够的内存来记录 2^12==4096 个进程的到来,而你已经将它放在一台具有 2^18 个处理器的全新机器上;屏障与其说是大坝,不如说是堰。

直到现在我都没有深入思考过这个问题,我从来没有怀疑过我使用的任何 MPI 实现都有错误的障碍,所以我没有关于如何彻底测试障碍的好建议。我倾向于使用并行调试器并通过屏障检查程序的执行情况,但这并不能保证行为正确。

不过这是个有趣的问题。

关于c++ - 测试 MPI_Barrier C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2062653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com