每一个,
我正在尝试使用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的未定义符号。
任何人都可以知道发生了什么事吗?
答案 0 :(得分:0)
这是FFTW 3.3中的已知问题,其中FFTW报头错误地识别它们是用gcc版本&gt; = 4.6编译的,其具有128位浮点支持。据报道,使用icc进行编译,看起来像nvcc转向编译有同样的问题。
建议的解决方法是升级到FFTW 3.3.2。