绘图加速曲线与OpenMP线程数 - 可扩展性?

时间:2014-10-22 18:13:08

标签: multithreading openmp scalability parallelism-amdahl

我正在研究使用OpenMP线程的C ++代码。我已经绘制了加速曲线与OpenMP线程的数量和理论曲线(如果代码能够完全并行化)。

这是这个情节:

enter image description here

从这张图中,我们可以说这段代码不可扩展(从并行化的角度来看)?即2个OpenMP线程的代码速度不是两倍,4个线程的代码速度快4个......

由于

1 个答案:

答案 0 :(得分:2)

对于在16个线程上几乎没有达到2.5倍加速的代码,可以说它不能扩展。但是"不可扩展"通常被认为是一个更强硬的声明据我所知,差异在于"不会扩展"通常指特定的实施,并不意味着固有的无法扩展;换句话说,如果瓶颈被消除,也许你可以扩大规模。另一方面,"不可扩展"通常意味着你不能使它成比例,至少在没有改变核心算法的情况下也是如此。假设有这样的含义,就不能说"问题/代码/算法不可扩展"只看图表。

另外需要注意的是,期望完美缩放并不总是合理的(2个线程,2个线程,4个4线程等)。曲线足够接近"理想的扩展可能仍被视为具有良好的可扩展性;什么"足够接近"手段可能取决于许多因素。当可伸缩性是一个问题时,告诉/想到parallel efficiency而不是加速可能是有用的。例如,如果并行效率为0.8(或80%)并且当线程数增加时不会下降,则可以认为是良好的可伸缩性。此外,某些程序可能会扩展到一定数量的线程,但如果添加更多资源,则可能会保持不变甚至下降。