cuff中为什么在做 ifft 时结果差N倍,每次算完ifft之后都有调用一个自己写的kernel 吧cuff算完的结果再乘以1/N(N为计算的点数),而不是直接在cufft中除以N,如果这样的话就会少调用一个kernel减少执行时间?
LZ您好:
cufft的手册中表明,该库是非归一化的,同一个序列进行fft之后直接再进行ifft,得到的各点结果是原序列各点的N(点数)倍。
以及,手册中并未解释原因。
考虑到这只是一个常数因子的问题,您可以在后续的使用该ifft结果的算法实现中轻易地加入这个因子,而不需要单独开一个kernel。
以及,著名的FFT库FFTW也是如此的,需要手工进行归一化。估计可能和实现方便性有关。
大致如此,祝您好运~