2

我正在尝试重新编译一个使用 fftw3(版本 3.2.2)并且已经在 32 位 linux 机器上运行的程序。它可以在 64 位机器上正确编译——我链接到 64 位 fftw 库——但是程序在尝试fftw_malloc. 下面是使用的代码:

//the variables on the right side are already initialized to nonzero values
int olsLen = blockLen + tempLen - 1;
int num_chans = 23;

fftw_complex *gabor_filter, *block_signal, *ols_out;

gabor_filter = (fftw_complex *) fftw_malloc( olsLen
                                             * num_chans
                                             * sizeof(fftw_complex));

block_signal = (fftw_complex *) fftw_malloc( olsLen
                                             * num_chans
                                             * sizeof(fftw_complex));

ols_out = (fftw_complex *) fftw_malloc( olsLen
                                        * num_chans
                                        * sizeof(fftw_complex));

看起来问题应该很明显,但我现在太傻了,看不到我的错误。有任何想法吗?

编辑:它在第一个 fftw_malloc 上出现段错误。在这种情况下,它是 gabor_filter,但如果我重新排序变量,程序将在第一个 fftw_malloc 上出现段错误。

4

1 回答 1

0

看起来您需要升级到 3.3.3。我不确定为什么您的设置不起作用,但 fftw_alloc_complex() 直到 3.3-beta1 才添加:

新的便利函数 fftw_alloc_real 和 fftw_alloc_complex 将 fftw_malloc 用于没有类型转换或 sizeof 的实数和复数数组。

FFTW 3 发行说明

升级后还会出现这种情况吗?(您的原始问题或对@ArjunShankar 评论的回复)

于 2013-04-29T17:45:33.350 回答