在C ++中使用并行化的预期加速速度是多少(不是OpenMp,而是<thread>)

时间:2018-10-20 01:01:43

标签: c++ multithreading parallel-processing

在C ++中使用并行化的预期理论提速是多少?

例如,假设我有2个内核和4个逻辑处理器。如果我使用完全优化的并行程序来以最大容量工作的4个线程为我执行某些任务,那么我期望串行代码有多大的提速?两倍快?快四倍?

请提供您的答案的参考。

并且请不要结束这个问题,因为它太宽泛或没有包含代码示例。提供代码示例将使问题的目的无法实现,因为我正在寻找通用的理论答案,该答案可能会用于并行计算的销售中。我并不怀疑某些特定代码的特定效率。

2 个答案:

答案 0 :(得分:0)

没有具体编号。

实际上,std :: thread中没有任何东西必须阻止线性缩放。这就是现实世界。在STD:线程中使用数十个CPU内核是微不足道的。

答案 1 :(得分:0)

使用<thread>没有限制。它创建OS线程,因此可以根据您拥有的内核数进行线性扩展。

现在,关于真实内核与逻辑处理器(超线程,SMT)的问题,您可能会发现https://superuser.com/a/279803/112292很有趣。还有很多其他基准。

当SMT可以隐藏内存延迟时,它通常是好的。因此,您可以获得的SMT加速速度完全取决于您的应用程序(它计算量大还是内存量大?),唯一的找到方法是基准测试。