题
我正在使用 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,并且发现,除非您要使用两个以上的处理器,否则仅使用单线程版本几乎总是一个更干净的解决方案。它更快,因为线程间通信更少,或者至少,这是我的经验。
有几点需要检查:
- 你是否正确配置并运用你的智慧?智慧一旦创建,将使您的转型运行得更快。如果您没有使用它,那么您应该使用它。
- 您是从一个线程还是从两个线程调用库?这一直是我的问题,将多个线程调用锁定到库中变得很痛苦。
- 你的变换有多大?您是否一开始尝试做一个小项目,只是为了看看效果如何,然后再扩大规模?
不隶属于 StackOverflow