我正在使用 FFTW(FFT 库)的线程版本来尝试加速双 CPU 计算机上的某些代码。这是只有 1 个线程的时间输出:

131.838u 1.979s 2:13.91 99.9%

这里有 2 个线程:

166.261u 30.392s 1:52.67 174.5%

用户时间和 CPU 负载百分比似乎表明它的线程处理非常有效,但是挂钟时间(这是我真正关心的)告诉我(我认为)处理线程需要大约 28 秒的额外时间。这是描述情况的准确方式吗?如果是这样,这是否很正常,或者我可能配置不正确?谢谢你的任何光。

有帮助吗?

解决方案

我已经使用了相当多的 FFTW,并且发现,除非您要使用两个以上的处理器,否则仅使用单线程版本几乎总是一个更干净的解决方案。它更快,因为线程间通信更少,或者至少,这是我的经验。

有几点需要检查:

  1. 你是否正确配置并运用你的智慧?智慧一旦创建,将使您的转型运行得更快。如果您没有使用它,那么您应该使用它。
  2. 您是从一个线程还是从两个线程调用库?这一直是我的问题,将多个线程调用锁定到库中变得很痛苦。
  3. 你的变换有多大?您是否一开始尝试做一个小项目,只是为了看看效果如何,然后再扩大规模?
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top