openmp理论与实践效率?

时间:2012-04-09 22:55:04

标签: c performance parallel-processing openmp

随着我增加尴尬并行线性问题的核心数量(每次迭代进行大量计算的for循环,所有迭代都与其他迭代无关),效率降低(效率为Ts /(p * Tp))不知何故线性地与核心数量相关

我知道在实践中,线程调度,操作系统和缓存问题可能会大大减慢实现速度。

我可以补充一点,我确实得到了加速,理论上的问题在理论上具有线性加速 当p增加时效率为1。

问题:随着处理器数量的增加,操作系统,线程调度,内存加入以及其他类型的技术限制如何影响算法的效率?它应该影响吗?

3 个答案:

答案 0 :(得分:3)

您可能会考虑类似Amdahl's Law之类的内容,但每种情况的细节都很难将其固定下来。

答案 1 :(得分:1)

你应该考虑强有力的扩展:

https://www.sharcnet.ca/help/index.php/Measuring_Parallel_Scaling_Performance#Strong_Scaling

由于您提到的所有因素,在问题中添加更多核心时,您的回报基本上会减少。

答案 2 :(得分:0)

您的问题是CPU绑定还是内存绑定?您的系统架构是什么 - SMP或NUMA?你的处理器有多少缓存?您是否将线程绑定到核心? ...

在有人回答你的问题之前,有太多的参数需要考虑。我建议您使用英特尔VTune Amplifier或Oracle收集器/分析器之类的东西,以查看导致效率低下的原因和原因。