Fortran 我可以用mpi执行本地fftw吗?
我正在使用fftw3库使用Fortran对数据执行多维(比如说二维,但也可以是三维)dft。(我有一个fortran接口,可以在fortran中正确使用fftw)。 这是关于用一些数值算法解电磁学方程。所以我的阵列代表了二维(或三维)电磁组件和空间中的电磁场。 我的数据存储在不同的MPI进程中。由于Fortran是列主程序,我的数据应该是列主程序(因此,我的区域分解只需要在最后一个维度中进行,我尝试更改) 假设我有一个2D数组(x,y),包含8个mpi任务。 fftw_mpi当前希望我的数组仅通过y方向分解)。 我希望能够执行x方向分割,以便对数据的上下部分(通过x方向)执行局部dft。Fortran 我可以用mpi执行本地fftw吗?,fortran,mpi,fftw,Fortran,Mpi,Fftw,我正在使用fftw3库使用Fortran对数据执行多维(比如说二维,但也可以是三维)dft。(我有一个fortran接口,可以在fortran中正确使用fftw)。 这是关于用一些数值算法解电磁学方程。所以我的阵列代表了二维(或三维)电磁组件和空间中的电磁场。 我的数据存储在不同的MPI进程中。由于Fortran是列主程序,我的数据应该是列主程序(因此,我的区域分解只需要在最后一个维度中进行,我尝试更改) 假设我有一个2D数组(x,y),包含8个mpi任务。 fftw_mpi当前希望我的数组仅通
我考虑将4个mpi任务组合在一起,以执行两个fftw_mpi_计划,每半个子阵列一个 您可能对实现这种2D分解的GPLv3 DFT库感兴趣。否则,如果您只想在本地数据上执行本地DFT,而不想在进程之间进行通信,那么每个procress都可以用通常的方式调用FFTW。谢谢您的回答。但是我想对每个dft执行一个具有多个mpi进程的本地dft。您是否考虑过使用类似mpi_ALLTOALL的方法转置数据,然后对本地内存中的数据应用串行FFTW?Alltoall就是为这种情况设计的。