gpt4 book ai didi

c++ - FFTW 性能变化

转载 作者:行者123 更新时间:2023-11-30 17:21:09 25 4
gpt4 key购买 nike

我在程序中使用 FFTW3 对 2D 数组(大约 3k x 3k,复杂数据类型)进行一些处理。

该计划最激烈的部分基本上是这样做的:

Break the array up into N threads, each thread has the following

loop
{
Fill one of three buffers depending on what I'm doing
FFT forward on that buffer
Do some work
FFT backward on that buffer
Do some work
}

在分析我的代码时,我开始意识到执行 FFTW 所花费的时间大约为 5 秒、8 秒或 12 秒(半秒左右,但通常是这 3 个数字中的 1 个) )取决于运行。

对于每个线程,我使用 _align_malloc(x, 16) 分配缓冲区(尽管 fftw_malloc 给了我类似的结果),然后创建我的 6 个计划(一个向前,对于每个缓冲区,仅在程序开始时使用 FFTW_PATIENT 一次。

为什么我的结果每次运行都会有这样的差异?

最佳答案

大型 FFT 性能通常主要受到数据缓存命中率和未命中惩罚的影响。一种可能性是,根据将哪些线程分配给哪些 CPU 内核、数据在内存中的 strip 化方式以及 FFT 启动的确切顺序和时间,FFT 可能会争夺处理器数据缓存线,一个线程会刷新另一个人在一些半确定性的困惑中表示。

关于c++ - FFTW 性能变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28374854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com