【发布时间】:2015-02-02 23:40:05
【问题描述】:
我正在尝试使用 OpenMP 来获得一些实时音频处理性能。我采用了一个看起来像这样的算法:
preparation
for (int I=0; I<1024; I++)
something quite demanding
finalization
未并行化时,根据系统计量器,它占用了大约 3% 的 CPU。现在,如果我并行化主循环,OMP 使用 8 个线程(4 核 i7 和超线程),主线程消耗下降到 2%,所以响应快了 33%,但系统性能表开始显示 100%(! !) 整体系统响应,所有核心均已满载。
看起来即使在等待下一个音频数据请求期间,线程也在做很多“不占用 CPU”的工作。任何想法可能是什么?响应速度提高了 33% 这一事实很好,但假设可能有许多类似的处理器同时运行,那么 100% 的 CPU 使用率是不可用的。也许 OMP 线程正在积极等待更多任务?
我正在使用 MSVC 2013。
【问题讨论】:
-
您是否可以分享有关如何并行化该循环的详细信息(代码)?
标签: openmp