我正在尝试使用OpenCV和OpenMP并行化一些代码。
该代码独立地对100张图像执行FFT。这是在并行for循环中执行的,该循环调用其中计算FFT的函数。
由于没有数据依赖性,我希望加速与内核数(4个实数,8个逻辑数)成正比。
但是顺序版本需要2秒,而并行版本则需要1.2秒。我确实观察到内核上的工作负载在增加,几乎达到了总处理器负载的100%(相比之下,单线程情况下约为20%),但这并不能转化为更快的执行力。
下面,线程数量增加的执行时间:
1: 2092 ms
2: 1348 ms
3: 1199 ms
4: 1173 ms
5: 1183 ms
6: 1200 ms
7: 1205 ms
8: 1167 ms
9: 1182 ms
10: 1174 ms
这可能是由于OpenMP的开销引起的,还是我缺少了什么?