我已经找遍了整个周围,但无法找到对此问题的任何参考。升压测试单元不能调用mpi功能
我写了一个C++程序,我正在用boost/unit进行测试。串行版本正常工作,单元测试正在工作。
现在我已经通过一个功能与MPI进行了令人尴尬的平行工作来使程序并行。如果写下我自己的测试调用并行函数 - 让我们称之为函数 - 它运行良好,MPI运行正常。
编译使用mpiC++完成,我使用mpixec来运行程序。
但是,如果我在boost测试案例中调用parafunction,那么MPI会全部错误,多次启动测试,并且在调用几个MPI::Init
时进程崩溃。 以下是错误我得到的一个例子:
MPI_FINALIZE被调用后MPI_comm_size()函数被调用。
这是MPI标准所不允许的。
您的MPI工作现在将中止。
我的测试用例在test_unit上,由一个master_test_suite自动处理。正如我所说的没有平行化,它完美地工作。
段函数调用MPI::Init
和MPI::Finalize
,并没有其他函数的文件应该做任何MPI相关的东西。
有没有人遇到过类似的问题?
我的测试运行很长,因此我真的可以使用我的程序的并行版本!
感谢您的帮助
如果我在BOOST_AUTO_TEST_CASE中执行所有并行化而不是调用parafunction,则会发生同样的情况... – 2013-02-28 03:27:01