逆用Amdahl定律可行性及OpenMP线程数选择咨询
OpenMP性能测试与Amdahl定律相关问题解答
(a) 基于(Pi, Si)对计算串行比例f的可行性
- 完全可以利用每组
(Pi, Si)对通过Amdahl定律反解串行比例f。Amdahl定律的核心公式为:
变形后可推导出反解S(P) = 1 / (f + (1-f)/P)f的公式:f = (1/S(P) - 1/P) / (1 - 1/P) - 既然多组计算得到的
fi值相近(约0.0015),完全可以取平均值来估算线程调度及其他固有串行部分的比例。由于你的代码属于易并行类型,计算逻辑本身的串行占比极低,反解出的f主要对应线程创建、调度、同步等额外开销带来的串行部分,多次测试取平均能有效降低单次测试的误差,让估算结果更准确。
(b) 线程数选择与扩展测试的可行性
- 硬件层面,你的Intel Core i5支持20个硬件线程,优先建议先测试到20个线程:通常在硬件线程数范围内,加速比会随着线程数增加逐步接近上限;超过硬件线程数后,多线程会带来更频繁的上下文切换开销,加速比可能停滞甚至下降。
- 可以继续测试30、40、50个线程,这类测试能验证Amdahl定律的上限特性:当线程数
P无限增大时,加速比确实会趋近于1/fi,超线程数的测试能更直观地展现这一规律,不过此时的加速比大概率不会有明显提升,甚至可能出现下降。 - 线程数的选择需以实际性能收益为核心:如果20个线程时的加速比已经接近估算的上限
1/fi,那么20个线程就是最优选择;如果测试到15个线程时加速比仍有明显提升,就继续测试到20个线程。
内容的提问来源于stack exchange,提问作者Athanasios Margaris
相关产品推荐
相关产品推荐

