2
我想使用FFTW库来计算自相关。当我的输入超过〜1800mln元素时,我无法创建一个计划。例如:FFTW - 输入非常大时无法创建FFT计划
// my input
size_t size = 1024UL * 1024 * 1024 * 2;
float * in = (float *) malloc(sizeof(float) * (size + 2));
assert(in);
// insert values in input... in[0] to in[size -1]
// I want to perform an inplace FFT (this should explains the "+2" in prev malloc)
fftwf_complex * out = (fftwf_complex *) in;
// create a real to complex FFT plan
p = fftwf_plan_dft_r2c_1d(size, in, out, FFTW_ESTIMATE);
// this assertion fails...
assert(p);
一些信息:
- 64位的Linux与64GB的物理RAM + 64GB交换
- FFTW 3.3.3 --enable-浮动
- 用〜1800mln元素前面的代码工作并在计算过程中使用大约10-12GB的RAM(输入+一些FFTW温度数据)
- 我也尝试过不适用或复杂到复杂的FFT
- sizeof(size_t)== 8,sizeof(float)== 4,sizeof(fftwf_complex)== 8
我的代码出了什么问题?使用FFTW时,输入大小是否有上限?
你说得对。谢谢。有什么办法可以将FFTW用于超过INT_MAX元素的输入? – ercoppa
我在同一条船上,你找到了解决方案吗? – Valmond