FFTW 3.3使用Linux上的NVCC编译错误

时间:2014-04-19 03:20:49

标签: cuda makefile fftw nvcc

每一个,

我正在尝试使用NVCC编译以下使用FFTW3.3库的代码:

#include <stdio.h>
#include <fftw3.h>

void main() {

    fftwf_complex a;
    a[0] = 1;
    a[1] = -1;

    printf("a = %f %f, Testing FFTW with NVCC\n", a[0], a[1]);

}

当我使用gcc编译时,它可以正常工作:

cc main.cpp -o main.out  -lfftw3 -lm
main.out
a = 1.000000 -1.000000, Testing FFTW with CUDA

然而,当我尝试编译与.cu文件相同的代码时,使用nvcc而不是gcc, 我得到一长串编译错误:

nvcc main.cu -o main.out -lfftw3 -lm
/usr/include/fftw3.h(370): error: identifier "__float128" is undefined
/usr/include/fftw3.h(370): error: identifier "__float128" is undefined
...

删除两个库-lfftw3 -lm将导致fftwf_complex的未定义符号。

任何人都可以知道发生了什么事吗?

1 个答案:

答案 0 :(得分:0)

这是FFTW 3.3中的已知问题,其中FFTW报头错误地识别它们是用gcc版本&gt; = 4.6编译的,其具有128位浮点支持。据报道,使用icc进行编译,看起来像nvcc转向编译有同样的问题。

建议的解决方法是升级到FFTW 3.3.2。