关于使用CPPU单元测试MPI代码的建议/经验

关于使用CPPU单元测试MPI代码的建议/经验,mpi,cppunit,Mpi,Cppunit,我有一个代码库,在这里我一直在使用CppUnit进行单元测试。我现在正在向项目中添加一些MPI代码,我想对我在MPI之上构建的一些抽象进行单元测试。例如,我编写了一些代码来管理一个生产者/多个消费者的关系,其中消费者请求工作,生产者序列化下一个要发送给消费者的工作,我想用一个测试来测试这种交互,该测试在生产者中生成一些假的工作项,并将它们分发给消费者,然后将某种校验和发送回消费者,以确保所有内容都已分发,没有死锁等 有没有人有过在这里工作得最好的经验?我一直在思考的一些事情: 让所有进程都执行测

我有一个代码库,在这里我一直在使用CppUnit进行单元测试。我现在正在向项目中添加一些MPI代码,我想对我在MPI之上构建的一些抽象进行单元测试。例如,我编写了一些代码来管理一个生产者/多个消费者的关系,其中消费者请求工作,生产者序列化下一个要发送给消费者的工作,我想用一个测试来测试这种交互,该测试在生产者中生成一些假的工作项,并将它们分发给消费者,然后将某种校验和发送回消费者,以确保所有内容都已分发,没有死锁等

有没有人有过在这里工作得最好的经验?我一直在思考的一些事情:

  • 让所有进程都执行测试运行程序,以便它们都以相同的顺序执行测试功能,这合理吗?还是只让主程序运行测试运行程序并让它向从属程序发送广播以告诉它们下一步要做什么更好(可能是使用某种查找表将命令映射到测试函数)
  • 在从机内部使用CPPUNIT_ASSERT是否明智,还是应该将所有信息发送回主机进行断言?如果从属服务器可以断言,那么应该如何组合所有结果以获得单个输出日志?
  • 如何处理测试失败,以使一个进程中引发的异常不会导致同步问题,例如,另一个进程正在等待一个MPI_Recv,而匹配的MPI_发送现在将永远不会发生?