gpt4 book ai didi

c++ - 对大文件执行 FFT 的最快方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 17:59:53 27 4
gpt4 key购买 nike

我正在开发一个 C++ 项目,该项目需要对大型二维栅格数据(10 到 100 GB)执行 FFT。特别是,对每一列应用 FFT 时性能非常差,其元素在内存中不连续(以数据宽度的步幅放置)。

目前,我正在这样做。由于数据不适合内存,我读取了几列,即 n 列,将其方向转换到内存中(以便文件中的列成为内存中的行)并应用使用外部库 (MKL) 的 FFT。我读取 (fread) n 个像素,移动到下一行(fseekwidth - n 一样多), 读取n 个像素,跳转到下一行,依此类推。当对列 block 完成操作 (FFT) 时,我以相同的方式将其写回文件。我写了 n 个像素,跳转到下一行,等等。这种读写文件的方式太费时间了,所以我想找一些方法来提升它。

我考虑过事先转置整个文件,但整个过程包括行优先和列优先 FFT 操作,转置不会受益。

我想听听关于这种对大数据进行列主要操作的经验或想法。任何与 FFT 或 MKL 特别相关的建议也会有所帮助。

最佳答案

为什么不同时处理转置和非转置数据?这将增加内存需求 x2,但这可能是值得的。

关于c++ - 对大文件执行 FFT 的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51739348/

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