Неутешительные результаты с OpenMP - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь распараллелить некоторый код, используя OpenCV и OpenMP.

Код выполняет БПФ на 100 изображениях независимо друг от друга.Это выполняется в параллельном цикле 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 или я что-то упустил?

...