单个迭代使用MS concurrency::parallel_for()的性能

Performance with MS concurrency::parallel_for() for a single iteration

本文关键字:for 性能 parallel MS concurrency 单个 迭代      更新时间:2023-10-16

我想在试图实现parallel_for的并发性时,有许多关于性能问题的问题。甚至我也注意到,在尝试使用parallel_for并行化内存访问扩展for循环时,性能下降。我正在研究的应用领域是图像处理。

令人惊讶的是,即使我创建一个由parallel_for处理的单迭代循环,也可以看到这种性能下降!!

我的意思是我有一个代码块,它在7秒内执行,没有任何并行

<code block without parallelisation>   //(Executes in 7 seconds)

如果我将上面的代码包含在parallel_for循环中,性能将增加到18秒。

parallel_for(0,1,[&](int random_var){   //(Executes in 18 seconds)
<code block without parallelisation> 
});
我完全不能理解这种行为。是什么导致了如此巨大的处理开销。在这种情况下,我认为不应该有任何内存带宽相关的问题?

如果您需要我所面临的这个特定问题的更多信息,请告诉我。

因为即使在parallel_for中进行一次迭代,它也会在线程中执行代码。所以主线程会有抢占。还有其他线程相关的簿记工作,这将花费时间。