1

我正在使用 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 秒的额外时间. 这是描述情况的准确方式吗?如果是这样,这是相当正常的,还是我可能配置不正确?谢谢你的光。

4

1 回答 1

4

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

有几件事要检查:

  1. 你是否正确地配置你的智慧,并使用它?智慧一旦被创造出来,就会让你的变换运行得更快。如果你不使用它,你应该使用它。
  2. 您是从一个线程还是从两个线程调用库?这一直是我的问题,将多个线程调用锁定到库中变得很痛苦。
  3. 你的变换有多大?你是不是先尝试一个小的,只是为了看看它是怎么回事,然后扩大规模?
于 2009-07-06T23:20:58.150 回答