我知道在时间域中,两个矩阵之间的卷积运算是非常昂贵的。你可以通过将它们转换到复平面中并使用乘法(然后再回到时间域)在频域中执行它。
不过我不明白在CUDA SDK中如何执行这个操作,其中数据和内核被填充并放入两个缓冲区(m_PaddedKernel和m_PaddedData),这应该是为了加速Cooley-Tuckey方法,然后调用cufftExecC2C函数来首先将内核(为什么是C2C,而不是R2C?)转换成复平面,然后再将整个数据转换到同一平面上。
接着,定义的kernel spProcess2D_kernel开始工作,似乎对数据进行归一化,并在频域中执行数据和内核之间的乘法(如何进行两个函数的乘法?我认为他们是指组合这两个函数),然后再通过C2C变换回到时间域(我还在想为什么是C2C而不是C2R)。
不过我不明白在CUDA SDK中如何执行这个操作,其中数据和内核被填充并放入两个缓冲区(m_PaddedKernel和m_PaddedData),这应该是为了加速Cooley-Tuckey方法,然后调用cufftExecC2C函数来首先将内核(为什么是C2C,而不是R2C?)转换成复平面,然后再将整个数据转换到同一平面上。
接着,定义的kernel spProcess2D_kernel开始工作,似乎对数据进行归一化,并在频域中执行数据和内核之间的乘法(如何进行两个函数的乘法?我认为他们是指组合这两个函数),然后再通过C2C变换回到时间域(我还在想为什么是C2C而不是C2R)。
simpleCUFFT.cu
的例子吗? - Oliver Charlesworth