Phi*_*l H 10
你确定要使用FFT吗?这将是一个全数组转换,这将是昂贵的.如果您已经决定使用9x9卷积滤波器,则不需要任何FFT.
通常,在C中进行卷积的最便宜的方法是设置一个循环,将指针移到数组上,对每个点处的卷积值求和并将数据写入新数组.然后可以使用您喜欢的方法(编译器矢量化,MPI库,OpenMP等)并行化此循环.
关于边界:
4个点是因为9x9内核的最大边界重叠是主网格外的4个点.因此,2n + 1×2n + 1内核需要n个边界点.
如果你需要这个卷积非常快,和/或你的网格很大,可以考虑将它分成更小的部分,这些部分可以保存在处理器的缓存中,因此计算得更快.这也适用于您可能想要执行的任何GPU卸载(它们非常适合此类浮点计算).