看起來我的應用程序開始是(i)FFT有界的,它爲平均尺寸約500x200(寬度和高度總是均勻)的矩形做了很多二維相關。場景與往常一樣 - 執行兩次FFT(每場一次),乘以複數場,然後乘以一次iFFT。因此,CPU(Intel Q6600,帶有JTransforms libraly)根據profiler在GPU(GTX670,cuFFT庫)上大約耗時70%的FFT轉換 - 大約50%(所以,性能有所提高CUDA,但不是我想要的)。我意識到,可能是GPU沒有完全飽和(帶寬有限),但從其他情況 - 批量計算會顯着增加應用程序的複雜性。加速二維相關
問題:
- 我可以做進一步減少花費在FFT至少數 倍的時間?
- 我應該試試FFTW庫(在這一刻,我不確定它會比JTransforms獲得顯着的收益)?
- 是否有任何專用硬件可以插入PC 進行FFT轉換?
此演示文稿的幻燈片19 [快速傅立葉變換(FFT) 和圖形處理單元(GPU)](http://www.umiacs.umd.edu/~ramani/cmsc828e_gpusci/DeSpain_FFT_Presentation.pdf)可能是對你有用。我要說的是,所涉及的FFT不像FFTW那樣需要大得多的性能。此外,在[在GPU上運行FFTW vs使用CUFFT]的答案(http://stackoverflow.com/questions/16780258/running-fftw-on-gpu-vs-using-cufft),我會說,對於小尺寸調用來自不同主機線程的cuFFT可能是批處理案例的替代方案。 – JackOLantern
傑克,謝謝你的回答。實際上,有4個並行線程(每個CPU核心有一個線程),每個線程都調用cuFFT進行轉換 - 因此,看起來我已經在使用批量處理的替代方法。 – Arsen