Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何测试MPI程序_C++_Mpi_Openmpi - Fatal编程技术网

C++ 如何测试MPI程序

C++ 如何测试MPI程序,c++,mpi,openmpi,C++,Mpi,Openmpi,我对测试MPI程序有疑问。我用openmpi编写了FW算法。该程序运行良好且正确,但问题是它比我的顺序程序花费更多的时间(我只尝试在一台计算机上测试它)。有人知道为什么会这样吗?多亏了这是一种常见的误解,即程序的并行实现总是比其顺序版本更快 并行化程序的问题在于,使用多个线程会带来相当大的开销,而从单个线程运行的顺序程序不会受到这种开销的影响。我们不仅需要最初设置这些线程,还需要进行通信,这对于顺序程序来说是不必要的 对于相对较小的问题,您会发现顺序解决方案几乎总是比并行程序执行得快。随着问题规

我对测试MPI程序有疑问。我用openmpi编写了FW算法。该程序运行良好且正确,但问题是它比我的顺序程序花费更多的时间(我只尝试在一台计算机上测试它)。有人知道为什么会这样吗?多亏了

这是一种常见的误解,即程序的并行实现总是比其顺序版本更快

并行化程序的问题在于,使用多个线程会带来相当大的开销,而从单个线程运行的顺序程序不会受到这种开销的影响。我们不仅需要最初设置这些线程,还需要进行通信,这对于顺序程序来说是不必要的


对于相对较小的问题,您会发现顺序解决方案几乎总是比并行程序执行得快。随着问题规模的扩大,相对于问题本身的计算成本而言,管理多个进程的成本逐渐变得微不足道。因此,您的并行版本将开始优于顺序程序。

但是,我还编写了具有多个线程的FW,它对于大数据来说速度更快。但是使用开放式MPI,速度非常慢。此外,进程似乎没有并行化。我使用多线程(没有MPI)编写了FW,它运行得更快。使用MPI编写的相同算法速度较慢。我认为这是因为代码中的第42行。您需要发布代码以获得更好的答案。MPI是关于正确分配1)数据和2)责任的。当给定的问题可以使用OpenMP(共享内存)解决时,OpenMPI肯定会比OpenMP(共享内存)慢。