提问人:R2197 提问时间:8/7/2023 最后编辑:toyota SupraR2197 更新时间:8/7/2023 访问量:40
对于相同名称和大小的数组,FFTW3 计划是否应该针对循环中的每次迭代而更改?
Should the FFTW3 plans change for each iteration in a loop for arrays of same names and sizes?
问:
我正在研究 FEAP8.4 (Fortran) 和库,我正在尝试对具有相同大小和名称的数组进行傅里叶变换。但这些是通过主程序的子程序调用的。主程序有一个时间循环。因此,对于每个时间步长,都会调用子程序,然后执行傅里叶变换。现在,我声明了计划和数组的所有必要变量,程序运行良好。FFTW3
FFTW3
subroutine XYZ()
implicit none
integer*8 plan_r2c_p
integer*8 N
PARAMETER(N=8)
real*8 psi(N), psiHat(N/2+1)
call dfftw_plan_dft_r2c_1d(plan_r2c_p,N,psi,psiHat,FFTW_ESTIMATE)
write(*,*) 'plan_r2c_p=',plan_r2c_p
psi 和 psiHat 只是 N 和 N/2+1 大小的数组。
当我编写这些整数“计划”的值时,它们在每次循环迭代中都会发生变化(尽管顺序相同)。但我的理解告诉我,对于相同大小和相同机器上的阵列,计划可以/应该保持不变。这是正确的吗?如果不是,它们为什么以及如何变化?FFTW3
这个问题背后的原因是,如果我单独声明它们并直接调用它们的值,而不是在子例程中调用创建计划的函数,我可能会节省一些计算工作。
答: 暂无答案
评论
dfftw_plan_dft_r2c_1d
FFTW_ESTIMATE
FFTW_MEASURE
fftw_execute
fftw_execute_dft