首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试MPI_Barrier C++

测试MPI_Barrier C++
EN

Stack Overflow用户
提问于 2010-01-14 14:59:28
回答 2查看 2.2K关注 0票数 2

我如何才能确保MPI_Barrier运行正常?对它的测试方法是什么?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2010-01-14 15:25:13

代码语言:javascript
复制
#include <mpi.h>

int main (int argc , char *argv[])
{
  int rank;

  MPI_Init (&argc, &argv);      /* starts MPI */
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);        /* get current process id */

  sleep(5*rank); // make sure each process waits for different amount of time
  std::cout << "Synchronization point for:" << rank << std::endl ;
  MPI_Barrier(MPI_COMM_WORLD) ;
  std::cout << "After Synchronization, id:" << rank << std::endl ;

  MPI_Finalize();
  return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2011-06-09 18:00:34

Allen Downey在他的书The Little Book of Semaphores中说到了这一点(关于他提出的一个可重用的屏障算法):

不幸的是,这种解决方案是大多数重要的同步代码的典型:很难确保解决方案是正确的。通常有一种微妙的方式,即通过程序的特定路径可能会导致错误。

更糟糕的是,测试解决方案的实现没有多大帮助。错误可能很少发生,因为导致错误的特定路径可能需要非常不幸的环境组合。这样的错误几乎不可能通过常规方式重现和调试。

唯一的选择是仔细检查代码并“证明”它是正确的。我把“证明”放在引号里,因为我并不是说,你一定要写一份正式的证明(尽管有些狂热分子鼓励这种疯狂行为)。

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

https://stackoverflow.com/questions/2062653

复制
相关文章

相似问题

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