Parallel processing 并行计算效率-核心数或MPI进程数?

Parallel processing 并行计算效率-核心数或MPI进程数?,parallel-processing,processing-efficiency,Parallel Processing,Processing Efficiency,我正在一台2+2(超线程)内核机器上测试一个并行程序。并行化是通过MPI例程实现的 在评估并行代码的效率时,我是否必须将速度除以内核数,还是将速度除以MPI进程数 有人能帮我吗?两者在某些情况下都有意义,所以这取决于你想衡量什么 例如,可以尝试使用1、2、3和4个MPI进程运行程序,并测量每次运行的加速比。然后,可以将测量值绘制为一个图形,y轴上有加速比,x轴上有MPI进程的数量,从而说明算法的可伸缩性(或不可伸缩性…)(假设仅使用两个MPI进程与在只有两个内核的充分利用的计算机上运行算法是一样

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

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


有人能帮我吗?

两者在某些情况下都有意义,所以这取决于你想衡量什么

例如,可以尝试使用1、2、3和4个MPI进程运行程序,并测量每次运行的加速比。然后,可以将测量值绘制为一个图形,y轴上有加速比,x轴上有MPI进程的数量,从而说明算法的可伸缩性(或不可伸缩性…)(假设仅使用两个MPI进程与在只有两个内核的充分利用的计算机上运行算法是一样的)

效率也是如此

但这种推理只有在MPI进程数小于或等于物理核心数的情况下才有效。例如,如果您尝试在4核机器上使用5个MPI进程,您可能无法获得与在5核机器上相同的加速比,因此这可能无法衡量您想要的加速比--至少不适用于计算范围内的问题

同样,效率也是如此

因此,如果您的MPI进程比物理核多,那么讨论物理核数量的加速和效率才有意义(至少在我看来是如此)。例如,在您的4核机器上继续5个MPI进程示例:假设您得到(仅)通过使用5个MPI进程(例如,因为MPI进程有时会阻塞IO),在一定程度上提高了加速比与4个MPI进程相比,MPI进程数量的效率将下降,但物理核数量的效率将上升。因此,在这种情况下,使用5个MPI进程将优于4个,即使MPI进程数量的效率更低(与使用4个MPI进程相比)


当然,通常情况下,如果你能提供更多关于你想做什么的信息,回答问题会更容易。

据我所知,你的问题在公式中: 效率(p)=平行时间(p)/p。
“p”这里是您执行MPI进程的数量。正如cic所提到的,程序员有足够的内核来匹配MPI进程的数量是他们的责任。重复一次,如果您只有2个内核并使用5个MPI进程运行,那么您的效率结果是错误的。同样,如果您有一台8核的机器并使用2个MPI进程运行代码处理你的“p”=2我认为正确的答案是p始终是处理器/内核的数量,因为效率决定了你的代码的性能如何趋于理想值。因此效率的一般公式是

E=您的绩效/最佳绩效


最佳速度(理想情况)是处理器/内核的数量p.

请帮助!!我很绝望!!!XD谢谢你的帮助!:)我已经构建了我的并行代码来并行化蒙特卡罗模拟。我需要检查我的代码的性能,并计算了衡量3、4、5、6、7、8、9和10 MPI进程的顺序和并行代码执行时间的加速系数:加速(#进程)=时间#顺序/时间#并行(#进程)然后我想检查不同工作负载下不可并行代码(f)的比例是否减少。为了计算f,我使用了相反的阿姆达尔定律:f=(p-加速比(p))/(加速比(p)*(p-1))继续…在我想通过公式:效率(p)=时间\并行(p)/p来评估效率之后,我无法确定p(对于反阿姆达尔定律和效率)是进程数或核心数。这是我的问题!XDI在通过网络连接的PC集群上执行了测量。核心总数为32。在这种情况下,问题不存在,因为我测量了不同数量进程的执行时间(始终<32)。这样我就可以检查什么解决方案(p=#核心或p=#进程)为单机测试和群集测试提供相同比例的非并行化代码。对于不同的工作负载,非并行化代码的比例必须保持不变。对吗?抱歉,您的问题仍然不完全清楚。这是家庭作业问题吗?谢谢您的帮助!:)我认为正确的答案是p总是处理器/核心的数量,因为效率决定了代码的性能如何趋向于理想值。因此效率的一般公式是“E=您的性能/最佳性能”。最佳速度(理想情况)是处理器/核心的数量p。您同意吗?