并行计算效率 - 核心数或MPI流程数?

时间:2015-05-15 15:07:41

标签: parallel-processing processing-efficiency

我在2 + 2(超线程)核心机器上测试并行程序。并行化是通过MPI例程实现的。

在评估并行代码的效率时,我是否必须将速度除以内核数量或加快MPI进程数量?

有人可以帮我吗?

3 个答案:

答案 0 :(得分:0)

在某些情况下都有意义,所以这取决于你想要衡量的内容。

例如,可以尝试使用1,2,3和4个MPI进程运行程序,并测量每次运行的加速比。然后,可以将测量结果绘制为图表,其中y轴上的加速和x轴上的MPI过程的数量,因此说明算法的可伸缩性(或不可伸缩性...)(假设仅使用例如两个MPI进程与在只有两个核心的充分利用的计算机上运行算法相同。

效率也是如此。

但是,只有当MPI进程的数量小于或等于您拥有的物理核心数时,这种推理才有效。例如,如果您尝试在4核计算机上使用5个MPI进程,则可能无法获得与5核计算机相同的加速,因此可能无法衡量您的需求 - 至少不是计算限制问题。

效率也是如此。

因此,如果你有比物理内核更多的MPI进程,那么只讨论物理内核数量的加速和效率是有意义的(至少就我所见)。例如,继续上面4核心机器示例中的5个MPI进程:假设与4个MPI进程相比,通过使用5个MPI进程(例如,因为MPI进程有时会阻止IO),您(仅)稍微提高了加速速度,那么MPI流程数量的效率会下降,但物理核心数量的效率会上升。因此,在这种情况下,使用5个MPI流程将优于4个,即使MPI流程数量的效率会更低(与使用4个MPI流程相比)。

当然,通常情况下,如果有更多关于你要做什么的信息,会更容易回答。

答案 1 :(得分:0)

据我所知,你的问题在公式中: 效率(p)= time_parallel(p)/ p。 " P"这是您执行它的MPI进程数。正如cic所提到的,程序员的责任是他有足够的内核来匹配MPI进程的数量。重复一遍,如果您只有2个内核并使用5个MPI进程运行,则效率结果是错误的。同样,如果您有一台8核机器,并使用2个MPI流程运行您的代码,您的" p" = 2

答案 2 :(得分:0)

我认为正确的answare是p始终是处理器/核心的数量,因为效率决定了代码的性能如何趋向理想值。所以效率的genaral公式是

E = your_performance / best_performance

最佳速度(理想情况)是处理器/核心数p。