roo*_*oot 8 c++ fft large-data intel-mkl
我正在开发一个需要在大型2D栅格数据(10到100 GB)上执行FFT的C++项目.特别是,当为每个列应用FFT时性能非常糟糕,每个列的元素在内存中不是连续的(放置在数据宽度的跨度上).
目前,我正在这样做.由于数据不适合存储器,我将几列(即n
列)读入存储器并调整其方向(使文件中的列成为存储器中的一行)并应用FFT与外部库(MKL) .我读取(fread
)n
像素,移动到下一行(fseek
尽可能多width - n
),读取n
像素,跳转到下一行,依此类推.当使用列块完成操作(FFT)时,我以相同的方式将其写回文件.我写n
像素,跳到下一行,依此类推.这种读写文件的方式花费了太多时间,所以我想找到一些方法来提升它.
我已经考虑过事先调换整个文件,但整个过程包括行主要和列主要的FFT操作,并且转置不会受益.
我想听听有关大数据的这种列主要操作的任何经验或想法.任何与FFT或MKL相关的建议也会有所帮助.