2011-08-17 72 views
2

我目前正在研究一個庫,它有自己的內部fft(快速傅里葉變換)庫,我想用FFTW來替換它。現在,其他開發人員對它可能導致的性能問題有點擔心。速度方面最關鍵的部分也是處理半複雜實數的1D卷積算法。 (我正在使用fftw的fftw_plan_r2r_1d)。fft算法的基準測試方法

此外,事情有點複雜,因爲內部fftw根據變換的大小使用不同的算法。

我目前的想法是生成一堆不同長度的數據集。然後讀取它們並在進行轉換之前以預定方式修改每次迭代的數據集數組。

還有什麼我應該知道的嗎?

回答

1

確保您爲每個測試用例生成FFTW的最佳計劃。患者和累贅標誌可以使計劃更快,但他們可能需要很長時間才能到達那裏。 (很明顯,你不應該把這個時間包括在你的基準測試中,因爲它是一次性的,可以緩存的)。

如果你只需要單精度輸入/輸出數據,那麼建立FFTW庫的單精度版本 - 它們可以相當比默認的雙精度版本快一點,對於大多數應用程序來說足夠準確信號處理和圖像處理。

另外,當構建FFTW庫時,確保在適合您的體系結構的情況下啓用SIMD,例如, x86上的SSE或PowerPC上的AltiVec。

1

你也可以嘗試我的混合基數fft例程,可從my homepage獲得。它包含一個基準測試程序,用於評估速度和準確度。