2
FFTW 라이브러리를 사용하여 자기 상관을 계산하고 싶습니다. 입력 내용이 ~ 1800ml 개가 넘는 경우 계획을 세울 수 없습니다. 예 :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);
일부 정보 : ~ 1800mln 요소 앞의 코드 작품과
-
64기가바이트 실제 RAM + 64 기가 바이트 스왑
- FFTW 3.3.3 --enable-플로트와
- 리눅스 64 비트
- 약 10-12GB의 RAM이 계산 중에 사용됩니다 (입력 + 일부 FFTW 임시 데이터 ???)
- FFT에서 복잡한 작업을 시도했습니다.
- sizeof (size_t) == 8, sizeof (float) == 4, sizeof (fftwf_complex) == 8
내 코드에 어떤 문제가 있습니까? FFTW를 사용할 때 입력 크기에 상한선이 있습니까?
당신 말이 맞습니다. 고맙습니다. INT_MAX 이상의 원소를 가진 입력에 FFTW를 사용할 방법이 있습니까? – ercoppa
나는 같은 보트에있어 해결책을 찾았습니까? – Valmond